web-dev-qa-db-fra.com

L'ajout de fichiers .aar locaux à la génération Gradle à l'aide de "flatDirs" ne fonctionne pas.

Je suis conscient de cette question: Ajout de fichiers .aar locaux à ma génération mais la solution ne fonctionne pas pour moi.

J'ai essayé d'ajouter cette instruction au niveau supérieur de mon fichier build.gradle:

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

J'ai également mis le fichier slidingmenu.aar dans /libs et l'ai référencé dans la section dependencies: compile 'com.slidingmenu.lib:slidingmenu:1.0.0@aar', mais cela n'a pas fonctionné du tout.

J'ai aussi essayé compile files('libs/slidingmenu.aar') mais sans succès.

Qu'est-ce que je rate? Des idées?

P.S. Android Studio 0.8.2

155
Alexey Dmitriev

En me basant sur la réponse de Josiah, voici comment je l’ai obtenue.

En suivant ses instructions (sous édition) (Fichier -> Nouveau-> Nouveau module -> Importer .JAR/.AAR) et importez votre fichier .AAR.

Ensuite, dans votre projet build.gradle (et non celui de niveau supérieur, celui sous "app"), ajoutez ce qui suit (dans la section des dépendances):

dependencies {
    compile project(':Name-Of-Your-Project')
}

Remarque Le nom de votre projet doit correspondre au nom du dossier ajouté après l'importation du fichier AAR (au même niveau que app/.idea sous le dossier le plus élevé). Ou pour le dire autrement ...

 MonApplication 
 .Idea 
 App 
 Build.gradle (voici où ajouter un projet de compilation (': NomProjet') à la section de dépendance) 
 NomProjet (ajouté automatiquement après l'importation, en faisant correspondre le nom de votre fichier aar) 
 construire 
 noter 
 etc. 

Cela a fonctionné pour moi sous Android Studio 0.8.0. N'oubliez pas de synchroniser gradle (à l'aide du bouton de la barre d'outils ou dans Fichier-> Synchroniser) après l'avoir fait.

(Merci à Josiah de m'avoir mis dans la bonne direction)

(Remarque: avant cela, j'avais essayé de l'ajouter au dossier libs, en essayant de manipuler le niveau supérieur build.gradle et le niveau d'application build.gradle, mais rien de tout cela ne fonctionnait pour mes fichiers aars - jar fonctionnera bien, mais pas les fichiers aar)

288
Ashton Engberg

Mise à jour : Comme @ amram99 l'a mentionné, le problème a été corrigé à compter de la sortie de Android Studio v1. 3.

Testé et vérifié avec les spécifications ci-dessous

  • Android Studio v1.3
  • gradle plugin v1.2.3
  • Gradle v2.4

Qu'est-ce qui fonctionne maintenant

  • Vous pouvez maintenant importer un fichier aar local via le fichier )> Nouveau> Nouveau module> Importer le package .JAR/.AAR option dans Android Studio v1.3

  • Cependant, la réponse ci-dessous reste vraie et efficace quels que soient les changements Android Studio, ceux-ci étant basés sur un script de gradation.


Ancienne réponse: Dans une récente mise à jour, les utilisateurs de Android ont interrompu l'inclusion de fichiers AAR locaux via l'ajout d'un nouveau Android Studio option de menu du module. Vérifiez le Issue répertorié ici. Indépendamment de tout ce qui entre et sort de la liste des fonctionnalités de l'IDE, la méthode ci-dessous fonctionne lorsqu'il s'agit de travailler avec des fichiers aar locaux (testé aujourd'hui):

Placez le fichier aar dans le répertoire libs (créez-le si nécessaire), puis ajoutez le code suivant dans votre build.gradle:

dependencies {
   compile(name:'nameOfYourAARFileWithoutExtension', ext:'aar')
 }
repositories{
      flatDir{
              dirs 'libs'
       }
 }
187
Nishant.

Edit: La manière correcte (actuellement) d'utiliser un fichier AAR local en tant que dépendance de construction consiste à utiliser l'assistant d'importation du module (Fichier | Nouveau module | Importer le package .JAR ou .AAR) qui sera automatiquement ajouté le .aar en tant que module de bibliothèque dans votre projet.

Ancienne réponse

Essaye ça:

allprojects {
  repositories {
    jcenter()
    flatDir {
      dirs 'libs'
    }
  }
}

...

compile(name:'slidingmenu', ext:'aar')
25
Josiah

Je travaille sur Android Studio 2.1. J'ai un module appelé "Native_Ads" qui est partagé entre plusieurs projets.

Tout d'abord, j'ai créé un répertoire dans mon module Native_ads avec le nom 'aars', puis j'y ai placé le fichier aar.

Structure du répertoire:

libs/
aars/    <-- newly created
src/
build.gradle
etc

Ensuite, les autres changements:

Fichier Gradle niveau supérieur:

allprojects {
    repositories {
        jcenter()
        // For module with aar file in it
        flatDir {
            dirs project(':Native_Ads').file('aars')
        }
    }
}

Fichier build.gradle du module d'application: - aucune modification

Fichier Settings.gradle (pour inclure le module):

include ':app'
include 'Native_Ads'
project(':Native_Ads').projectDir = new File(rootProject.projectDir, '../path/to/Native_Ads')

Fichier Gradle pour le module Native_Ads:

repositories {
    jcenter()
    flatDir {
        dirs 'aars'
    }
}
dependencies {
    compile(name:'aar_file_name_without_aar_extension', ext:'aar')
}

C'est ça. Nettoyer et construire.

14
Richard

Le moyen le plus simple consiste maintenant à l'ajouter en tant que module

enter image description here

Cela créera un nouveau module contenant le fichier aar, il ne vous reste plus qu'à inclure ce module en tant que dépendance par la suite.

7
Marian Klühspies

Vous pouvez le faire de cette façon. Il doit être au format maven:

repositories {
  maven { url uri('folderName')}
}

Et puis votre AAR doit aller dans une structure de dossiers pour un identifiant de groupe "com.example":

folderName/
  com/
    example/
       verion/
          myaar-version.aar

Puis référence comme dépendance:

compile 'com.example:myaar:version@aar'

version est la version de votre fichier aar (c.-à-d. 3.0, etc.)

5
agrosner

Voici ma structure et comment je résous ceci:

MyProject/app/libs/mylib-1.0.0.aar

MyProject/app/myModulesFolder/myLibXYZ

Sur build.gradle

à partir de Project/app/myModulesFolder/myLibXYZ

J'ai mis ceci:

repositories {
   flatDir {
    dirs 'libs', '../../libs'
  }
}
compile (name: 'mylib-1.0.0', ext: 'aar')

Fait et fonctionne bien, mon sous-module XYZ dépend de la bibliothèque du module principal.

4
lucasddaniel

Dans mon cas, aucune des réponses ci-dessus n'a fonctionné! depuis que j'ai eu différents productFlavors en ajoutant simplement repositories{ flatDir{ dirs 'libs' } }

n'a pas fonctionné! J'ai fini par spécifier l'emplacement exact du répertoire libs:

repositories{
flatDir{
    dirs 'src/main/libs'
}

}

Supposons qu’il faille introduire flatDir comme ceci quand il existe différents productFlavors dans build.gradle

3
MohammadReza

Pour ceux qui ont ce problème à partir de Android Studio 1.4, je dois le faire fonctionner en créant un module dans le projet qui contient 2 éléments.

  1. build.gradle avec le contenu suivant:

    configurations.create("default")

    artifacts.add("default", file('facebook-Android-sdk-4.7.0.aar'))

  2. le fichier aar (dans cet exemple 'facebook-Android-sdk-4.7.0.aar')

Ensuite, incluez la nouvelle bibliothèque en tant que dépendance de module. Vous pouvez maintenant utiliser un fichier construit sans inclure les sources dans le projet.

Crédit à Facebook pour ce hack. J'ai trouvé la solution en intégrant le Android SDK dans un projet.

3
Victor Ude

Dans mon cas, je viens de mettre le fichier aar dans les bibliothèques, et ajoute

dependencies { ... api fileTree(dir: 'libs', include: ['*.aar']) ... }

dans build.gradle et ça marche. Je pense que c'est similaire avec la dépendance générée par défaut:

implementation fileTree(dir: 'libs', include: ['*.jar'])

1
Glorin

Ajouter ci-dessous dans le projet d'implémentation du fichier d'application (chemin d'accès: ': nom du projet')

0
Dinesh.P

Cette ligne inclut tous les fichiers aar et jar du dossier libs:

implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs/')
0
ashakirov