2015-02-19 11 views
19

में बाहरी प्रोजेक्ट से लिंक मॉड्यूल मैं अपने सभी प्रोजेक्ट को एक्लिप्स से एंड्रॉइड स्टूडियो (1.0.2, बस इसे डाउनलोड करें) में माइग्रेट कर रहा हूं लेकिन बाहरी मॉड्यूल के साथ समस्या है।एंड्रॉइड स्टूडियो

ग्रहण में, मैं इस

enter image description here

सभी गतिविधियों, टुकड़े, मॉडल और वर्गों की तरह कार्यक्षेत्र 'कोर' प्रोजेक्ट में हैं। कोर प्रोजेक्ट को कुछ पुस्तकालयों को काम करने की आवश्यकता होती है (जैसे Google Play Service, Facebook या Twitter) जबकि ऐप 1, ऐप 2, ऐप 3 और इसी तरह लेबल ऐप के दौरान हैं। उन ऐप में आइकन, कॉन्फ़िगरेशन फाइलों, लोडिंग इमेज इत्यादि को छोड़कर कुछ भी शामिल नहीं है।

मैं एक नई परियोजना के रूप में एंड्रॉइड स्टूडियो को "कोर" ऐप और इसकी सभी निर्भरताओं को आयात करने का प्रबंधन करता हूं। जब मैं कोर का निर्माण, मैं 0 त्रुटियों और 0 चेतावनी

enter image description here

फिर, मैं इस सवाल

से चयनित जवाब का पालन करते हुए नई परियोजना कॉल "टेस्ट" और लिंक यह "कोर" परियोजना बनाने मिला टेस्ट परियोजना के

How to share a single library source across multiple projects

setting.gradle

include ':Test' 
include '..:..:AppyCore:Core' 

टेस्ट परियोजना के build.gradle

dependencies { 
    compile 'com.android.support:support-v4:+' 
    compile project('..:..:AppyCore:Core') 
} 

लेकिन, जब मैं इस परियोजना के पुनर्निर्माण, मुझे यह त्रुटि

Error:(41, 0) Project with path ':SlidingMenu' could not be found in project '..:..:AppyCore:Core' 

जब मैं दोगुना त्रुटि संदेश क्लिक करें, आईडीई मुझे build.gradle दिखाने मिला कोर प्रोजेक्ट के और फ़ाइल के निर्भरता भाग को

enter image description here

ऐसा लगता है जब मैं "टेस्ट" प्रोजेक्ट बनाने की कोशिश करता हूं, तो यह "कोर" प्रोजेक्ट की सभी निर्भरताओं का पता नहीं लगा सकता है। क्या आप जानते हैं कि इसे कैसे ठीक किया जाए?

नोट

  • मुझे विश्वास है कि "कोर" परियोजना सेटअप पहले से ही सही, क्योंकि मैं एक ही रूट निर्देशिका, एक ही परियोजना में "टेस्ट 2" एप्लिकेशन और आयात "कोर" परियोजना बनाने किया है। यह किसी भी मुद्दे के बिना काम कर रहा था। लेकिन यह एक विकल्प नहीं है क्योंकि मेरे पास वास्तव में लगभग 20+ सफेद लेबल ऐप है। यदि उनमें से प्रत्येक ऐप के पास "कोर" है तो इसे एक-एक करके अपडेट करना बहुत कठिन होगा।
  • मुझे लगता है कि निर्देशिका है कि मैं शामिल सही है, अन्यथा, मैं बजाय इस त्रुटि

    "त्रुटि मिल जाएगा: नाम 'डिफ़ॉल्ट' नहीं मिला साथ विन्यास।"

(मैं जानबूझकर डाल गलत निर्देशिका द्वारा की कोशिश की और यह एक ही त्रुटि मिली)

+2

वाह ... मुझे आपका प्रश्न पसंद आया। इसे एक उदाहरण प्रश्न के रूप में संदर्भित किया जाना चाहिए। अच्छा काम! –

+2

मैं आपकी ** सेटिंग्स.gradle ** फ़ाइल में 'project :ir 'का उपयोग करने की सिफारिश करता हूं, बजाय .. .. .. .. वाक्यविन्यास। इससे निर्भरता को उलझाने में मदद मिल सकती है। Http://stackoverflow.com/questions/24658422/android-studio-0-8-1- क्रिएटिंग- मॉड्यूल-without-copying-files/24659324#24659324 –

+0

मुझे पता है कि यह प्रश्न थोड़ा पुराना है, लेकिन यदि आप अभी भी इसे समझ नहीं लिया है, यह अच्छा होगा अगर आप अपनी अलग बिल्ड.ग्रैडल फाइलें और सेटिंग्स.ग्रैडल फाइल पोस्ट कर सकें। –

उत्तर

5

आप प्रत्येक अनुप्रयोग संस्करण के लिए एक नई परियोजना बनाने के लिए, और उन्हें एक आम codebase से जोड़ने के लिए कोशिश कर रहे हैं। इस परिदृश्य में , ग्रैडल की "संस्करण" सुविधा का उपयोग करना बहुत बेहतर है। इसके साथ, प्रत्येक ऐप कोर ऐप का एक "संस्करण" है, जिसमें इसका अपना पैकेज नाम, इसकी अपनी संसाधन फाइलें और यहां तक ​​कि इसकी अपनी फाइलें भी हैं।

ऐसा करने के लिए आपको:

  1. अपने मूल अनुप्रयोग के लिए build.gradle संशोधित:

    android { 
        productFlavors { 
        // default BuildConfig variables 
        all { 
        } 
        app_1 { 
         applicationId 'com.yourcompany.app_1' //package name 
         def variantName='app_1' //name of the variant 
        } 
        app_2 { 
         applicationId 'com.yourcompany.app_2' //package name 
         def variantName='app_2' //name of the variant 
        } 
        } 
    } 
    
  2. बनाएं app_1, app_2 ... फ़ोल्डरों /src, प्रत्येक में अपनी ही AndroidManifest साथ app_x। xml, /src और /res फ़ोल्डर्स।

  3. बदलें एंड्रॉयड स्टूडियो में वर्तमान संस्करण: enter image description here

आप Android Tools Project Site पर प्रकार के निर्माण पर अधिक जानकारी पा सकते हैं।

मैं व्यक्तिगत रूप से इस दृष्टिकोण के लिए झुका सकता हूं, क्योंकि मैंने ऐसा किया है कि एक एंड्रॉइड स्टूडियो प्रोजेक्ट दर्जनों संस्करणों के निर्माण का समर्थन करता है, प्रत्येक के अपने अद्वितीय पैकेज नाम, संसाधन फाइलें और कस्टम कोड जो कुछ महत्वपूर्ण रूप से संशोधित करता है आधार ऐप का पहलू, सभी एक सामान्य आधार कोड साझा करते समय।

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