web-dev-qa-db-fra.com

Gradle build n'a pas réussi à résoudre une dépendance à la bibliothèque (trnql sdk)

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:

 enter image description here

Et la structure du projet ressemble à ceci:

 enter image description here

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?

7
Cognitio

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.

33
ben75

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'
        }
    }
}
14
Andras Kloczl

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.

3
Tash Pemhiwa

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')
2
Richard

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'])
0
huangxin