web-dev-qa-db-fra.com

Bibliothèques Android dans Android Studio

Quelqu'un a-t-il compris/découvert comment les bibliothèques Android sont censées fonctionner dans Android Studio?

Je n'ai pas encore trouvé de documentation à ce sujet (la documentation sur le site de développement Android est incroyablement dénudée) et j'observe que, selon la manière dont j'ai créé le projet de bibliothèque, les résultats sont complètement différents.

Si j'importe une bibliothèque depuis Eclipse (en suivant les recommandations du site Web pour exporter d'abord vers Gradle), je me retrouve avec un nouveau projet + module contenant le projet de bibliothèque. Cela ne semble pas tout à fait correct (un projet intellij = un espace de travail Eclipse), et tenter de le compiler/le rendre dans intellij génère de nombreuses erreurs (le projet de bibliothèque ne trouve pas les bibliothèques de support Android).

Si je crée un nouveau projet à partir de rien avec un module de bibliothèque, je reçois un projet de bibliothèque Android avec un fichier build.gradle.

Si je crée un nouveau module à partir d'un projet (en cliquant avec le bouton droit de la souris sur le projet), je reçois une bibliothèque Android construite avec Ant. Cela compile bien, mais semble très étrange. Certes, il n’est pas prévu d’utiliser Ant pour les bibliothèques Android dans Android Studio. Créer un nouveau module de bibliothèque en utilisant Fichier> Nouveau module ne semble pas fonctionner, incidemment. Il crée simplement une nouvelle application à la place.

Quelqu'un at-il pris des informations pour donner un sens à cela? Je n'ai pas non plus trouvé d'emplacement permettant de spécifier les bibliothèques à utiliser dans quels modules d'application. Je comprends que ceci est une version d’aperçu, mais j’ai du mal à croire qu’une fonctionnalité essentielle telle que les bibliothèques Android est si mal prise en charge. Qu'est-ce que je rate?

Mise à jour du 2014-04-09:

J'ai donc pris un nouveau tour avec Android Studio cette semaine. Et bien que les problèmes actuels soient différents de ceux que j’avais écrits au début, c’est un problème tout à fait incroyable. Je n'ai toujours pas trouvé de bonne explication à l'utilisation de bibliothèques Android dans plusieurs projets AS (y compris les bibliothèques imbriquées). Certaines des suggestions que j'ai déjà vues recommandent de copier le code dans plusieurs emplacements, ce qui va totalement à l'encontre de l'objectif d'une bibliothèque. 

Je ne comprends tout simplement pas ce que Google pense avec Android Studio ... C'est dommage, car il semble être un excellent outil, mais l'absence de traitement intuitif, élément aussi fondamental que la réutilisation du code, est un gros problème pour moi (tant pis coder spécifiquement pour Android devient de moins en moins attrayant, par rapport aux outils de développement inter-plateformes en constante amélioration).

21
Michael A.

Pour le plaisir de tous, voici ce que je fais pour "résoudre" ce problème. C'est très loin d'une solution élégante, IMO, mais c'est la solution la plus proche que j'ai trouvée pour traiter mon problème (réutiliser des bibliothèques Android) dans Android Studio avec Git.

L'idée de base est d'utiliser des sous-modules Git. Chaque bibliothèque a son propre référentiel Git. 

  1. Créez maLibrary en tant que module, puis validez-la dans un référentiel.
  2. À partir du référentiel racine du projet, je fais un git submodule add pour récupérer la bibliothèque.
  3. Dans settings.gradle, j'ajoute: include ':myLibrary' et synchronise le projet.
  4. Paramètres du module >> Dépendances >> + Dépendance du module et ajoutez une dépendance au module, le cas échéant.

C’est loin de la simple élégance de travailler avec les bibliothèques Android dans Eclipse, mais cela fonctionne à la mode. Points à garder à l'esprit:

  • souvenez-vous de tirer souvent pour tirer les modifications (puis engagez le projet principal à se synchroniser avec les modifications du sous-module).
  • souvenez-vous de git Push à partir du répertoire du module vers remote, si vous avez validé les modifications apportées à la bibliothèque.

Le VCS intégré devrait être en mesure d’aider ici, mais comme c’est assez floconneux pour moi, je préfère le faire moi-même à partir d’un terminal maintenant.

J'espère que cela t'aides.

0
Michael A.

Si vous souhaitez utiliser des bibliothèques supplémentaires dans votre Android Studio projet:

  1. Copiez votre bibliothèque .jar dans le dossier libs de votre projet.
  2. Faites un clic droit sur la bibliothèque et choisissez "Ajouter en tant que bibliothèque"
  3. Dans build.gradle remplacer

    compiler des fichiers ('libs/Android-support-v4.jar')

avec

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

Si cela ne fonctionne toujours pas, accédez au dossier racine de votre projet avec notre terminal et exécutez une commande gradlew clean.

12
JustMeh

Intellij est différent d’Eclipse en ce que votre "espace de travail" n’est dédié qu’à un "projet". Chaque projet est composé de plusieurs modules. Et ces modules peuvent eux-mêmes avoir leur propre projet/application/bibliothèque.

Donc, un module est un peu l'équivalent d'un projet Eclipse.

Aller à: Fichier-> Structure du projet-> Modules

Et ajoutez la bibliothèque Android en tant que module, vous pouvez déclarer qu'elle se trouve dans la bibliothèque Android et en faire une dépendance de votre 'projet' (module d'application).

2
Blundell

Configuration multi-projets est ce que vous cherchez, je pense. Au début, je ne me concentrerais pas trop sur le logiciel Android Studio. Concentrez-vous sur l’obtention des fichiers de classement, puis "synchronisez" le module pour mettre à jour Android Studio. (Je devais parfois le redémarrer pour que la section "Variantes de construction" se mette à jour avec de nouvelles versions.)

@Xav a suggéré dans une réponse Google+ ce qui suit: 

Le projet de haut niveau existe si vous souhaitez ajouter de nouveaux modules ultérieurement (projet de bibliothèque). Il est plus facile de créer un premier projet avec un seul module la première fois que de créer un projet simple et de le convertir ultérieurement lors de l'ajout de modules.

Deux choses principales à souligner, dans votre fichier settings.gradle, vous listeriez les modules: app et: library; le plug-in "Android" est également utilisé pour l'application, mais le plug-in "Android-library" doit être utilisé pour les modules de la bibliothèque.

Si vous êtes capable d'assembler ./gradlew à partir de la ligne de commande, Android Studio doit alors mettre à jour les paramètres appropriés à la prochaine ouverture du projet ou lors de la synchronisation.

1
GrkEngineer

Attachez la bibliothèque Android au studio Android. Si vous avez une idée de la bibliothèque, ajoutez-le directement, par exemple.

(c'est la bibliothèque picasso)

compile 'com.squareup.picasso:picasso:2.3.2'

Si vous souhaitez créer notre propre bibliothèque, suivez ces étapes.

  1. Cliquez sur le menu Fichier
  2. Choisissez Nouveau module et sélectionnez Bibliothèque Android.

  3. Déclarez le nom de la bibliothèque et le nom du paquet.

Enfin, votre bibliothèque a été créée et vous pouvez l’utiliser facilement.

  1. Cliquez sur Fichier et ensuite cliquez sur Structure du projet  
  2. Cliquez sur Dépendances Tabulation dans une petite fenêtre et cliquez sur le bouton Couleur verte. 

  3. Et sélectionnez la dépendance du module, vous pouvez voir votre fichier de bibliothèque.

  4. sélectionnez la bibliothèque et ok

0
Ramkailash

À la minute près, vous devez configurer votre fichier build.gradle pour utiliser les fichiers JAR avec Android Studio ou vous vous retrouvez avec le redoutable NoClassDefException au moment de l'exécution. Voir mon répondre ici pour quelques conseils pour faire fonctionner les librairies de bocaux. Vous pouvez également définir des dépendances Maven directement dans ce build.gradle qui est très pratique.

0
lepoetemaudit