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?

AndroidEnthusiast
quelle

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.

Scott Barta
quelle
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 .

hcpl
quelle
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.

j2emanue
quelle
5

Nachdem wir den ersten und zweiten Schritt befolgt hatten, die in der Antwort von hcpl im selben Thread erwähnt wurden , fügten wir '* .aar'], dir: 'libs' in unser-android-app-Projekt-basiert-auf-gradle / app / hinzu build.gradle-Datei wie unten gezeigt:

...

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

...

Unsere Gradle-Version ist com.android.tools.build:gradle:3.2.1

Dhananjay M.
quelle
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.

Tarun A.
quelle