web-dev-qa-db-fra.com

La dépendance de Gradle fournie est AAR pas JAR

J'ai un problème où j'essaie d'inclure une bibliothèque dans mon projet appelé ParseLoginUI

Le problème est qu'il utilise la balise fournie au lieu de compiler. Je pense que la balise fournie signifie que le projet doit fournir cette dépendance pour que la bibliothèque fonctionne plutôt que cette bibliothèque compilant les bibliothèques elle-même.

Donc, dans ma bibliothèque Android, il fait référence au SDK de Facebook.

 provided 'com.facebook.Android:facebook-Android-sdk:4.0.1'

Ensuite, dans mon mobile/build.gradle qui est mon module principal, je compile les sdks de Facebook comme ça.

compile 'com.facebook.Android:facebook-Android-sdk:4.0.1'

J'ai suivi le guide pour installer cette bibliothèque et voici comment vous êtes censé le faire. Voici l'avertissement que je reçois qui m'empêche de compiler dans le fichier ParseLoginUI/build.gradle (celui qui le fournit).

Warning:Project ParseLoginUI: provided dependencies can only be jars. com.facebook.Android:facebook-Android-sdk:aar:4.0.1 is an Android Library.

La documentation de cette bibliothèque a un correctif qui est:

Si vous utilisez Gradle 1.1.0 ou supérieur, vous pouvez rencontrer "Avertissement: Projet ParseLoginUI: les dépendances fournies ne peuvent être que des jarres. Com.facebook.Android:facebook-Android-sdk:aar : 4.0.1 est une bibliothèque Android ". Il s’agit d’une question ouverte de l’outil Android Gradle Build. Actuellement, Le workround utilise gradle 1.0.0.

Très bien, mais je ne veux pas rétrograder mon dégradé (fonctionnant actuellement en v1.2.3) juste pour résoudre ce problème. Il doit y avoir un moyen de contourner ceci ou un meilleur moyen de le faire.

Ma question

Comment puis-je inclure le SDK Facebook dans le module de bibliothèque et dans mon module principal?

21
StuStirling

vous avez déjà indiqué qu'il s'agissait d'un problème non résolu dans Gradle. Si vous utilisez ParseLoginUI en tant que module de bibliothèque. Modifiez simplement le fichier build.gradle dans ParseLoginUI lui-même.

    provided 'com.facebook.Android:facebook-Android-sdk:4.0.1'
                              to
    compile 'com.facebook.Android:facebook-Android-sdk:4.0.1'
7
sowmia

Essayez ceci: http://www.labouisse.com/how-to/2014/07/28/gradle-provided-scope-and-intellij/

Il imite fondamentalement l'implémentation fournie.

4
Rotemmiz

Selon ce problème , il devrait être possible de le faire avec le plugin Gradle 1.3.0-beta3. Vous devrez peut-être mettre à jour vos outils de génération vers la version 23.0.0 rc1 ou une version ultérieure.

2
EpicPandaForce

Après avoir essayé et commis une erreur, j'ai trouvé la solution…

Tout d'abord, AAR signifie bibliothèque d'archives Android, qui n'est pas un fichier JAR. J'ai cherché quelque chose appelé facebook-Android-sdk-4.0.1.jar, mais sans succès.

L'astuce consiste à télécharger le code facebook et à l'ajouter en tant que module. Cela fonctionne parfaitement et vous pouvez utiliser gradle 1.2.3 avec ParseLoginUI.

Allez ici: https://developers.facebook.com/docs/Android/downloads

Télécharger: https://developers.facebook.com/resources/facebook-Android-sdk-4.0.1.Zip Décompressez-le.

Allez dans votre propre projet. - Supprimez dans votre graduation ParseLoginUI la référence à Parse

Appuyez sur FILE, NEW, IMPORT MODULE.

Sélectionnez un dossier appelé facebook qui se trouve dans le zip que vous avez décompressé.

Appelez ce module facebook-Android-sdk-4.0.1.

Ajoutez maintenant dans votre parseloginui une dépendance à ce module, en utilisant:

compile project(':facebook-Android-sdk-4.0.1’)

Vous devez également copier un fichier du zip que vous avez téléchargé dans le nouveau dossier du module, le fichier est gradle.properties. Celui qui a:

Android_BUILD_MIN_SDK_VERSION=9

Android_BUILD_TARGET_SDK_VERSION=21

Android_BUILD_TOOLS_VERSION=21.1.2

Android_BUILD_SDK_VERSION=21

C'est tout.

Appuyez sur SYNCHRONIZE et croisez les doigts.

J'ai travaillé dans mon cas après avoir passé plusieurs heures à jouer avec Gradle et Android Studio. le jar référence correctement à vos modules. (Je les ai écrits manuellement et il semble que ce soit une erreur dans mes références d'analyse, probablement un chemin ou un symbole, je ne le sais pas. Faites-le en utilisant l'interface utilisateur d'Android Studio Le problème sera résolu). BTW, vous pouvez utiliser une version de parse dans ParseLoginUI et une autre plus récente dans votre projet (je n’ai pas testé cela pour la version facebook).

Voici ce que j'ai dans mon fichier de graduation ParseLoginUI:

compile 'com.parse.bolts:bolts-Android:1.2.0'

compile 'com.Android.support:support-v4:22.0.0'

compile project(':facebook-Android-sdk-4.0.1')

compile files('libs/Parse-1.9.1.jar')

compile files('libs/ParseFacebookUtilsV4-1.9.1.jar')

Et voici ce que j'ai dans mon application:

compile 'com.google.Android.gms:play-services:7.5.0'

compile project(':facebook-Android-sdk-4.0.1')

compile 'com.parse.bolts:bolts-Android:1.2.0'

compile files('libs/Parse-1.9.2/Parse-1.9.2.jar')

compile files('libs/Parse-1.9.2/ParseFacebookUtilsV4-1.9.2.jar')

compile project(':ParseLoginUI’)

Remarque: J'utilise Gradle version 2.4 et la version 1.2.3 du plugin Android. Sélectionnez cela dans FICHIER, STRUCTURE DU PROJET, PROJET.

Bonne chance.

2
Ricardo

Vous pouvez essayer cette syntaxe:

fourni (nom: "", ext: 'aar')

Assurez-vous que votre build.gradle principal a le chemin ou le référentiel maven du paquet aar que vous voulez fournir.

1
bduhbya

J'ai eu ce problème avec la calligraphie (github.com/chrisjenx/Calligraphy) et le grade 2.3.3. J'ai changé le référentiel de jcenter () à mavenCentral () et maintenant ça va!

0
Golnar

au lieu de,

  1. Cloner ParseLoginUI de ici

  2. Importer ParseLoginUI en tant que module et les inclure dans gradle 

    compile project(':ParseLoginUI')
    compile 'com.facebook.Android:facebook-Android-sdk:4.0.1'
    

J'espère que cela t'aides

0
Rasika Sugathadasa