web-dev-qa-db-de.com

Erstellen Sie eine AAR-Datei in Android Studio

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 hat Ressourcen.

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

138

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

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

184
Scott Barta

Exportierte .aar-Datei von lokalen Builds abrufen

Wenn Sie ein Modul als Android-Bibliotheksprojekt definiert haben, erhalten Sie .aar-Dateien für alle Build-Varianten (standardmäßig Debug und Release) im Verzeichnis build/outputs/aar/ 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

Bibliotheksprojektdetails

Ein Bibliotheksprojekt hat eine build.gradle-Datei, die apply plugin: com.Android.library enthält. Als Referenz für diese Bibliothek, die als .aar-Datei gepackt ist, müssen Sie einige Eigenschaften wie Paket und Version definieren. 

Beispiel build.gradle-Datei für die Bibliothek (dieses Beispiel enthält Verschleierung in der Veröffentlichung):

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 .aar-Datei im Ordner libs ablegen und die build.gradle-Datei mit dem folgenden Beispiel aktualisieren, um 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:[email protected]'
}

Alternative Optionen zum Referenzieren lokaler 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 gemeinsam nutzen

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

Über das .aar-Dateiformat

Eine AAR-Datei ist nur ein .Zip mit einer alternativen Erweiterung und spezifischem Inhalt. Für Details überprüfen Sie diesen Link über das AAR-Format .

136
hcpl

genauso wie der Benutzer hcpl sagte, aber wenn Sie sich keine Gedanken über die Version der Bibliothek machen wollen, können Sie Folgendes tun:

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

es ist ärgerlich, die Version jedes Mal aktualisieren zu müssen. Dadurch wird es auch einfacher, sich nicht um den Namensraum zu kümmern. 

9
j2emanue

btw @aar hat keine transitive Abhängigkeit. Sie benötigen einen Parameter, um es zu aktivieren: Transitive Abhängigkeiten, die für aar library nicht mit gradle aufgelöst werden

2
cn123h

Nachdem wir den ersten und zweiten Schritt in der Antwort von hcpl in demselben Thread gefolgt haben , fügten wir , '* .aar'], dir: 'libs' in unserem Android-App-Projekt hinzu. Datei basierend auf Gradle/app/build.gradle wie unten gezeigt:

...

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

...

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

0
Dhananjay M