Erstellen Sie eine AAR-Datei in Android Studio


173

Ich möchte eine AAR-Datei für meine Bibliothek in Android Studio erstellen. Ich hätte eine JAR-Option gewählt, aber meine Bibliothek verfügt über Ressourcen.

Irgendeine Idee, wie man eine aar-Datei aus einer Bibliothek erstellt?

Antworten:


225

Wenn Ihre Bibliothek als Android-Bibliothek eingerichtet ist (dh die apply plugin: 'com.android.library'Anweisung in der Datei build.gradle verwendet), wird beim Erstellen eine .aar-Datei ausgegeben. Es wird im Verzeichnis build / output / aar / im Verzeichnis Ihres Moduls angezeigt.

Sie können den Typ "Android Library" unter Datei> Neues Modul auswählen, um eine neue Android Library zu erstellen.


3
Die Versionierung ist wirklich außerhalb des AAR selbst. Normalerweise richten Sie eine Maven-POM-Datei mit Versionsinformationen ein.
— Scott Barta

1
Ich habe eine aar-Datei im libs-Ordner der Bibliothek, so dass sie nicht in build /
— output

4
Die aar-Datei wurde in app / build / output / aar / und nicht im Ordner / build / auf Projektebene angezeigt! falls Sie es nicht finden ...
— PeresisUser

29
Beachten Sie, dass aarich Build > Rebuild Projectin Android Studio eine erstellen musste , um meine zu generieren . Das einfache Ausführen, Debuggen oder Erstellen von APK hat das aarfür mich nicht generiert .
— Adam Johns

8
@ AdamJohns der schnellere Weg ./gradlew moduleName:assembleReleasein der Terminal-Registerkarte
— Sameer J

158

Rufen Sie die exportierte .aar-Datei aus lokalen Builds ab

Wenn Sie ein Modul als Android-Bibliotheksprojekt definiert haben, erhalten Sie .aar-Dateien für alle Build-Varianten (standardmäßig debuggen und freigeben) im build/outputs/aar/Verzeichnis dieses Projekts.

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

Wenn diese Dateien nicht vorhanden sind, starten Sie einen Build mit

gradlew assemble

für macOS Benutzer

./gradlew assemble

Details zum Bibliotheksprojekt

Ein Bibliotheksprojekt enthält eine build.gradleDatei mit apply plugin: com.android.library. Als Referenz für diese als .aarDatei verpackte Bibliothek müssen Sie einige Eigenschaften wie Paket und Version definieren.

Beispieldatei build.gradlefür die Bibliothek (dieses Beispiel enthält die Verschleierung in der Version):

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

Referenz .aar-Datei in Ihrem Projekt

In Ihrem App-Projekt können Sie diese .aarDatei im libsOrdner ablegen und die build.gradleDatei aktualisieren , um anhand des folgenden Beispiels auf diese Bibliothek zu verweisen:

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

Alternative Optionen zum Verweisen auf lokale Abhängigkeitsdateien in gradle finden Sie unter: http://kevinpelgrims.com/blog/2014/05/18/reference-a-local-aar-in-your-android-project

Abhängigkeiten mit maven teilen

Wenn Sie diese .aarDateien in Ihrer Organisation freigeben müssen, überprüfen Sie maven. Eine nette Zusammenfassung zu diesem Thema finden Sie unter: https://web.archive.org/web/20141002122437/http://blog.glassdiary.com/post/67134169807/how-to-share-android-archive- Bibliothek-aar-across

Informationen zum .aar-Dateiformat

Eine aar-Datei ist nur eine .zipmit einer alternativen Erweiterung und einem bestimmten Inhalt. Weitere Informationen zum AAR-Format finden Sie unter diesem Link .


11
Wunderbare und detaillierte Antwort. +1 für gradlew assemble- das löste das Problem, das ich hatte.
— Farbod Salamat-Zadeh

@hcpl Wie konvertiere ich mein Android-Projekt in .aar-Datei
— Ana

1
@NaveedAhmad haben Sie versucht ./gradlew
— hcpl

@NaveedAhmad dann führen Sie wahrscheinlich vom falschen Ort aus oder Ihre Gradle-Konfiguration ist anders. Sie könnten versuchen, "gradlew zu lokalisieren", aber wenn Sie wirklich Probleme haben, gradlew zu finden und auszuführen, hilft Ihnen diese kurze Antwort nicht weiter
— hcpl

Für die Nachwelt: gradlewist ein Skript im obersten Projektverzeichnis .
— CodeClown42

11

Genau wie der Benutzer hcpl sagte, aber wenn Sie sich keine Gedanken über die Version der Bibliothek machen möchten, können Sie dies tun:

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

Es ist ärgerlich, die Version jedes Mal aktualisieren zu müssen. Auf diese Weise wird es auch einfacher, sich keine Gedanken über den Namensraum zu machen.



3

AAR erstellen

Befolgen Sie beim Erstellen die folgenden Schritte.

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

AAR generieren

Gehen Sie zu Gradle im oberen rechten Bereich in Android Studio und folgen Sie den nachstehenden Schritten.

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

AAR wird in build / output / aar / generiert

Wenn wir jedoch möchten, dass AAR in einem bestimmten Ordner im Projektverzeichnis mit dem gewünschten Namen generiert wird, ändern Sie Ihre App-Ebene build.gradlewie unten

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

Jetzt wird ein Ordner mit dem Namen "release" im Projektverzeichnis erstellt, der AAR haben wird.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.