2015-01-22 7 views
18

के विभिन्न प्रकार के उपयोग का निर्माण मैं एक कार्यक्षेत्र कई अलग अलग क्षुधा युक्त और है कि मैं ग्रहण से एंड्रॉयड स्टूडियो करने के लिए और चींटी से Gradle कन्वर्ट करने के लिए देख रहा हूँ एक आम पुस्तकालय परियोजना है। वर्तमान में, हमारी चींटी स्क्रिप्ट में हम बिल्डिंग से पहले हमारे कुछ वर्गों में टेक्स्ट को प्रतिस्थापित करते हैं, इस पर निर्भर करता है कि बिल्ड डीबग प्रयोजनों, क्यूए, बीटा/ग्राहक स्वीकृति परीक्षण या Google Play को रिलीज़ करने के लिए है या नहीं।एंड्रॉयड स्टूडियो में Android एप्लिकेशन मॉड्यूल में लाइब्रेरी मॉड्यूल और Gradle

मैं ग्रैडल में बिल्ड वैरिएंट सिस्टम का लाभ लेना चाहता हूं और बिल्ड स्क्रिप्ट को अपने वर्गों में टेक्स्ट को प्रतिस्थापित करने से रोकने के लिए मूल्य संसाधन (बूलियन, स्ट्रिंग्स इत्यादि) का उपयोग करना चाहता हूं।

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

वहाँ किसी भी तरह से है कि मैं पुस्तकालय मॉड्यूल की इसी निर्माण प्रकार का उपयोग करने के लिए एप्लिकेशन मॉड्यूल के विभिन्न प्रकार के निर्माण प्राप्त कर सकते हैं है?

यह डिबग संस्करण का उपयोग कर के रूप में दोनों मॉड्यूल दिखा बिल्ड प्रकार उपकरण खिड़की के साथ एंड्रॉयड स्टूडियो से चलाया गया था। छवि को ऐप और लाइब्रेरी दोनों के लिए डीबग पढ़ना चाहिए।

debug debug

उत्तर

4

खैर, Gradle एंड्रॉयड प्लगइन बस निर्भर पुस्तकालय मॉड्यूल की डिबग version निर्माण नहीं कर सकते। यह एक well-known है, पुराना मुद्दा और यह अभी तक हल नहीं हुआ है।
आप चर्चा की गई चर्चा से कुछ कामकाज का उपयोग करने का प्रयास कर सकते हैं, विशेष रूप से पोस्ट # 35 और # 38 पर एक नज़र डालें।

+0

# 35 समाधान @Aleksander इलिक के जवाब में बताया गया है। – cren90

26

प्रलेखन Gradle Plugin User Guide में Library Publication अध्याय से लिया।

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

वैसे भी, इस समस्या के समाधान हैं।

सभी प्रकाशित करें - यह अपने पुस्तकालय परियोजना के लिए निम्न पंक्ति जोड़कर सभी अपने पुस्तकालय परियोजना के वेरिएंट निर्माण प्रकाशित करने के लिए संभव है:

android { 
    publishNonDefault true 
} 

तो फिर तुम इस प्रकार एप्लिकेशन परियोजना में अपनी निर्भरता को संशोधित करना चाहिए:

dependencies { 
    releaseCompile project(path: ':yourLibrary', configuration: 'release') 
    debugCompile project(path: ':yourLibrary', configuration: 'debug') 

    // This is also possible 
    customCompile project(path: ':yourLibrary', configuration: 'custom') 
} 

डिफ़ॉल्ट बदलें - आप अपने पुस्तकालय proje के लिए निम्न पंक्ति जोड़कर बदल सकते हैं जो varaint अपनी लाइब्रेरी से प्रकाशित होता है सीटी:

android { 
    defaultPublishConfig "debug" 
} 

और इस मामले तो आप ऐप के निर्भरता को बदलने के लिए है क्योंकि यह हमेशा debug निर्माण संस्करण मिल जाएगा की जरूरत नहीं है में।

+0

यह वर्तमान में सबसे अच्छा कामकाज है। Thx बहुत ज्यादा! – JohnWatsonDev

+0

यह काम-आस-पास है जिसका उपयोग हम समाप्त कर चुके हैं। @ आगा के जवाब में लिंक में इसका उल्लेख है। – cren90

+0

बहुत साफ, मैं इसे एक वर्कअराउंड नहीं कहूंगा – Benoit

1

बस कड़ी https://issuetracker.google.com/issues/36967265

//in library Project build.gradle (lib): 
apply plugin: 'com.android.library' 

android { 
    publishNonDefault true 
... 
    buildTypes { 
     release { 
... 
     } 
     debug { 
... 
     } 
    } 
} 
dependencies { 
... 
} 


//in main Project build.gradle (application) 
apply plugin: 'com.android.application' 

android { 
... 
    buildTypes { 
     release { 
... 
     } 
     debug { 
... 
     } 
    } 
} 
dependencies { 
    debugCompile project(path: ':libName', configuration: "debug") 
    releaseCompile project(path: ':libName', configuration: "release") 
... 
} 
संबंधित मुद्दे