Lorsque j'essaie de construire mon projet à l'aide de gradle, le message d'erreur suivant s'affiche:
Failed to resolve: com.trnql:lib-release 1.0.0
Il semble qu'il ne trouve pas le fichier d'archive Android (aar) qui se trouve dans le dossier libs. La section des dépendances du fichier build.gradle ressemble à ceci:
Et la structure du projet ressemble à ceci:
Le fichier aar est valide, il n'est simplement pas résolu par le système de construction. Que puis-je faire pour résoudre ce problème?
Le problème ici est que Gradle va essayer de trouver ceci dans un des référentiels déclarés. Le répertoire libs n'est pas un référentiel ... MAIS vous pouvez le déclarer comme ceci:
repositories {
mavenCentral()
flatDir {
dirs 'libs'
}
}
et gradle le trouvera.
Lorsque vous créez un nouveau projet de studio Android, votre build.gradle de niveau supérieur comporte un script de construction et une partie tout projet (voir ci-dessous). Si vous insérez le
flatDir {
dirs 'libs'
}
une partie dans les dépôts du buildscript, cela ne fonctionnera pas.
Vous devez le coller dans les référentiels de tous les projets, comme ici:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.Android.tools.build:gradle:2.2.3'
}
}
allprojects {
repositories {
jcenter()
flatDir {
dirs 'libs'
}
}
}
Dans mon cas, dans mon module de bibliothèque, mon build.gradle ressemblait à quelque chose comme:
buildscript {
repositories {
flatDir {
dirs "libs"
}
}
}
J'ai dû supprimer le bit buildscript
pour qu'il ressemble à ceci à la fin:
repositories {
flatDir {
dirs "libs"
}
}
Ensuite, il était capable de synchroniser et, par la suite, de construire.
Et pour être aussi complet que possible: Disons que vous voulez que vos AAR soient dans un autre répertoire dans un sous-module ....
Ensuite, dans le fichier build.gradle de votre projet TOP LEVEL, procédez comme suit:
buildscript {
// stuff here
}
allprojects {
repositories {
// all your standard stuff, jcenter, maven, etc
flatDir {
dirs project(':MY_MODULE_NAME').file('MODULE_SUB_DIRECTORY')
}
}
}
Si votre structure de répertoire de module ressemblait à ceci:
MyFancyModule/
/aars <-- aar files go here
/build
/libs <-- jar files go here
/src
build.gradle <-- this is NOT your top level gradle file
Ensuite, la ligne dans votre fichier de niveau supérieur ressemblera à ceci:
dirs project(':MyFancyModule').file('aars')
mettez votre fichier aar dans le répertoire libs, puis modifiez une partie de votre fichier build.gradle comme ci-dessous, la différence est que vous avez oublié * .aar lors de la compilation de fileTree
repositories {
flatDir {
dirs 'libs'
}
}
compile fileTree(dir:'libs', include:['*.jar', '*.aar'])