Les dépendances transitoires ne sont pas résolues pour la bibliothèque aar avec gradle

J'ai étudié un certain temps et j'ai probablement vu les réponses les plus populaires ici liées aux dépendances aar et transitive, mais en quelque sorte, il n'est toujours pas clair pour moi de faire fonctionner.

Alors:

  • Robotium. Dans la série de tests, chaque test suivant est affecté par le test précédent
  • Android Gradle tâche de copier des fichiers après la construction
  • Android: simule un long temps de fonctionnement
  • Test de l'unité Android avec Retrofit et Mockito
  • Appel multiple de getView () dans GridView
  • Vous recherchez une classe de fragment incorrect avec la bibliothèque de compatibilité Android
  • J'ai une bibliothèque Android avec une configuration Gradle donnée:

    apply plugin: 'android-library' apply plugin: 'android-maven' version = "1.0.0" group = "com.somepackage" buildscript { repositories { mavenCentral() mavenLocal() } dependencies { classpath 'com.github.dcendents:android-maven-plugin:1.0' } } android { compileSdkVersion 19 buildToolsVersion '19.0.3' defaultConfig { minSdkVersion 10 } } repositories { maven { url 'http://www.bugsense.com/gradle/' } } dependencies { provided 'com.google.android.gms:play-services:+' provided 'com.android.support:appcompat-v7:+' compile 'com.google.code.gson:gson:2.2.4' compile 'com.bugsense.trace:bugsense:3.6' compile 'commons-net:commons-net:3.3' } 

    Ensuite, je déploie le poste local gradle install avec l' gradle install . Le fichier POM de la bibliothèque déployée ressemble à ceci:

     <?xml version="1.0" encoding="UTF-8"?> <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <modelVersion>4.0.0</modelVersion> <groupId>com.sprezzat</groupId> <artifactId>app</artifactId> <version>1.0.0</version> <packaging>aar</packaging> <dependencies> <dependency> <groupId>com.bugsense.trace</groupId> <artifactId>bugsense</artifactId> <version>3.6</version> <scope>compile</scope> </dependency> <dependency> <groupId>commons-net</groupId> <artifactId>commons-net</artifactId> <version>3.3</version> <scope>compile</scope> </dependency> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.2.4</version> <scope>compile</scope> </dependency> </dependencies> </project> 

    Et enfin gradle config de mon application Android utilisant la bibliothèque ci-dessus en tant que dépendance:

     buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.9.+' } } apply plugin: 'android' repositories { mavenCentral() mavenLocal() } android { compileSdkVersion 15 buildToolsVersion "19.0.2" defaultConfig { minSdkVersion 10 targetSdkVersion 18 } } dependencies { compile 'com.google.android.gms:play-services:+' compile 'com.android.support:appcompat-v7:+' compile 'com.somepackage:LIBRARY_NAME:1.0.0@aar' } 

    Et après avoir déployé une application sur le téléphone, je reçois NoClassDefFoundError pour les classes appartenant à la compilation des dépendances de ma bibliothèque Android.

    Inspecter mes dépendances d'application Android en utilisant les gradle dependencies :

     apk - Classpath packaged with the compiled main classes. +--- com.google.android.gms:play-services:+ -> 4.3.23 | \--- com.android.support:support-v4:19.0.1 -> 19.1.0 +--- com.android.support:appcompat-v7:+ -> 19.1.0 | \--- com.android.support:support-v4:19.1.0 \--- com.somepackage:LIBRARY_NAME:1.0.0 

    Selon l'arborescence ci-dessus, toutes les dépendances transitives ne sont pas détectées. Où est le problème et comment doit-on le faire correctement?

  • Comment publier un fichier aar sur Apache Archiva avec Gradle
  • Comment inclure des dépendances dans la bibliothèque .aar?
  • Comment libérer un AAR avec une autre dépendance au projet de la bibliothèque Android?
  • Développement de plugins de Cordova - ajout de aar
  • Créer un AAR qui dépend de multiples AAR
  • Projet de bibliothèque Android com.android.dex.DexException: plusieurs fichiers dex définissent Lcom / google / gson / JsonSerializer
  • 3 Solutions collect form web for “Les dépendances transitoires ne sont pas résolues pour la bibliothèque aar avec gradle”

    J'ai résolu mon problème en définissant un attribut transitive pour ma dépendance Aar:

     compile ('com.somepackage:LIBRARY_NAME:1.0.0@aar'){ transitive=true } 

    Vous ne devriez pas utiliser "@aar", si l'utilisation "@" devient " Notification Artefact ", si vous souhaitez utiliser "@" et que vous souhaitez avoir une transition dépendante, vous devez ajouter "transitif = vrai"

    Essayez ceci si vous utilisez aar localement:

     compile(project(:your-library-name)) { transitive=true } 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.