लाइब्रेरी के रूप में एंड्रॉइड प्रोजेक्ट को कैसे आयात करें और इसे एपीके के रूप में संकलित न करें (एंड्रॉइड स्टूडियो 1.0)


120

मैंने एक परियोजना (प्रोजलिब) को एक अन्य परियोजना (प्रोजाप) के लिए निर्भरता के रूप में आयात करने की कोशिश की।

प्रोजापक ग्रेडेल में यह है:

dependencies {
    compile project(':libs:NewsAPI')
    compile project(':projLib')
}

लेकिन जब मैं सिंक को सिंक करता हूं तो यह त्रुटि देता है:

त्रुटि: निर्भरता Android_2015: projLib: परियोजना पर अनिर्दिष्ट projapk एक एपीके संग्रह के लिए हल होता है जो संकलन निर्भरता के रूप में समर्थित नहीं है। फ़ाइल: /User/myname/Documents/Development/Android_2015/libs/projAPK/build/outputs/apk/projLib-release-unsigned-apkk

इसलिए मुझे लगता है कि इसके दो समाधान हैं:

  1. किसी भी तरह से लगता है कि projLib एक पुस्तकालय है जिसे APK के लिए संकलित नहीं किया जाना चाहिए
  2. किसी भी तरह से ढाल स्पष्ट रूप से projLib संकलन नहीं है

समस्या यह है कि मैं यह नहीं कर पाया कि इसमें से किसी को कैसे करना है। बहुत बढ़िया होगा अगर आप लोग मदद कर सकते हैं :)

जवाबों:


330

में projLib के build.gradle फ़ाइल, तो आप इस तरह के एक बयान देखेंगे:

apply plugin: 'com.android.application'

जो ग्रेड को एपीके जनरेट करते हुए एक एप्लिकेशन के रूप में बनाने के लिए कहता है। यदि आप इसे इसमें बदलते हैं:

apply plugin: 'com.android.library'

यह एक पुस्तकालय के रूप में निर्माण करेगा, एक एएआर पैदा करेगा, और इसे काम करना चाहिए।

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

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


धन्यवाद सर, यह काम किया। क्या कोई रीडिंग / डॉक्यूमेंटेशन है जो आप मुझे इन प्लगइन चीजों के बारे में सुझा सकते हैं?
विक झोउ

13
मैंने कोशिश की और एक नई त्रुटि मिली: Error:Library projects cannot set applicationId. applicationId is set to 'com.bulletnoid.android.widget.StaggeredGridViewDemo' in default config.StaggeredGridViewDemo एक पैकेज है पुस्तकालय में मैंने एक मॉड्यूल के रूप में आयात करने की कोशिश की।
Azurespot

13
मैंने बस डिफॉल्टकॉन्ग {} से एप्लिकेशन आईडी लाइन को हटा दिया और यह काम कर गया।
इरीचर्लो

इसके अलावा आपको 'एप्लीकेशन: रिप्लेस = "एंड्रॉइड: आइकन" को <एप्लीकेशन ...> ... को
जोड़ना होगा

24

मॉड्यूल ग्रेड फ़ाइल में -

बदलें apply plugin: 'com.android.application' के साथapply plugin: 'com.android.library'

फिर निकाल दें applicationId "xxx.xxx.xxxx"

साफ और निर्माण


सभी मॉड्यूल ग्रेड फ़ाइल में कर रहा है
व्लाद

1

बस इन पंक्तियों को लाइब्रेरी gradleफ़ाइल में जोड़ें और अन्य अनुभागों को हटा दें

apply plugin: 'com.android.library'

android {
   compileSdkVersion 23
   buildToolsVersion '23.0.2'
}

dependencies {
   compile fileTree(dir: 'libs', include: ['*.jar'])
   compile 'com.squareup.picasso:picasso:2.4.0'
   compile 'com.google.code.gson:gson:2.2.4'
   compile 'com.android.support:appcompat-v7:23.1.1'
   compile 'com.android.support:gridlayout-v7:23.1.1'
  ,...
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.