2015-04-01 24 views
14

के साथ कॉर्डोवा प्रोजेक्ट का निर्माण करते समय जावा संस्करण ओवरराइड करें मैं एक बिल्ड टूल के रूप में ग्रेडल का उपयोग करके कॉर्डोवा प्रोजेक्ट बनाने की कोशिश कर रहा हूं। कॉर्डोवा प्रोजेक्ट में मेरे पास अपनी प्लगइन है जिसके लिए जावा 1.7 की आवश्यकता है।ग्रेडल

निर्माण में। कॉर्डोवा के साथ आता है। जावा संस्करण 1.6 संस्करण है। build.gradle:

android { 
    compileOptions { 
     sourceCompatibility JavaVersion.VERSION_1_6 
     targetCompatibility JavaVersion.VERSION_1_6 
    } 
} 

build.gradle एक बहुत बड़ी चेतावनी है कि यह एक उत्पन्न फ़ाइल है जिसे संपादित नहीं किया जाना चाहिए, Gradle निर्माण कदम अनुकूलित करने के लिए तरीका है कहते हैं के साथ आता है - के रूप में मैं समझता हूँ - करने के लिए एक बिल्ड-extras.gradle फ़ाइल बनाएँ।

मैं एक निर्माण extras.gradle फ़ाइल बनाया है और निम्नलिखित की कोशिश की है:

android { 
    compileOptions { 
     sourceCompatibility JavaVersion.VERSION_1_7 
     targetCompatibility JavaVersion.VERSION_1_7 
    } 
} 

लेकिन यह काम करने के लिए प्रतीत नहीं होता। जब भी मैं अपनी परियोजना का निर्माण करता हूं तब भी मुझे एक त्रुटि मिलती है।

त्रुटि:

> strings in switch are not supported in -source 1.6 
>   switch (action) { 
>    ^ (use -source 7 or higher to enable strings in switch) 

किसी की मदद कृपया मुझे यह पता लगाने कैसे करने के लिए सेटअप Gradle इस काम करने के लिए कर सकते हैं?

उत्तर

14

मैं एक ही समस्या को हल करने की कोशिश कर रहा हूं, और यहां एक उत्तर खोजने की उम्मीद कर रहा हूं! वैसे भी, हालांकि कोई जवाब नहीं था, build-extras.gradle का आपका उल्लेख मुझे सही रास्ते पर रखता है, और निम्नलिखित अब मेरे लिए काम करता है ... तो धन्यवाद।

शुरू करने के लिए मैंने सोचा कि मैं आपके जैसा ही वाक्यविन्यास का उपयोग करने की कोशिश कर सकता हूं, ताकि गलत काम करने का प्रयास किया जा सके। जहां तक ​​मैं यह कह सकता हूं कि यह विफल रहता है क्योंकि build-extras.gradle फ़ाइल को जादुई रूप से build.gradle में विलय नहीं किया गया है, लेकिन इसके बजाय ग्राडल apply from दृष्टिकोण का उपयोग करके लोड और निष्पादित किया गया है। और चूंकि यह android बंद होने से पहले होता है, यह प्रक्रिया में बहुत जल्दी है, और android मान हमारे 'अतिरिक्त' मानों को ओवरराइड करते हैं।

(मैं और अधिक तल्लीन करने के लिए की तुलना में मैं Gradle या ग्रूवी में करने की जरूरत है, तो क्षमा याचना करता है, तो मेरी शब्दावली सटीक नहीं है समय नहीं है ...)

हालांकि, अगर मैं इस्तेमाल किया मैं यह काम करने के लिए मिल सकता है postBuildExtras() विधि।

आप build.gradle फ़ाइल कि कॉर्डोबा से उत्पन्न होता है के तल पर देखें, तो आप देखेंगे कि अगर इस तरह के एक तरीका है (अर्थात, postBuildExtras) ext पर मौजूद है, तो यह कहा जाता हो जाता है। चूंकि यह कॉन्फ़िगरेशन स्क्रिप्ट में आखिरी बात है, इसलिए मुझे लगता है कि इस विधि का बिंदु यह है कि हम इसे किसी भी ओवरराइड करने के लिए उपयोग कर सकते हैं।

इसलिए मैं मेरी build-extras.gradle के रूप में इस के साथ समाप्त हो गया:

ext.postBuildExtras = { 
    android { 
     compileOptions { 
      sourceCompatibility JavaVersion.VERSION_1_7 
      targetCompatibility JavaVersion.VERSION_1_7 
     } 
    } 
} 

मैं वास्तव में था यह काफी मेरी जांच में जल्दी काम कर रहा लेकिन जब से मुझे लगता है कि जब हम कई build-extras.gradle की कोशिश इस तकनीक असफल हो जायेगी रखा अन्य तरीकों की कोशिश कर रहा फाइलें - जो कि, हम दोनों विशेष रूप से कॉर्डोवा प्लगइन्स के बारे में बात कर रहे हैं, बहुत संभावना है।

एक तकनीक है कि प्लग इन, plugin.xml में <framework> तत्व का उपयोग करना है, जिसके लिए आशाजनक दिखता है, लेकिन इस दृष्टिकोण के साथ मैं प्लगइन-विशिष्ट मॉड्यूल लोड करने के लिए कभी नहीं मिल सकता है/आयात/जो कुछ भी नहीं है।जब मैं प्लगइन # 2 पर जाता हूं, तो मैं इसे और अधिक देखूंगा, लेकिन अब के लिए ऊपर दी गई तकनीक मुझे एक बड़ी छलांग लगाती है जहां मैं आज सुबह था, इसलिए build-extras.gradle सुराग के लिए फिर से धन्यवाद। ;)

6

मार्क के जवाब के संबंध में, मुझे plugin.xml फ़ाइल में जोड़ने का समाधान मिला। तो इसे प्लेटफ़ॉर्म फ़ोल्डर में सही जगह पर स्वचालित रूप से जोड़ा जाएगा।

<source-file src="src/android/lib/build-extras.gradle" target-dir="src/.." /> 
संबंधित मुद्दे