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?
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:
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.
aar
ich Build > Rebuild Project
in Android Studio eine erstellen musste , um meine zu generieren . Das einfache Ausführen, Debuggen oder Erstellen von APK hat das aar
für mich nicht generiert .
./gradlew moduleName:assembleRelease
in der Terminal-Registerkarte
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
Ein Bibliotheksprojekt enthält eine build.gradle
Datei mit apply plugin: com.android.library
. Als Referenz für diese als .aar
Datei verpackte Bibliothek müssen Sie einige Eigenschaften wie Paket und Version definieren.
Beispieldatei build.gradle
fü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'
}
}
}
In Ihrem App-Projekt können Sie diese .aar
Datei im libs
Ordner ablegen und die build.gradle
Datei 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
Wenn Sie diese .aar
Dateien 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
Eine aar-Datei ist nur eine .zip
mit einer alternativen Erweiterung und einem bestimmten Inhalt. Weitere Informationen zum AAR-Format finden Sie unter diesem Link .
gradlew assemble
- das löste das Problem, das ich hatte.
gradlew
ist ein Skript im obersten Projektverzeichnis .
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.
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
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.gradle
wie 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.
Übrigens hat @aar keine transitive Abhängigkeit. Zum Aktivieren benötigen Sie einen Parameter: Transitive Abhängigkeiten, die für eine Bibliothek mit Gradle nicht aufgelöst wurden