2016-04-22 8 views
5

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

compile "com.example.konstantin.mylibrary:mylibrary:${mylibraryVersion}"

अब मैं अपने द्विआधारी विरूपण साक्ष्य स्रोत कोड द्वारा प्रतिस्थापित किया जा करना चाहते हैं, तो मैं जड़ build.gradle फ़ाइल में निम्न कोड जोड़ें:

configurations.all { 
resolutionStrategy { 
    dependencySubstitution { 
     substitute module("com.example.konstantin.mylibrary:mylibrary:${mylibraryVersion}") with project(':mylibrary') 
    } 
} 

हालांकि जब मैं ग्रेडल बनाने की कोशिश कर रहा हूं तब भी बाइनरी आर्टिफैक्ट ले रहा है। यहाँ क्या गलत है?

here is the full source code

भी दिलचस्प है कि अगर मैं, allprojects अनुभाग के लिए या आवेदन मॉड्यूल build.gradle फाइल करने के लिए निर्भरता प्रतिस्थापन कोड के लिए कदम Gradle से निम्न संदेश के साथ निर्माण करने के लिए विफल रहता है:

Error:Module version MyApplication:app:unspecified, configuration '_debugCompile' declares a dependency on configuration 'default' which is not declared in the module descriptor for MyApplication:mylibrary:unspecified 
+1

ऐसा लगता है [यह एंड्रॉइड प्लगइन बग] (https://code.google.com/p/android/issues/detail?id=189483) समस्या से संबंधित हो सकता है – akd005

उत्तर

1
अंत में

मैं एक कामकाजी समाधान मिला है। किसी भी तरह से यह काम करता है अगर मैं इसे दूसरे तरीके से करता हूं। परियोजना मॉड्यूल

substitute module("com.example.konstantin.mylibrary:mylibrary:${mylibraryVersion}") with project(':mylibrary') 

साथ स्थानापन्न द्विआधारी के बजाय मैं द्विआधारी के साथ इस परियोजना मॉड्यूल स्थानापन्न कर सकते हैं:

substitute project(':mylibrary') with module("com.example.konstantin.mylibrary:mylibrary:${mylibraryVersion}") 

और जादू काम करता है की तुलना में। पूर्ण कार्य कोड separate branch of an example repo

हालांकि यह एक आदर्श समाधान नहीं है, क्योंकि मुझे हमेशा परियोजना मॉड्यूल को सेटिंग्स.ग्रैडल से लिंक करना होता है और इसे जांचने के बिना निर्माण नहीं कर सकता है।