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.
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:
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:
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.
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.
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.
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.
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.
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.
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.