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?
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:
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.
aar
, ho dovuto fare un Build > Rebuild Project
in Android Studio. La semplice esecuzione, il debug o la creazione di APK non mi hanno generato aar
.
./gradlew moduleName:assembleRelease
nella scheda terminale
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
Un progetto di libreria ha un build.gradle
file contenente apply plugin: com.android.library
. Per riferimento di questa libreria impacchettata come .aar
file, dovrai definire alcune proprietà come pacchetto e versione.
build.gradle
File 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'
}
}
}
Nel progetto dell'app puoi rilasciare questo .aar
file nella libs
cartella e aggiornare il build.gradle
file 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
Se devi condividere questi .aar
file 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
Un file aar è solo un .zip
con un'estensione alternativa e contenuto specifico. Per i dettagli, controlla questo link sul formato dell'aar .
gradlew assemble
- che ha risolto il problema che stavo avendo.
gradlew
è uno script nella directory di livello superiore del progetto .
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.
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
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.gradle
come 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.
btw @aar non ha dipendenza transitiva. è necessario un parametro per attivarlo : dipendenze transitive non risolte per la libreria aar usando gradle