Buat file aar di Android Studio

173

Saya ingin membuat file aar untuk perpustakaan saya di Android Studio, saya akan menggunakan opsi jar tetapi perpustakaan saya memiliki sumber daya.

Adakah yang tahu cara membuat file aar dari perpustakaan?

AndroidEnthusiast
sumber

Jawaban:

225

Jika pustaka Anda diatur sebagai pustaka Android (yaitu ia menggunakan apply plugin: 'com.android.library'pernyataan dalam file build.gradle), itu akan menampilkan .aar ketika itu dibangun. Ini akan muncul di direktori build / outputs / aar / di direktori modul Anda.

Anda dapat memilih jenis "Perpustakaan Android" dalam File> Modul Baru untuk membuat Perpustakaan Android baru.

Scott Barta
sumber
3
Versi ini sangat eksternal untuk AAR itu sendiri. Anda biasanya akan menyiapkan file pom Maven yang memiliki info versi.
Scott Barta
1
Saya punya file aar di folder
lib
4
file aar muncul di app / build / outputs / aar / dan bukan di folder / build / pada tingkat proyek! jika Anda tidak menemukannya ...
peresisUser
29
Perhatikan bahwa untuk menghasilkan saya aar, saya harus melakukan Build > Rebuild Projectdi Android Studio. Cukup menjalankan, men-debug, atau membuat APK tidak menghasilkan aaruntuk saya.
Adam Johns
8
@AdamJohns cara tercepat berada ./gradlew moduleName:assembleReleasedi tab terminal
Sameer J
159

Ambil file .aar yang diekspor dari build lokal

Jika Anda memiliki modul yang didefinisikan sebagai proyek perpustakaan android, Anda akan mendapatkan file .aar untuk semua rasa yang dibuat (debug dan lepaskan secara default) di build/outputs/aar/direktori proyek itu.

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

Jika file-file ini tidak ada, mulailah membangun dengan

gradlew assemble

untuk pengguna macOS

./gradlew assemble

Detail proyek perpustakaan

Proyek perpustakaan memiliki build.gradlefile yang berisi apply plugin: com.android.library. Untuk referensi pustaka ini yang dikemas sebagai .aarfile Anda harus mendefinisikan beberapa properti seperti paket dan versi.

Contoh build.gradlefile untuk perpustakaan (contoh ini termasuk kebingungan dalam rilis):

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

Referensi .aar file di proyek Anda

Dalam proyek aplikasi Anda, Anda dapat meletakkan .aarfile ini di libsfolder dan memperbarui build.gradlefile untuk referensi perpustakaan ini menggunakan contoh di bawah ini:

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

Opsi alternatif untuk mereferensikan file dependensi lokal secara bertahap dapat ditemukan di: http://kevinpelgrims.com/blog/2014/05/18/reference-a-local-aar-in-your-android-project

Berbagi dependensi menggunakan pakar

Jika Anda perlu membagikan .aarfile - file ini dalam organisasi Anda, periksa pakar. Tulisan yang bagus tentang topik ini dapat ditemukan di: https://web.archive.org/web/20141002122437/http://blog.glassdiary.com/post/67134169807/how-to-share-android-archive- perpustakaan-aar-seberang

Tentang format file .aar

File aar hanya .zipdengan ekstensi alternatif dan konten tertentu. Untuk detail, periksa tautan ini tentang format aar .

hcpl
sumber
11
Jawaban yang indah dan terperinci. +1 untuk gradlew assemble- yang memecahkan masalah yang saya alami.
Farbod Salamat-Zadeh
@ hcpl Bagaimana cara mengubah proyek android saya menjadi file .aar
Ana
1
@NaveedAhmad sudah coba ./gradlew
hcpl
@NaveedAhmad maka Anda mungkin mengeksekusi dari lokasi yang salah atau konfigurasi gradle Anda berbeda. Anda dapat mencoba "mencari gradlew" tetapi jika Anda kesulitan menemukan dan mengeksekusi gradlew maka jawaban singkat ini tidak akan membantu Anda
hcpl
Untuk anak cucu: gradlewadalah skrip dalam direktori tingkat atas proyek .
CodeClown42
11

seperti kata pengguna hcpl tetapi jika Anda tidak ingin khawatir tentang versi pustaka, Anda dapat melakukan ini:

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

sebagai jenis menjengkelkan harus memperbarui versi setiap saat. Ini juga membuat tidak khawatir tentang ruang nama lebih mudah dengan cara ini.

j2emanue
sumber
5

Setelah mengikuti langkah pertama dan kedua yang disebutkan dalam jawaban hcpl di utas yang sama , kami menambahkan , '* .aar'], dir: 'libs' di app-android-app-project-based-on-gradle / app / kami / file build.gradle seperti yang ditunjukkan di bawah ini:

...

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

...

Versi gradle kami adalah com.android.tools.build:gradle:3.2.1

Dhananjay M
sumber
3

Untuk membuat AAR

saat membuat ikuti langkah-langkah di bawah ini.

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

Untuk menghasilkan AAR

Pergi ke gradle di panel kanan atas di studio android ikuti langkah-langkah di bawah ini.

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

AAR akan dihasilkan dalam build / outputs / aar /

Tetapi jika kita ingin AAR dihasilkan di folder tertentu dalam direktori proyek dengan nama yang Anda inginkan, ubah level aplikasi Anda build.gradleseperti di bawah ini

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

Sekarang akan membuat folder dengan nama "rilis" di direktori proyek yang akan memiliki AAR.

Tarun A
sumber