Comment inclure POT de dépendance dans l'AAR, de la bibliothèque
Résumé:
J'ai un AAR fichier qui dépend d'un fichier JAR, lorsque je construis l'AAR projet, il ne contient pas le POT de code.
Détails:
J'ai un SDK Java projet de bibliothèque qui contient le code que nous utilisons pour la Java des projets web et une telle, cette bibliothèque est créée à l'aide de Gradle
et qui réside dans un intérieur serveur nexus (comme un POT).
Le but est de fournir un "Android configuré" la version de ce POT de la bibliothèque par le biais de l'AAR, de la bibliothèque que de multiples Applications Android peuvent utiliser et minimiser l'effort (et le code réutilisable) pour la mettre en œuvre. Cette AAR fichier est téléchargé vers le serveur nexus pour être utilisé par les projets d'Applications Android.
Mon AAR projet comprend un gradle dépendance pour mon SDK Java de la bibliothèque (le POT) mais lors de la construction, de l'AAR ne comprennent pas les classes.
Code:
C'est le SDK Java du projet gradle fichier:
apply plugin: 'java'
//noinspection GroovyUnusedAssignment
sourceCompatibility = 1.7
version = '1.1.1'
repositories {
mavenCentral()
}
jar {
from {
configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
}
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.11'
testCompile 'org.apache.directory.studio:org.apache.commons.io:2.4'
compile 'org.springframework:spring-web:3.1.1.RELEASE'
compile 'com.google.code.gson:gson:2.3'
}
C'est le gradle fichier pour mon AAR Projet, notez que j'ai enlevé le repository Maven déclarations de mon serveur nexus. Je suppose que ça ne compte pas pour le bien de cette question.
apply plugin: 'com.android.library'
android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
defaultConfig {
minSdkVersion 16
targetSdkVersion 23
versionCode 1
versionName "2.2.2"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
lintOptions {
abortOnError false
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.1.0'
compile ('com.mycompany:javasdk:1.1.1')
}
C'est le gradle fichier pour mon Projet Android, encore une fois j'ai enlevé le serveur nexus références:
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
defaultConfig {
applicationId "com.mycompany.application1"
minSdkVersion 16
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.1.0'
compile ('com.mycompany:androidsdk:2.2.2@aar')
}
REMARQUE: au départ, j'ai résolu le problème en ajoutant le JAR dans le répertoire lib de l'AAR projet, mais ce n'est pas souhaitable. Il permet d'avoir un serveur nexus inutile. Il serait bon que nous puissions remonter le BOCAL du numéro de version dans l'AAR du projet gradle fichier et la mise à jour se fait automatiquement au moment de la compilation.
NOTE2: j'ai essayé d'ajouter transitive=true
à mon AAR dépendance dans le Projet Android, mais ça n'a pas résolu quoi que ce soit, le vrai problème est que lors de la construction de l'AAR projet, le POT de code de projet n'obtient pas livré.
OriginalL'auteur rastadrian | 2015-10-30
Vous devez vous connecter pour publier un commentaire.
Vous pouvez ajouter cette tâche:
Dépendances seront téléchargés à partir de votre Nexus, mais quand vous avez besoin du package de la bibliothèque, l'exécution de cette tâche première et
jar
fichiers seront copiés et inclus à l'intérieur de finaleaar
.Avez-vous essayé?
oui, cela a résolu le problème. J'ai juste ajouté un
clean task
d'abord de nettoyer le répertoire libs, en fonction de ce post. Après cela, j'ai dû ajouter des exclusions dans lepackagingOptions
pour certains fichiers générés dans leMETA-INF
, mais dans l'ensemble, cela a fonctionné!SALUT @rastadrian, j'ai le même problèmes, pouvez-vous partager votre code ? sur creat propre tâche ?
où dois-je ajouter cette tâche dans mon projet? J'ai aussi eu le même scenerio
OriginalL'auteur Héctor
Par défaut, l'AAR ne comprend pas toutes les dépendances. Solution mentionnée par @Hector doit travailler pour plugin gradle < 3.0. Pour le plugin Gradle 3.0+, essayez de configuration personnalisé comme mentionné ici.
OriginalL'auteur nayan
Aucun des suggestions m'ont aidé pour Gradle 4.6, donc j'ai perdu toute la journée inventer mon propre.
Finalement, j'ai trouvé un bon Résumé et l'a modifié pour ma version de Gradle:
https://gist.github.com/stepio/824ef073447eb8d8d654f22d73f9f30b
OriginalL'auteur stepio