Android Studio में एक रिलीज़ लाइब्रेरी लाइब्रेरी पैकेज (aar) कैसे बनाएं (डीबग नहीं)


81

मैंने अपना एंड्रॉइड लाइब्रेरी पैकेज (aar) बनाया है और बिल्ड का परिणाम ".. \ app \ build \ outputs \ aar" फ़ोल्डर में बनाया गया है। इस फ़ोल्डर के भीतर की फाइल को "ऐप-डीबग.आयर" कहा जाता है, इसलिए मुझे लगता है कि इसे डिबग मोड में बनाया गया है, इसलिए मैं यह जानना चाहूंगा कि निर्मित रिलीज़ को कैसे उत्पन्न किया जाए, अर्थात "ऐप-रिलीज़.अअर"। मैं यह कैसे कर सकता हूँ? इसके अलावा, बिल्ड को किसी अन्य कस्टम नाम के साथ जेनरेट करना संभव है, उदाहरण के लिए, "app-release.AR" के बजाय "myCustomAppName-release.AR"।



2
क्या आपको इस समस्या का हल मिल गया है? मेरे पास एक ही मुद्दा है और इसके साथ कोई मदद नहीं मिल सकती है।
बेलुर्द

जवाबों:


120

एंड्रॉइड स्टूडियो 1.2+ में, एक पूर्ण gradleमेनू है जो सभी उपलब्ध gradleकार्यों को सूचीबद्ध करता है।

मुझे यह मेनू डिफ़ॉल्ट रूप से सक्षम IDE के दाईं ओर मिला।

डिफ़ॉल्ट रूप से आईडल के दाईं ओर ग्रेडल मेनू है ...

इच्छित कार्य पर राइट क्लिक करें और "रन" पर क्लिक करें।

उस कार्य पर राइट क्लिक करें जिसे आप "RUN" पर क्लिक करना चाहते हैं


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

1
BTW, अच्छी तरह से इस खोज किया !!! यदि Google का कोई भी व्यक्ति इसे देख रहा है, तो यह जानना अच्छा होगा कि क्या शीर्ष बिल्ड मेनू, इस 'नए' ग्रेडल साइड मेनू, और बिल्ड वेरिएंट्स व्यू आदि को लिंक / तर्कसंगत बनाने / समझाने की कोई योजना है?
मिक

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

सिर्फ एक सवाल, जब आप रिलीज़ मोड में aar फ़ाइलों को निर्यात करते हैं, तो क्या यह इसके साथ नवीनतम प्रॉपर्टी के गुणों को प्रदर्शित करेगा?
abh22ishek 10

1
हां, यदि आप assembleकार्य को चलाते हैं, तो यह आपके प्रोजेक्ट में परिभाषित किए गए किसी भी प्रोगरॉड नियम को लागू करेगा।
jiminikiz

10

मैंने AS 2.3.3 में इस मुद्दे का सामना किया और इसे फिर से जारी करने और इसे बनाने के लिए मॉड्यूल के बिल्ड वेरिएंट को बदलकर हल किया:

यहाँ छवि विवरण दर्ज करें


9

इस मुद्दे को पहले से ही निष्पादित किए जाने वाले उत्तरों के साथ नियंत्रित किया जा सकता है

./gradlew assembleRelease

या एंड्रॉयड स्टूडियो के ग्रैडल मेनू से असेंबल करें चुनें । हालाँकि, पूर्णता के लिए, एंड्रॉइड स्टूडियो 1.5.1 (और शायद पुराने संस्करण) के साथ .AR का रिलीज़ संस्करण बनाना , Android स्टूडियो में बिल्ड -> "बिल्ड एपीके " का चयन करके पूरा किया जा सकता है । यह assRelease निष्पादित करने के लिए लगता है। यदि आपके प्रोजेक्ट में केवल लाइब्रेरी प्रोजेक्ट है, तो यह किसी भी हस्ताक्षरित जानकारी के लिए नहीं पूछता है।


8

1. अपने Android के लिए स्क्रिप्ट का पालन करें {} में build.gradle टैग एक रिलीज बिल्ड बनाने के लिए:

signingConfigs {
    testConfig{
        storeFile file("X:/XXXX/yourkeystore")
        storePassword "yourKeyPassword"
        keyAlias "yourAlias"
        keyPassword "yourAliasPassword"
    }
}

buildTypes{
    release {
        signingConfig  signingConfigs.testConfig
        minifyEnabled true
        shrinkResources true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

2. आप कमांड लाइन में "ग्रेड क्लीन बिल्ड" का कमांड दें।


क्षमा करें, मैं Android विकास में नौसिखिया हूं। क्या इसकी रिलीज़ आउटपुट प्राप्त करने के लिए एंड्रॉइड लाइब्रेरी पैकेज (आरएआर) पर हस्ताक्षर करना सख्ती से आवश्यक है? मैं अपना स्वयं का कुंजी स्टोर कैसे बना सकता हूं?
राल्फ

मेरी लाइब्रेरी परियोजना में, \ build \ outputs \ aar पहले से ही उत्पन्न होता है: XX-debug.AR, XX-release.AR। और आपने एक .arr फ़ाइल को nedd क्यों किया? यदि आप एक पुस्तकालय का उपयोग करना चाहते हैं, तो आप निम्नलिखित स्क्रिप्ट को बिल्ड में जोड़ें ।ग्रेड: निर्भरताएँ {संकलन प्रोजेक्ट (': YourLibraryProject')}
कोडज़जैक्स

1
मैं भविष्य में अपने Android ऐप्स के भीतर इस लाइब्रेरी का उपयोग करना चाहता हूं। यह एक लाइब्रेरी है और मैं इसकी रिलीज़ आउटपुट प्राप्त करना चाहता हूं, लेकिन मुझे समझ नहीं आता कि मैं केवल XX-debug.aar को क्यों प्राप्त कर रहा हूं और XX-release.AR को अपने लाइब्रेरी के "\ app \ build \ outputs \ aar" फ़ोल्डर में नहीं प्राप्त कर रहा हूं।
राल्फ

5
टर्मिनल विंडो से, प्रोजेक्ट फ़ोल्डर में एक बार, मैंने निम्नलिखित कमांड निष्पादित किया है: "./gradlew clean" और "./gradlew aR" और अब "XX-release.AR" को ".. \ app \ build \" में जनरेट किया गया है। आउटपुट \ "aar” फ़ोल्डर। मैं एंड्रॉइड स्टूडियो से कैसे कर सकता हूं? वह यह है कि Android स्टूडियो को रिलीज़ को इकट्ठा करने के लिए कहा जाए।
राल्फ

1
आम तौर पर आपको केवल एंड्रॉइड स्टूडियो में प्रोजेक्ट बनाने की आवश्यकता होती है, लेकिन मेरे पास कुछ ऐप्स में एक ही मुद्दा है। इसलिए इसे टर्मिनल में करना ही एकमात्र उपाय है।
कॉडीमैस

8

एंड्रॉइड स्टूडियो 3.0 के साथ aar फ़ाइल उत्पन्न करना आसान है। ग्रैडल विकल्प से, चित्र में दिखाए अनुसार विकल्प के लिए चबाएं यहाँ छवि विवरण दर्ज करें


मेरे प्रोजेक्ट में मैं असेंबल रिलीज़ विकल्प नहीं देख पा रहा हूँ।
ज्ञान स्वरूप अवस्थी

जब मैं एक परियोजना में lib .aar मेरी रिहाई आयात ऐसा एक त्रुटि वृद्धि "AAPT: त्रुटि: विशेषता ... नहीं मिला" @leeCoder
शोमू

4

आप कमांड लाइन का उपयोग कर सकते हैं

./gradlew <moduleName>:assemble

./gradlew <moduleName>:assemble<build_variant>
//for example
./gradlew <moduleName>:assembleRelease

//or
./gradlew <moduleName>:bundle<build_variant>Aar
//for example
./gradlew <moduleName>:bundleReleaseAar
//output is located
<project_path>/build/outputs/aar/<module_name>-<build_variant>.aar

वैकल्पिक रूप से आप AndroidStudio UI का उपयोग कर सकते हैं

View -> Tool Windows -> Gradle
<module_name> -> Tasks -> build or others -> assembleRelease


क्या बीच का अंतर है ./gradlew <moduleName>:assemble<build_variant>और ./gradlew <moduleName>:bundle<build_variant>Aar?
'10

3

एक Android पुस्तकालय के रूप में अपनी परियोजना सेट अप
में build.gradleफ़ाइल: plugin: 'com.android.library'
आप उत्पादन देख सकते हैं में: build/outputs/aar/[your module].
इसके अलावा इस देखना लिंक


3

फिर भी एक और 2 भाग प्रश्न जहां कोई भी दूसरे भाग का उत्तर देता है ...

भावी पीढ़ियों के लिए, यहां सरल उत्तर दिए गए हैं:

भाग 1 केवल रिलीज कैसे करें *release.aar?

एंड्रॉइड स्टूडियो में चलाएं terminal(या आपके प्रोजेक्ट फ़ोल्डर में कोई भी टर्मिनल):

./gradlew assembleRelease

ऐसे कार्य के लिए आपको साइन इन करने की आवश्यकता नहीं है।

भाग 2 आउटपुट लाइब्रेरी का नाम कैसे बदलें AnotherLibraryName-release.aar?

अपने मॉड्यूल में जोड़ें gradle.build:

android{
    project.archivesBaseName = "AnotherLibraryName"
}

0

मेरे लिए, बस लाइब्रेरी में एक लेआउट बग फिक्स करना जो संकलन त्रुटि उत्पन्न नहीं करता था (एंड्रॉइड प्लगइन गायब) ने इसे ठीक किया और फ़ोल्डर में <lib>-release.aarदिखाई दिया ।<lib>-debug.aarbuild/outputs/aar/

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.