Android Studio'da aar dosyası oluşturma


173

Android Studio'daki kütüphanem için bir aar dosyası oluşturmak istiyorum, bir kavanoz seçeneğiyle giderdim ama kütüphanemde kaynaklar var.

Kütüphaneden aar dosyası nasıl oluşturulur?

Yanıtlar:


225

Kitaplığınız bir Android kitaplığı olarak ayarlanmışsa (yani apply plugin: 'com.android.library'ifadeyi build.gradle dosyasında kullanır ), oluşturulduğunda bir .aar çıktısı verir. Bu görünecektir inşa / çıkış / aar / senin modülün Rehberde.

Yeni bir Android Kütüphanesi oluşturmak için Dosya> Yeni Modül'de "Android Kütüphanesi" türünü seçebilirsiniz.


3
Sürümleme gerçekten AAR'ın dışındadır. Genellikle sürüm bilgisi olan bir Maven pom dosyası ayarlarsınız.
Scott Barta

1
Kütüphanenin libs klasöründe aar dosyası var, bu yüzden derleme / çıktılar / aar / doğrudan dahil değil
Ganesh Jogam

4
aar dosyası proje düzeyinde / build / klasöründe değil app / build / outputs / aar / dizininde göründü! bulamazsanız ...
peresisUser

29
Benim oluşturmak aariçin Build > Rebuild ProjectAndroid Studio'da bir yapmak zorunda olduğumu unutmayın . Basitçe çalışan, hata ayıklama veya Bina APK aarbenim için üretmedi .
Adam Johns

8
@AdamJohns ./gradlew moduleName:assembleReleaseterminal sekmesinde olmak daha hızlı bir şekilde
Sameer J

159

Dışa aktarılan .aar dosyasını yerel derlemelerden al

Bir android kütüphane projesi olarak tanımlanan bir modülünüz varsa build/outputs/aar/, o projenin dizinindeki tüm yapı lezzetleri için (varsayılan olarak hata ayıklama ve bırakma) .aar dosyaları alırsınız .

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

Bu dosyalar yoksa,

gradlew assemble

macOS kullanıcıları için

./gradlew assemble

Kütüphane proje detayları

Bir kütüphane projesi build.gradleiçeren bir dosyaya sahiptir apply plugin: com.android.library. .aarDosya olarak paketlenmiş bu kütüphaneye referans için paket ve sürüm gibi bazı özellikleri tanımlamanız gerekir.

build.gradleKütüphane için örnek dosya (bu örnek sürümdeki gizlemeyi içerir):

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'
        }
    }
}

Projenizdeki referans .aar dosyası

Uygulama projenizde bu .aardosyayı libsklasöre bırakabilir build.gradleve aşağıdaki örneği kullanarak dosyayı bu kitaplığa başvuracak şekilde güncelleyebilirsiniz :

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'
}

Sınıfta yerel bağımlılık dosyalarına başvurmak için alternatif seçenekler şu adreste bulunabilir: http://kevinpelgrims.com/blog/2014/05/18/reference-a-local-aar-in-your-android-project

Maven kullanarak bağımlılıkları paylaşma

Bu .aardosyaları kuruluşunuz içinde paylaşmanız gerekiyorsa maven'e bakın. Bu konu hakkında güzel bir yazı şu adreste bulunabilir: https://web.archive.org/web/20141002122437/http://blog.glassdiary.com/post/67134169807/how-to-share-android-archive- kütüphane-aar-genelinde

.Aar dosya biçimi hakkında

Aar dosyası sadece .zipalternatif bir uzantıya ve belirli bir içeriğe sahip bir a dosyasıdır . Ayrıntılar için aar formatıyla ilgili bu bağlantıyı kontrol edin .


11
Harika ve ayrıntılı cevap. +1 için gradlew assemble- bu yaşadığım sorunu çözdü.
Farbod Salamat-Zadeh

@hcpl Android projemi .aar dosyasına dönüştürme
Ana

1
@NaveedAhmad denedin mi ./gradlew
hcpl

@NaveedAhmad muhtemelen yanlış konumdan çalıştırıyorsunuz veya sınıflandırma yapılandırmanız farklı. "Gradlew bulun" deneyebilirsiniz ama gerçekten gradlew bulmak ve yürütme konusunda sorun yaşıyorsanız o zaman bu kısa cevap size yardımcı olmayacaktır
hcpl

Posterity için: proje üst düzey dizinindekigradlew bir komut dosyasıdır .
CodeClown42

11

tıpkı hcpl kullanıcısı gibi ama kütüphanenin sürümü hakkında endişelenmek istemiyorsanız bunu yapabilirsiniz:

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

sürümü her zaman güncellemek zorunda gibi can sıkıcı bir tür olarak. Ayrıca isim alanı hakkında endişelenmemeyi kolaylaştırır.


5

Aynı iş parçacığında hcpl'nin cevabında belirtilen birinci ve ikinci adımları izledikten sonra , '* .aar'], dir: 'libs' ekledik -app / proje / build.gradle dosyası aşağıda gösterildiği gibi:

...

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

...

Gradle sürümümüz com.android.tools.build:gradle:3.2.1


3

AAR oluşturmak için

oluştururken aşağıdaki adımları izleyin.

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

AAR oluşturmak için

Android stüdyosunda sağ üst bölmede gradle'a gidin aşağıdaki adımları izleyin.

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

AAR derleme / çıkışlar / aar /

Ancak AAR'ın proje dizininde istediğiniz adla belirli bir klasörde oluşturulmasını istiyorsak, uygulama düzeyinizi build.gradleaşağıdaki gibi değiştirin

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")
        }
    }
}

Şimdi proje dizininde AAR olan "release" adında bir klasör oluşturacaktır.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.