Android स्टूडियो में aar फ़ाइल बनाएं


173

मैं एंड्रॉइड स्टूडियो में अपनी लाइब्रेरी के लिए अनार फ़ाइल बनाना चाहता हूं, मैं एक जार विकल्प के साथ गया होगा, लेकिन मेरी लाइब्रेरी में संसाधन हैं।

किसी भी विचार कैसे एक पुस्तकालय से अनार फ़ाइल बनाने के लिए?

जवाबों:


225

यदि आपकी लाइब्रेरी को एंड्रॉइड लाइब्रेरी के रूप में सेट किया गया है (अर्थात यह apply plugin: 'com.android.library'अपनी बिल्ड.ग्रेड फ़ाइल में स्टेटमेंट का उपयोग करता है ), यह निर्मित होने पर एक .AR का आउटपुट देगा। यह बिल्ड / आउटपुट / aar / में दिखाई देगा आपके मॉड्यूल की डायरेक्टरी में डायरेक्टरी में दिखाई देगा।

नई Android लाइब्रेरी बनाने के लिए आप फ़ाइल> न्यू मॉड्यूल में "एंड्रॉइड लाइब्रेरी" प्रकार चुन सकते हैं।


3
संस्करण वास्तव में एएआर के लिए बाहरी है। आप आमतौर पर एक मावेन पोम फ़ाइल सेट करेंगे जिसमें संस्करण जानकारी है।
स्कॉट बार्टा

1
मेरे पास पुस्तकालय के lib फ़ोल्डर में aar फ़ाइल है, इसलिए यह बिल्ड / आउटपुट / aar / सीधे
गणेश जोगम

4
aar फ़ाइल ऐप / बिल्ड / आउटपुट / aar / में दिखाई दी और प्रोजेक्ट स्तर पर / बिल्ड / फ़ोल्डर में नहीं! अगर आपको यह नहीं लगता है ...
peresisUser

29
ध्यान दें कि aarमुझे उत्पन्न करने के लिए , मुझे Build > Rebuild Projectएंड्रॉइड स्टूडियो में एक करना था । बस रनिंग, डिबगिंग या बिल्डिंग एपीके aarमेरे लिए उत्पन्न नहीं हुआ ।
एडम जॉन्स

8
@AdamJohns ./gradlew moduleName:assembleReleaseटर्मिनल टैब में होने का तेज तरीका
समीर जे

159

स्थानीय बिल्ड से निर्यात .AR फ़ाइल पुनर्प्राप्त करें

यदि आपके पास एक एंड्रॉइड लाइब्रेरी प्रोजेक्ट के रूप में परिभाषित एक मॉड्यूल है, तो आपको build/outputs/aar/उस प्रोजेक्ट की निर्देशिका में सभी बिल्ड फ़्लेवर (डिबग और रिलीज़ बाय डिफॉल्ट) के लिए .AR फाइलें मिलेंगी ।

your-library-project
    |- build
        |- outputs
            |- aar
                |- appframework-debug.aar
                 - appframework-release.aar

यदि ये फ़ाइलें मौजूद नहीं हैं, तो एक बिल्ड के साथ शुरू करें

gradlew assemble

macOS उपयोगकर्ताओं के लिए

./gradlew assemble

पुस्तकालय परियोजना विवरण

लाइब्रेरी प्रोजेक्ट में एक build.gradleफ़ाइल होती है apply plugin: com.android.library। इस पुस्तकालय के संदर्भ में.aar फ़ाइल के आपको पैकेज और संस्करण जैसी कुछ संपत्तियों को परिभाषित करना होगा।

build.gradleलाइब्रेरी के लिए उदाहरण फ़ाइल (इस उदाहरण में रिलीज़ में आक्षेप शामिल है):

apply plugin: 'com.android.library'

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.0"

    defaultConfig {
        minSdkVersion 9
        targetSdkVersion 21
        versionCode 1
        versionName "0.1.0"
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

आपके प्रोजेक्ट में संदर्भ .AR फ़ाइल

अपने एप्लिकेशन प्रोजेक्ट में आप इस .aarफ़ाइल को libsफ़ोल्डर में छोड़ सकते हैं और build.gradleनीचे दिए गए उदाहरण का उपयोग करके इस लाइब्रेरी को संदर्भित करने के लिए फ़ाइल को अपडेट कर सकते हैं:

apply plugin: 'com.android.application'

repositories {
    mavenCentral()
    flatDir {
        dirs 'libs' //this way we can find the .aar file in libs folder
    }
}

android {
    compileSdkVersion 21
    buildToolsVersion "21.0.0"

    defaultConfig {

        minSdkVersion 14
        targetSdkVersion 20
        versionCode 4
        versionName "0.4.0"

        applicationId "yourdomain.yourpackage"
    }

    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
            minifyEnabled false
        }
    }
}

dependencies {
    compile 'be.hcpl.android.appframework:appframework:0.1.0@aar'
}

ग्रेडेल में स्थानीय निर्भरता फ़ाइलों को संदर्भित करने के लिए वैकल्पिक विकल्प यहां देखे जा सकते हैं: http://kevinpelgrims.com/blog/2014/05/18/reference-a-local-aar-in-your-android-project

मावेन का उपयोग कर निर्भरता साझा करना

यदि आपको .aarअपने संगठन के भीतर इन फ़ाइलों को साझा करने की आवश्यकता है तो मावेन की जांच करें। इस विषय पर एक अच्छा लेखन पाया जा सकता है: https://web.archive.org/web/20141002122437/http://blog.glassdiary.com/post/67134169807/how-to-share-android-archive- पुस्तकालय-आर-पार

.AR फ़ाइल स्वरूप के बारे में

अनार फाइल सिर्फ एक .zipवैकल्पिक एक्सटेंशन और विशिष्ट सामग्री के साथ है। विवरण के लिए aar प्रारूप के बारे में इस लिंक को देखें ।


11
अद्भुत और विस्तृत जवाब। +1 के लिए gradlew assemble- इससे मुझे जो समस्या हो रही थी, वह हल हो गई।
फारबोड सलामत-ज़ादेह

@hcpl मेरे एंड्रॉइड प्रोजेक्ट को .AR फ़ाइल में कैसे परिवर्तित किया जाए
Ana

1
@ नवेदअहमद आपने कोशिश की ।/gradlew
hcpl

@NaveedAhmad तो आप शायद गलत स्थान से निष्पादित कर रहे हैं या आपका ग्रेडल कॉन्फिगर अलग है। आप "gradlew का पता लगाने" की कोशिश कर सकते हैं, लेकिन वास्तव में अगर आपको gradlew को खोजने और निष्पादित करने में समस्या हो रही है, तो यह संक्षिप्त उत्तर आपकी मदद नहीं करेगा
hcpl

पोस्टरिटी के लिए: प्रोजेक्ट टॉपलेवल डायरेक्टरीgradlew में एक स्क्रिप्ट है ।
CodeClown42

11

जैसे उपयोगकर्ता hcpl ने कहा लेकिन अगर आप लाइब्रेरी के संस्करण के बारे में चिंता नहीं करना चाहते हैं तो आप ऐसा कर सकते हैं:

dependencies {
    compile(name:'mylibrary', ext:'aar')
}

के रूप में संस्करण को अद्यतन करने के लिए कष्टप्रद की अपनी तरह के रूप में। इसके अलावा यह नाम अंतरिक्ष के बारे में चिंता इस तरह से आसान नहीं बनाता है।


5

एक ही सूत्र में hcpl के उत्तर में उल्लिखित पहले और दूसरे चरण का अनुसरण करने के बाद , हमने '* .aar'], dir: 'libs' को हमारे एंड्रॉइड-ऐप-ऐप-आधारित-आधारित-ग्रेड / ऐप / में जोड़ा build.gradle फ़ाइल जैसा कि नीचे दिखाया गया है:

...

dependencies {
       implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs')

...

हमारा वर्गीकृत संस्करण com.android.tools.build:gradle:3.2.1 है


3

AAR बनाने के लिए

नीचे दिए गए चरणों का पालन करते हुए।

File->New->New Module->Android Library and create

एएआर उत्पन्न करने के लिए

एंड्रॉइड स्टूडियो में शीर्ष दाएं फलक पर वर्गीकृत करने के लिए नीचे दिए गए चरणों का पालन करें।

Gradle->Drop down library name -> tasks-> build-> assemble or assemble release

AAR बिल्ड / आउटपुट / aar / में उत्पन्न होगा

लेकिन अगर हम चाहते हैं कि AAR आपके द्वारा नाम के साथ प्रोजेक्ट डायरेक्टरी में विशिष्ट फ़ोल्डर में उत्पन्न किया जाए build.gradle, तो नीचे दिए गए एप्लिकेशन स्तर को संशोधित करें

defaultConfig {
    minSdkVersion 26
    targetSdkVersion 28
    versionCode System.getenv("BUILD_NUMBER") as Integer ?: 1
    versionName "0.0.${versionCode}"


    libraryVariants.all { variant ->

        variant.outputs.all { output ->
            outputFileName = "/../../../../release/" + ("your_recommended_name.aar")
        }
    }
}

अब यह प्रोजेक्ट डायरेक्टरी में नाम "रिलीज" के साथ फ़ोल्डर बनाएगा जिसमें एएआर होगा।


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