2013-11-01 10 views
12

मैं अपना मुफ्त ऐप और भुगतान ऐप मर्ज करने की कोशिश कर रहा हूं। एंड्रॉइड की नई बिल्ड सिस्टम के उत्पादफ्लोर्स मेरी समस्या के लिए एकदम सही फिट प्रतीत होते हैं।ग्रैडल एंड्रॉइड प्लगइन विभिन्न उत्पाद स्वाद के लिए आर फाइलें उत्पन्न करता है?

मेरे पास फ्रीएप स्वाद बहुत अच्छा काम कर रहा है, हालांकि जब मैं पेडएप स्वाद का निर्माण करता हूं तो आर फाइल जो उत्पन्न हो रही है वह एक पैकेज संरचना में है जिसे फ्री ऐप में परिभाषित किया गया है।

यहाँ gradle.build फ़ाइल से से एक टुकड़ा है:

productFlavors { 
freeApp { 
    versionCode 201308020 
    versionName "2.0.13_free" 
    packageName "com.flyingspheres.android" 
} 
paidApp { 
    versionCode 201305110 
    versionName "2.0.10_paid" 
    packageName "com.flyingspheres.android.inventory" 
} 

मैं हमेशा से यह मानना ​​आर फ़ाइल के स्थान प्रकट में पैकेज नाम से परिभाषित किया गया है। मैंने सत्यापित किया कि मैनिफेस्ट फ़ाइल सही ढंग से उत्पन्न हो रही है।

समस्या यह है कि दोनों स्वादों के लिए आर फ़ाइल एक ही स्थान पर स्थित है। ग्रैडल मांग करता है कि एक मेनिफेस्ट मुख्य स्रोत पेड़ के भीतर रहता है, इसलिए मुख्य स्रोत पेड़ में मैनिफेस्ट का जो भी संस्करण मैंने रखा है, जहां आरजेजा फ़ाइल उत्पन्न की जाएगी।

मान लीजिए कि मुझे प्रत्येक स्वाद के लिए सही स्थान में उत्पन्न करने के लिए आर फाइलें मिलती हैं; आर फ़ाइल के लिए आयात विवरण कैसे प्रबंधित किए जाने चाहिए, ताकि प्रत्येक स्वाद सही आर फ़ाइल का संदर्भ दे? - मुख्य पेड़ पूरी तरह से उत्पाद के ऊपर लिख चाहिए में प्रकट प्रलेखन के अनुसार

enter image description here

प्रत्येक AndroidManifest.xml फ़ाइल एक पूर्ण और पूर्ण प्रकट है:

यहाँ मेरी परियोजना संरचना के एक स्क्रीन शॉट है स्वाद संस्करण। हालांकि, यह स्पष्ट रूप से नहीं हो रहा है, क्योंकि जिस गतिविधि को लॉन्च किया जाना चाहिए और सामग्री प्रदाताओं को ओवरराइट नहीं किया जा रहा है।

जो भी मैं गलत कर रहा हूं उसके लिए कोई अंतर्दृष्टि सबसे सराहना की जाएगी। यह एक बहुत ही सामान्य स्थिति होनी चाहिए कि पैकेज नाम को ओवरराइड करने वाला कोई भी व्यक्ति इसमें भाग लेगा। मैं इसे लगभग एक हफ्ते तक समझने की कोशिश कर रहा हूं और खुद को वहां नहीं लग रहा है।

धन्यवाद,

-Aaron

उत्तर

10

एंड्रॉयड के Gradle प्लगइन 0.7.3 के तहत, उत्पन्न R.java फ़ाइल केवलsrc/main के पैकेज का नाम के लिए बनाया है। इसमें विभिन्न स्वादों के लिए सभी संसाधन शामिल हैं, यह उन्हें केवल एक उत्पन्न R.java फ़ाइल में डालता है। मैंने इसे an IO talk से सुना है।

src/main/AndroidManifest.xml में आपका पैकेज नाम क्या है? मेरा अनुमान है कि यह है com.flyingspheres.android

अपने वर्ग है जो प्रोग्राम के अपने src/main के पैकेज नाम का उपयोग कर संसाधनों का उपयोग करने की जरूरत हैR आयात करने का प्रयास करें है।

उदा।

import com.flyingspheres.android.R; 
+3

यह सही उत्तर है। स्वीकार किया जाना चाहिए। – osayilgan

संबंधित मुद्दे