Ajout de fichiers .aar locaux à ma compilation Gradle

J'ai donc créé une bibliothèque Android et l'ai compilé avec succès dans un fichier .aar, j'ai appelé ce fichier aar: "projectx-sdk-1.0.0.aar" maintenant, je veux que mon nouveau projet dépende de ce aar, donc ce que j'ai fait Suit cette publication: http://life.nimbco.us/referencing-local-aar-files-with-android-studios-new-gradle-based-build-system/

Mais le post me confond depuis que je n'ai pas le résultat souhaité:

  • Comment définir l'en-tête et le pied de page pour une mise en page linéaire dans Android
  • Android: ScrollView et cache de dessin?
  • Documentation incomplète d'Android pour la méthode Environment.getExternalStorageDirectory ()
  • En utilisant GSON pour analyser un JSON avec "clé" dynamique et "valeur" dans Android
  • Impossible d'ajouter une vue vide ci-dessous Recyclerview
  • Sqlite base de données de sécurité
  • Le nom du package de l'aar est: com.projectx.photosdk et le module intérieur s'appelle sdk

    Voici ma structure de projet actuelle:

     |-SuperAwesomeApp |--.idea |--gradle |--App |---aars |----projectx-sdk-1.0.0.aar |---build |---jars |---src |---build.gradle 

    Et il est mon fichier de compilation de gradle:

     apply plugin: 'android' buildscript { repositories { mavenCentral() flatDir { dirs 'aars' } } } android { compileSdkVersion 19 buildToolsVersion "19.0.1" defaultConfig { minSdkVersion 11 targetSdkVersion 19 versionCode 1 versionName "1.0" } buildTypes { release { runProguard false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' } } } dependencies { compile 'com.android.support:gridlayout-v7:19.0.1' compile 'com.android.support:support-v4:19.0.1' compile 'com.android.support:appcompat-v7:19.0.1' compile 'com.projectx.photosdk:sdk:1.0.0@aar' // compile files( 'aars/sdk-1.0.0.aar' ) // Does not work either } 

    // MODIFIER

    Les erreurs que je reçois:

     Failed to refresh Gradle project 'SuperAwesomeApp' Could not find com.projectx.photosdk:sdk:1.0.0. Required by: SuperAwesomeApp:App:unspecified 

  • Dans l'application Android Unity, comment recevoir du contenu d'un service d'une bibliothèque Android référencée
  • Comment publier Android .aar sources pour que Android Studio les trouve automatiquement?
  • Bibliothèque d'archives Android (aar) vs jar standard
  • Android: permet la création d'un alias d'activité dont TargetActivity est dans aar / sdk
  • Comment inclure une configuration Proguard dans ma bibliothèque Android (AAR)
  • Les dépendances transitoires ne sont pas résolues pour la bibliothèque aar avec gradle
  • 4 Solutions collect form web for “Ajout de fichiers .aar locaux à ma compilation Gradle”

    Vous mettez votre bloc flatDir dans le mauvais bloc de repostories . Le bloc de repositories dans buildscript indique à Gradle où trouver le plugin Android-Gradle, mais pas le reste des dépendances. Vous devez disposer d'un autre bloc de repositories niveau supérieur comme ceci:

     repositories { mavenCentral() flatDir { dirs 'aars' } } 

    J'ai testé ceci et ça fonctionne bien sur ma configuration.

    Avec les versions récentes d'Android Studio, testé avec 1.3, pour utiliser le fichier local .AAR et pas un récupéré dans le dépôt maven / jcenter, allez dans Fichier> Nouveau> Nouveau module et choisissez Importer .JAR / .AAR Package .

    Ce que vous allez finir est un nouveau module dans votre projet qui contient un fichier build.gradle très simple qui ressemble plus ou moins à ceci:

     configurations.create("default") artifacts.add("default", file('this-is-yours-package-in-aar-format.aar')) 

    Bien sûr, d'autres projets doivent faire référence à ce nouveau module avec une directive de projet de compilation régulière. Donc, dans un projet qui utilise ce nouveau module qui est simple, un fichier .aar local a ceci dans build.gradle

     [...] dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' ompile 'com.android.support:appcompat-v7:23.1.0' compile 'com.android.support:design:23.1.0' [...] compile project(':name-of-module-created-via-new-module-option-described-above') } [...] 

    Ces jours-ci (plus d'un an après cette question) avec Android Studio> 1.0, la dépendance locale fonctionne correctement:

    • L'android sdk recherche les dépendances dans un compte local par défaut de: $ANDROID_HOME/extras/android/m2repository/
    • Dans un projet de bibliothèque locale, vous pouvez publier l'aar dans ce répertoire. Voici un extrait qui peut être ajouté au fichier build.gradle votre module (ex: sdk / build.gradle)

       apply plugin: 'maven' uploadArchives { repositories { mavenDeployer { repository(url: "file://localhost" + System.getenv("ANDROID_HOME") + "/extras/android/m2repository/") pom.version = '1.0-SNAPSHOT' pom.groupId = 'your.package' pom.artifactId = 'sdk-name' } } } 
    • Dans votre projet de bibliothèque, exécutez ./gradlew uploadArchives pour publier l'aar dans ce répertoire
    • Dans le projet d'application auquel vous souhaitez utiliser la bibliothèque, ajoutez la dépendance à votre projet / application / build.gradle. compile 'your.package:sdk-name:1.0-SNAPSHOT'

    Pour la dépendance locale, la prochaine compilation de gradle devrait trouver l'archive déployée précédemment et c'est tout!


    Dans mon cas, j'utilise ce qui précède pour le développeur local, mais j'ai également un serveur d'intégration continu Bamboo pour la bibliothèque qui publie chaque compilation dans un référentiel d'artefacts Nexus partagé. Le code de bibliothèque complet pour déployer l'artefact devient alors:

     uploadArchives { repositories { mavenDeployer { if (System.getenv("BAMBOO_BUILDNUMBER") != null) { // Deploy to shared repository repository(url: "http://internal-nexus.url/path/") { authentication(userName: "user", password: "****") } pom.version = System.getenv("BAMBOO_BUILDNUMBER") } else { // Deploy to local Android sdk m2repository repository(url: "file://localhost" + System.getenv("ANDROID_HOME") + "/extras/android/m2repository/") pom.version = '1.0-SNAPSHOT' } pom.groupId = 'your.package' pom.artifactId = 'sdk-name' } } } 

    Afin de dire aux applications à télécharger à partir de mon dépôt interne Nexus, j'ai ajouté le référentiel interne Nexus maven juste au-dessus de jcenter () dans les deux blocs "référentiels" du projet / build.gradle

     repositories { maven { url "http://internal-nexus.url/path/" } jcenter() } 

    Et la dépendance à l'application ressemble alors à compile 'your.package:sdk-name:45' Lorsque je met à jour la version 45 à 46, lorsque mon projet récupérera le nouvel objet du serveur Nexus.

    Il semble ajouter des fichiers .aar que la dépendance locale n'est pas encore prise en charge (Prévu pour être pris en charge dans 0.5.0 Beta)

    https://code.google.com/p/android/issues/detail?id=55863

    Mais la façon dont vous utilisez votre bibliothèque en dépendance ne fonctionnera que si votre bibliothèque se trouve sur le référentiel central maven ou dans le référentiel maven local.

    Reportez-vous à la section Comment utiliser le référentiel maven local pour utiliser .aar dans les dépendances du module.

    http://www.flexlabs.org/2013/06/using-local-aar-android-library-packages-in-gradle-builds

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.