Crea file aar in Android Studio


173

Vorrei creare un file AAR per la mia libreria in Android Studio, avrei optato per un'opzione jar ma la mia libreria ha risorse.

Qualche idea su come creare un file aar da una libreria?

Risposte:


225

Se la tua libreria è configurata come libreria Android (ovvero utilizza l' apply plugin: 'com.android.library'istruzione nel suo file build.gradle), al momento della creazione genererà un file .aar. Mostrerà nella / uscite / AAR / build directory nella directory del modulo.

Puoi scegliere il tipo "Libreria Android" in File> Nuovo modulo per creare una nuova libreria Android.


3
Il versioning è davvero esterno all'AAR stesso. In genere si configura un file pom Maven con informazioni sulla versione.
Scott Barta,

1
Ho un file aar nella cartella libs della libreria, quindi non è incluso nella build / output / aar / direttamente
Ganesh Jogam

4
il file aar è apparso in app / build / output / aar / e non nella cartella / build / a livello di progetto! nel caso in cui non lo trovi ...
peresisUser

29
Si noti che per generare il mio aar, ho dovuto fare un Build > Rebuild Projectin Android Studio. La semplice esecuzione, il debug o la creazione di APK non mi hanno generato aar.
Adam Johns,

8
@AdamJohns è il modo più veloce di essere ./gradlew moduleName:assembleReleasenella scheda terminale
Sameer J

159

Recupera il file .aar esportato dalle build locali

Se hai un modulo definito come progetto di libreria Android, otterrai i file .aar per tutti i sapori di build (debug e rilascio di default) nella build/outputs/aar/directory di quel progetto.

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

Se questi file non esistono, avvia una build con

gradlew assemble

per utenti macOS

./gradlew assemble

Dettagli del progetto della biblioteca

Un progetto di libreria ha un build.gradlefile contenente apply plugin: com.android.library. Per riferimento di questa libreria impacchettata come .aarfile, dovrai definire alcune proprietà come pacchetto e versione.

build.gradleFile di esempio per la libreria (questo esempio include l'offuscamento nella versione):

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

File di riferimento .aar nel tuo progetto

Nel progetto dell'app puoi rilasciare questo .aarfile nella libscartella e aggiornare il build.gradlefile per fare riferimento a questa libreria usando l'esempio seguente:

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

Opzioni alternative per fare riferimento ai file delle dipendenze locali in gradi sono disponibili all'indirizzo: http://kevinpelgrims.com/blog/2014/05/18/reference-a-local-aar-in-your-android-project

Condivisione delle dipendenze utilizzando Maven

Se devi condividere questi .aarfile all'interno della tua organizzazione, controlla maven. Un bel commento su questo argomento è disponibile all'indirizzo: https://web.archive.org/web/20141002122437/http://blog.glassdiary.com/post/67134169807/how-to-share-android-archive- biblioteca-AAR-across

Informazioni sul formato file .aar

Un file aar è solo un .zipcon un'estensione alternativa e contenuto specifico. Per i dettagli, controlla questo link sul formato dell'aar .


11
Risposta meravigliosa e dettagliata. +1 per gradlew assemble- che ha risolto il problema che stavo avendo.
Farbod Salamat-Zadeh,

@hcpl Come convertire il mio progetto Android in file .aar
Ana

1
@NaveedAhmad ci hai provato ./gradlew
hcpl

@NaveedAhmad allora probabilmente stai eseguendo da una posizione sbagliata o la tua configurazione gradle è diversa. Potresti provare a "individuare Gradlew" ma davvero se hai problemi a trovare ed eseguire Gradlew, questa breve risposta non ti aiuterà
hcpl

Per i posteri: gradlewè uno script nella directory di livello superiore del progetto .
CodeClown42

11

proprio come ha detto l'utente hcpl ma se non vuoi preoccuparti della versione della libreria puoi farlo:

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

come è fastidioso dover aggiornare la versione ogni volta. Inoltre rende più semplice preoccuparsi dello spazio dei nomi in questo modo.


5

Dopo aver seguito il primo e il secondo passaggio menzionati nella risposta di hcpl nello stesso thread , abbiamo aggiunto '* .aar'], dir: 'libs' nel nostro progetto-android-app-based-on-gradle / app / file build.gradle come mostrato di seguito:

...

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

...

La nostra versione gradle è com.android.tools.build:gradle:3.2.1


3

Per creare AAR

durante la creazione seguire i passaggi seguenti.

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

Per generare AAR

Vai a gradle nel riquadro in alto a destra in Android Studio segui i passaggi seguenti.

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

AAR verrà generato in build / output / aar /

Ma se vogliamo che AAR venga generato in una cartella specifica nella directory del progetto con il nome desiderato, modifica il livello della tua app build.gradlecome di seguito

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

Ora creerà una cartella con il nome "release" nella directory del progetto che avrà AAR.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.