web-dev-qa-db-fra.com

Ajout d'une bibliothèque / d'un fichier JAR à un projet Eclipse Android

Il s'agit d'une question en deux parties sur l'ajout d'une bibliothèque tierce (JAR) à un projet Android dans Eclipse.

La première partie de la question est la suivante: lorsque j'essaie d'ajouter un fichier JAR tiers (bibliothèque) à mon projet Android, le problème de

Erreur d’analyse XML: préfixe indépendant

parce que j'essaie d'utiliser une classe de ce fichier JAR (et que le préfixe est défini d'une manière ou d'une autre). Que se passe-t-il?

Deuxièmement, (après avoir corrigé cela - la réponse est donnée ci-dessous), mon application ne fonctionne pas sur Android et je découvre via le débogueur (LogCat) que la classe que je tente de consommer ne fonctionne pas. exister.

Causée par: Java.lang.ClassNotFoundException: com.github.droidfu.widgets.WebImageView ...

Pourquoi, quand je n’obtiens aucune erreur de compilation ou d’éditeur de liens dans Eclipse, ce problème at-il un problème sur l’émulateur?

Ces deux questions sont rhétoriques car je vais y répondre moi-même ci-dessous. D'autres messages dans ce forum se glissent dans le problème et ailleurs, il y a une discussion, mais je pense que je peux être plus explicitement utile pour le prochain type à venir.

129
Russ Bateman

Passons maintenant au problème de classe manquant.

Je suis un développeur Eclipse Java EE et je suis habitué depuis de nombreuses années à ajouter des bibliothèques tierces via le mécanisme "Bibliothèque d'utilisateur" du chemin de construction. Bien sûr, il existe au moins 3 façons d’ajouter une bibliothèque tierce, celle que j’utilise est la plus élégante, à mon humble avis.

Toutefois, cela ne fonctionnera pas pour Android, dont la "JVM" Dalvik ne peut pas gérer une classe ordinaire compilée en Java, mais doit la convertir en un format spécial. Cela ne se produit pas lorsque vous ajoutez une bibliothèque de la manière habituelle.

Suivez plutôt les instructions (largement disponibles) pour importer la bibliothèque tierce, puis ajoutez-la à l'aide du chemin de construction (qui le fait connaître à Eclipse à des fins de compilation). Voici le pas à pas:

  1. Téléchargez la bibliothèque sur votre système de développement hôte.
  2. Créez un nouveau dossier, libs, dans votre projet Eclipse/Android.
  3. Cliquez avec le bouton droit de la souris sur libs et choisissez Importer -> Général -> Système de fichiers, puis Suivant, parcourez le système de fichiers pour trouver le répertoire parent de la bibliothèque (c'est-à-dire où vous l'avez téléchargée).
  4. Cliquez sur OK, puis sur le nom du répertoire (pas la case à cocher) dans le volet de gauche, puis vérifiez le fichier JAR correspondant dans le volet de droite. Cela met la bibliothèque dans votre projet (physiquement).
  5. Cliquez avec le bouton droit de la souris sur votre projet, choisissez Chemin de construction -> Configurer le chemin de construction, puis cliquez sur l'onglet Bibliothèques, puis sur Ajouter des JAR ..., accédez à votre nouveau JAR dans le répertoire libs et ajoutez-le. (C'est d'ailleurs le moment où votre nouveau JAR est converti pour une utilisation sur Android.)

REMARQUE

L'étape 5 peut ne pas être nécessaire si la bibliothèque est déjà incluse dans votre chemin de construction. Assurez-vous simplement qu'il existe avant de l'ajouter.

Ce que vous avez fait ici accomplit deux choses:

  1. Inclut un fichier JAR converti par Dalvik dans votre projet Android.
  2. Permet à Eclipse de disposer des définitions Java afin de rechercher les classes tierces lors du développement (c'est-à-dire de la compilation) du code source de votre projet.
315
Russ Bateman

Assurez-vous que vos fichiers JAR tiers se trouvent dans le dossier "libs" de vos projets et qu'ils seront placés dans le fichier .apk lors de la mise en package de votre application. Vous pouvez voir des erreurs d’exécution sur le périphérique si quelque chose dans le fichier jar n’est pas pris en charge, mais cela mis à part, j’ai eu un grand succès.

20
Paul Gregoire

Mise en place d'un projet de bibliothèque

Un projet de bibliothèque est un projet standard Android. Vous pouvez donc en créer un nouveau comme vous le feriez pour un nouveau projet d'application.

Lorsque vous créez le projet de bibliothèque, vous pouvez sélectionner n’importe quel nom d’application, package et définir d’autres champs selon les besoins, comme illustré à la figure 1.

Ensuite, définissez les propriétés du projet pour indiquer qu'il s'agit d'un projet de bibliothèque:

Dans l'explorateur de packages, cliquez avec le bouton droit de la souris sur le projet de bibliothèque et sélectionnez Propriétés. Dans la fenêtre Propriétés, sélectionnez le groupe de propriétés "Android" à gauche et localisez les propriétés de la bibliothèque à droite. Cochez la case "sa bibliothèque" et cliquez sur Appliquer. Cliquez sur OK pour fermer la fenêtre Propriétés. Le nouveau projet est maintenant marqué en tant que projet de bibliothèque. Vous pouvez commencer à y déplacer le code source et les ressources, comme décrit dans les sections ci-dessous.

5
koke

Si vous utilisez la version 22 d'ADT, vous devez vérifier les dépendances Android et les bibliothèques privées Android dans l'onglet Ordre et exportation du chemin de génération du projet.

4
ajaykoppisetty

Premièrement, le problème du préfixe manquant.

Si vous consommez quelque chose dans votre fichier de mise en page provenant d'un tiers, vous devrez peut-être également utiliser son préfixe, quelque chose comme "droidfu:" qui apparaît à plusieurs endroits dans la construction XML ci-dessous:

<com.github.droidfu.widgets.WebImageView Android:id="@+id/webimage"
          Android:layout_width="75dip"
          Android:layout_height="75dip"
          Android:background="#CCC"
          droidfu:autoLoad="true"
          droidfu:imageUrl="http://www.Android.com/images/opensourceprojec.gif"
          droidfu:progressDrawable="..."
          />

Cela sort du fichier JAR, mais vous aurez aussi besoin d'ajouter le nouveau "xmlns: droidfu"

<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
      xmlns:droidfu="http://github.com/droidfu/schema"
      ...>

ou vous obtenez l'erreur de préfixe non liée. Pour moi, c'était un échec pour copier et coller tous les exemples fournis à partir des pages de la bibliothèque tierce.

2
Russ Bateman

Erreur d’analyse XML: préfixe indépendant

La ressource '/ playteddy/res' n'existe pas.

J'ai eu les deux erreurs ci-dessus et finalement je l'ai résolu.

Cliquez avec le bouton droit de la souris sur votre projet -> propriétés -> Java chemin de construction -> googleadmobadsdk (sélectionnez-le et mettez-le en haut), puis exécutez et le problème est résolu. Il est résolu mon erreur d'exécution.

1
sujan

Accédez au chemin de construction dans Eclipse, puis cliquez sur commande et export, puis vérifiez la bibliothèque/jar, puis cliquez sur le bouton haut pour le déplacer en haut de la liste et le compiler en premier.

0
Sam Adamsh

Placez la source dans un dossier situé en dehors de votre espace de travail. Faites un clic droit dans l'explorateur de projet et sélectionnez "Importer ..."

Importez le projet dans votre espace de travail en tant que projet Android. Essayez de le construire et assurez-vous qu'il est marqué en tant que projet de bibliothèque. Assurez-vous également qu'il est construit avec le support de Google API, sinon vous obtiendrez des erreurs de compilation.

Cliquez ensuite avec le bouton droit de la souris sur votre projet principal dans l’explorateur de projets. Sélectionnez Propriétés, puis sélectionnez Android à gauche. Dans la section bibliothèque ci-dessous, cliquez sur "Ajouter" ..

La bibliothèque mapview-balloons devrait maintenant être disponible pour être ajoutée à votre projet.

0
Leander