1077 votes

Android Studio : Ajouter jar comme bibliothèque ?

J'essaie d'utiliser le nouveau Android Studio mais je ne parviens pas à le faire fonctionner correctement.

J'utilise le Gson pour sérialiser/désérialiser les objets JSON. Mais cette bibliothèque n'est pas incluse dans la compilation.

J'avais créé un nouveau projet avec juste un Activité principale . Copié gson-2.2.3.jar dans le dossier /libs et l'a ajouté comme dépendance de bibliothèque (clic droit->Ajouter comme bibliothèque). Cela inclut le jar dans Android studio afin qu'il puisse être référencé à partir des fichiers sources.

Lorsque j'essaie d'exécuter le projet, il ne peut pas compiler alors j'ai ajouté :

compile files('libs/gson-2.2.3.jar')

aux dépendances dans le fichier .gradle. Après cela, la compilation est correcte, mais lors de l'exécution de l'application, j'obtiens un message d'erreur. ClassDefNotFoundException .

Quelqu'un sait-il ce que je fais mal ?

0 votes

4 votes

Bien que cela ne résolve pas le problème, il s'agit juste de signaler que "compile" a été déprécié en faveur de "implementation".

1557voto

The App Chaps Points 3999

Je me suis battu avec la même chose pendant de nombreuses heures, en essayant de faire fonctionner le bocal Gson, rien de moins. J'ai finalement réussi à le faire - voici les étapes que j'ai suivies :

  1. Mettez le jar de Gson (dans mon cas, gson-2.2.4.jar ) dans le libs dossier

  2. Faites un clic droit dessus et cliquez sur "Ajouter comme bibliothèque".

  3. Veiller à ce que compile files('libs/gson-2.2.4.jar') est dans votre build.gradle (ou compile fileTree(dir: 'libs', include: '*.jar') si vous utilisez de nombreux fichiers jar)

    Editer : Utiliser implementation files('libs/gson-2.2.4.jar') (o implementation fileTree(dir: 'libs', include: '*.jar') ) dans Android Studio 3.0+.

  4. Faites une construction propre (vous pouvez probablement faire cela dans Android Studio, mais pour être sûr, j'ai navigué dans un terminal vers le dossier racine de mon application et j'ai tapé gradlew clean . Je suis sur Mac OS X, la commande peut être différente sur votre système.

Après avoir effectué les quatre opérations ci-dessus, il a commencé à fonctionner correctement. Je pense que l'étape "Ajouter à la bibliothèque" était celle que j'avais manquée auparavant, et elle ne fonctionnait pas non plus avant que je ne la nettoie.

[Editer - ajouter le build.gradle étape qui est également nécessaire comme d'autres l'ont souligné].

3 votes

Vous êtes mon héros ! J'ai lancé gradlew.bat clean sur les deux répertoires de mon projet avec un fichier build.gradle, et ça a marché !

0 votes

Content que ça se soit arrangé. Je viens juste d'essayer d'ajouter un autre bocal et j'ai eu le même problème - j'ai définitivement besoin de l'option compile files en build.gradle à l'intérieur et qu'il faut nettoyer avec gradlew . Rebuild Project d'Android Studio ne semble pas faire le nettoyage correctement.

0 votes

A résolu mon problème à 100% également ! Merci David !

279voto

ZenBalance Points 1734

Voici les instructions pour ajouter un fichier jar local comme bibliothèque à un module :

  1. Créez un dossier 'libs' au niveau supérieur du répertoire du module (le même répertoire que celui qui contient le répertoire 'src').

  2. Dans le build.gradle file ajoutez ce qui suit pour que votre fermeture de dépendances ait :

    dependencies {
        // ... other dependencies
        compile files('libs/<your jar's name here>')
    }
  3. Android Studio devrait avoir déjà configuré un wrapper gradlew. À partir de la ligne de commande, naviguez jusqu'au niveau supérieur de votre projet (le répertoire qui possède un nom de fichier gradlew ).

    Exécuter ./gradlew assemble . Cela devrait compiler le projet avec la bibliothèque. Vous devrez peut-être corriger des erreurs dans votre fichier build.gradle si nécessaire.

  4. Pour qu'Android Studio reconnaisse les fichiers jar locaux comme des bibliothèques à prendre en charge lors du codage dans l'EDI, vous devez suivre quelques étapes supplémentaires :

    4.1. Cliquez à droite sur le module dans le panneau de gauche et choisissez Open Library Settings .

    4.2. Dans le panneau gauche de la boîte de dialogue, choisissez Libraries .

    4.3. Cliquez sur le bouton + au-dessus du panneau, le deuxième à partir de la gauche -> Java

    Menu

    4.4. Sélectionnez votre jar local et ajoutez-le au projet.

  5. Vous devrez peut-être exécuter le programme ci-dessus ./gradlew commande une fois de plus

0 votes

Cela a fonctionné pour moi. J'ai Android Studio version 1.2 Build 141.1890965, sur Ubuntu. Pourquoi dites-vous "à partir d'Android Studio 2.5" ? Est-ce une version différente sur Windows/Mac ? (1a) Trouver cela a été difficile. Le menu déroulant se trouve en haut à gauche de la zone de structure du projet. Il faut sélectionner "Project" plutôt que "Android" et développer "app". (1b) Aucune option "Ajouter" n'est apparue, mais "Coller" a fonctionné. (2) J'avais une ligne "compile fileTree(dir : 'libs', include : ['*.jar'])", mais j'ai dû ajouter votre ligne unique explicite. (4, 5) pas nécessaire une fois (3) fait avec succès. Merci !

0 votes

"le panneau de gauche" ? Voulez-vous dire le panneau du projet ? Cela peut être n'importe où... Avec Android Studio 2.3.3 je ne trouve pas les Library Settings mais ajouter le jar aux Dependencies dans les Module Settings semble être la même chose...

0 votes

Pour mac, si vous n'avez pas gradle : $ brew install gradle si vous obtenez " ./gradlew : Permission denied" , vous devez exécuter $ chmod 755 gradlew Puis vous pouvez exécuter $ ./gradlew assemble

49voto

saneryee Points 91

Dans Android Stuido, j'aime utiliser Gradle pour gérer la librairie Gson.

Ajoutez la dépendance ci-dessous dans votre fichier build.gradle.

repositories {mavenCentral()}

dependencies {compile 'com.google.code.gson:gson:2.2.4'}

Tout va bien.

Vous pouvez également consulter ce post. La meilleure façon d'intégrer une bibliothèque tierce dans Android studio

0 votes

Cette méthode est la meilleure car elle utilise maven.

1 votes

N'oubliez pas de mettre à jour le numéro de version :) Pour l'instant, il s'agit de la version 2.3.1. lien

49voto

Jukurrpa Points 1169

IIRC, la simple utilisation de "Add as library" n'est pas suffisante pour qu'il compile avec le projet.

Vérifiez L'aide d'Intellij sur l'ajout de bibliothèques à un projet

La partie qui devrait vous intéresser le plus est la suivante :

(En File > Project Structure ) Ouvrez les paramètres du module et sélectionnez l'onglet Dépendances.

Dans l'onglet Dépendances, cliquez sur ajouter et sélectionnez Bibliothèque.

Dans la boîte de dialogue Choose Libraries, sélectionnez une ou plusieurs bibliothèques et cliquez sur Add Selected.

Si la bibliothèque n'apparaît pas dans la boîte de dialogue, ajoutez-la dans les paramètres des bibliothèques, juste en dessous de Modules.

Vous ne devriez pas avoir besoin d'ajouter compile files() plus, et la bibliothèque devrait être correctement ajoutée à votre projet.

0 votes

Ajouter comme bibliothèque ajoute déjà le bocal de la même manière. Je pense donc que le résultat est le même. Je vais essayer plus tard.

0 votes

Je suis dans le même bateau que vous Ozzie - EXACTEMENT le même problème.

0 votes

D'accord, je pensais que Ajouter comme bibliothèque ne faisait que l'ajouter à la liste des bibliothèques et ne l'ajoutait pas aux dépendances du module.

36voto

user2084396 Points 121

L'option 'compiler les fichiers...' fonctionnait pour moi, mais plus maintenant. Après bien des efforts, j'ai découvert que l'utilisation de cette option fonctionne :

compile fileTree(dir: 'libs', include: '*.jar')

Je n'ai aucune idée de la raison pour laquelle cela a fait une différence, mais, au moins, cette foutue chose fonctionne maintenant.

1 votes

Cela fonctionne pour moi, mais j'ai récemment constaté que parfois AS ne prend pas en compte les jars nouveaux/mises à jour jusqu'à ce que vous fassiez une synchronisation gradle.

0 votes

Rappelez-vous que "compiler" a été déprécié au profit de "implémenter".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X