J'essaye de construire un projet Android qui a des dépendances. Les fichiers jar sont dans le répertoire lib /. Je peux construire le projet en ajoutant ce fichier jar à mon classpath, mais bien sûr, Force Closes dans l'émulateur car ces bibliothèques ne sont pas présentes. Je le fais depuis la ligne de commande avec ant (et non en eclipse). Comment puis-je faire inclure ces bibliothèques dans l'apk à partir de la ligne de commande?Comment ajouter des bibliothèques de jar externes à un projet android à partir de la ligne de commande
Répondre
réponse de Jay K était juste au moment de l'écriture, mais maintenant le SDK a changé, et voici la nouvelle façon de le faire:
Ajoutez la ligne suivante à ant.properties
:
jar.libs.dir=lib
Testé, fonctionne où external.libs.dir ne fonctionne pas.
Cela a changé in December 2010 puis à nouveau en Octobre 2011.
à la compilation faire:
javac -encoding ascii -target 1.5 -d bin/classes \
-bootclasspath $SDKDIR/android.jar src/some/project/* -classpath=libs/*.jar
Et, lorsque vous générez le bytecode pour Dalvik:
dx --dex --output=bin/classes.dex bin/classes libs/*.jar
Aussi, lorsque vous conditionnez le fichier APK:
apkbuilder bin/something.apk -z bin/projectname.ap_ \
-f bin/classes.dex -rf src -rj libs
Je suppose que vous utilisez Linux ... sur Windows sera presque le même.
répondre à ma propre question:
J'ai créé un fichier "build.properties" et a ajouté la ligne
external.libs.dir=lib
Ce fut une coup de chance, vraiment.
Lorsque je fais cela, ant crée un répertoire "libs". Si je mets les bocaux à l'intérieur, ça fonctionne. Malheureusement, j'ai besoin d'utiliser "lib", car tout le monde a configuré "lib" dans Eclipse. Et cette solution ne fonctionne pas pour moi: -/ –
Mais, si j'ai besoin d'ajouter deux bibliothèques de dossiers séparés? Ce que j'ai besoin de faire? – RagnarR
external.libs.dir=lib
après 2 heures de recherche de cette réponse, cela a fonctionné pour moi. Le fichier jar dans mon répertoire libs compile enfin ET est livré avec l'APK.
Si vous stockez vos bibliothèques dans $ {basedir}/libs, le script ant sera capable de les trouver. J'ai regardé le script ant actuel ($ {sdk.dir} /tools/ant/build.xml) et il définit jar.libs.dir à "libs".
FYI, le script de la fourmi est bien documenté, donc il est facile de le suivre. Si vous déplacez les bibliothèques, assurez-vous de modifier vos fichiers .classpath pour éviter que les utilisateurs d'Eclipse ne souffrent inutilement.
pots de vente dans ${YOUR_PROJECT}/libs
répertoire
La propriété jar.libs.dir
est un seul répertoire. Ce n'est pas comme un CLASSPATH qui est une liste séparée par deux points-virgules. La façon d'avoir plusieurs répertoires dans votre jar.libs.dir est de ne pas le définir directement; laissez-le par défaut à libs
et allez dans libs et créez les liens souples requis vers les fichiers .jar dont vous avez besoin.
Juste pour référence future: En ce moment il y a un bogue dans le SDK qui empêche d'utiliser jar.libs.dir: http://code.google.com/p/android/issues/detail?id=33194
Une solution simple à utiliser jar.libs.dir à nouveau (en attendant le bug pour obtenir fixe), est d'ajouter cet objectif dans le fichier build.xml:
<target name="-pre-compile">
<path id="project.all.jars.path">
<path path="${toString:project.all.jars.path}"/>
<fileset dir="${jar.libs.dir}">
<include name="*.jar"/>
</fileset>
</path>
</target>
vous ne pouvez pas écraser le fichier project.all.jars.path comme dans votre exemple. Il en résultera une exception de pointeur nul au cours du processus de construction de fourmis car vous redéfinissez project.all.jars.path pour que $ {toString: project.all.jars.path} évalue à null. La façon correcte de faire ceci est d'introduire un temp.jars.path dans lequel vous incluez le nouveau répertoire jars, et ensuite vous écrasez le project.all.jars.path avec temp.jars.path –
l'exemple ci-dessus ne marche pas travailler tout à fait raison. Vous ne pouvez pas remplacer le project.all.jars.path en ligne. Voici un exemple de travail:
<target name="-pre-compile">
<!-- HACK to add the android-support-v4.jar to the classpath directly from the SDK -->
<echo>ORIGINAL jars.path : ${toString:project.all.jars.path}</echo>
<path id="project.all.jars.path.hacked">
<path path="${toString:project.all.jars.path}"/>
<path path="${sdk.dir}/extras/android/support/v4/android-support-v4.jar"/>
</path>
<path id="project.all.jars.path">
<path path="${toString:project.all.jars.path.hacked}"/>
</path>
<echo>HACKED jars.path : ${toString:project.all.jars.path}</echo>
</target>
- 1. Comment ajouter des fichiers jar externes au projet de meuleuse
- 2. Comment ajouter des bibliothèques Jar à un projet IntelliJ Idea SBT Scala?
- 3. Problèmes de ligne de commande Java avec les bibliothèques .jar
- 4. Comment ajouter des en-têtes HTTP personnalisés à IIS à partir de la ligne de commande
- 5. Ajouter un fichier Jar à Buildpath dans la ligne de commande Windows
- 6. Construire le projet android à partir de la ligne de commande
- 7. Comment ajouter les bibliothèques JJIL à mon projet Android Eclipse?
- 8. Ajouter un projet JAR à éclipse
- 9. ouvrir un projet Eclipse spécifique à partir de la ligne de commande
- 10. Comment puis-je publier un projet ASP.NET MVC à partir de la ligne de commande?
- 11. envoyer des valeurs à partir de la ligne de commande?
- 12. Importation de fichiers JAR externes
- 13. Comment exécuter des fichiers .class sur des fenêtres à partir de la ligne de commande?
- 14. android ligne de commande
- 15. android: Ajouter un fichier JAR externe à android
- 16. Puis-je créer un projet multi-langage Delphi à partir de la ligne de commande?
- 17. Comment créer SQLite3 à partir de la ligne de commande?
- 18. Erreurs de lien VCBuild à partir de la ligne de commande
- 19. Création d'un projet maven avec des bibliothèques JNI externes
- 20. Comment puis-je faire un seul commit SVN sur plusieurs externes à la ligne de commande?
- 21. Créer un projet XCode à partir de la ligne de commande?
- 22. Rubygems plus faciles à partir de la ligne de commande?
- 23. Visual Studio. Publier un projet à partir de la ligne de commande
- 24. Comment démarrer l'unité de test Android à partir de la ligne de commande
- 25. "Bibliothèques référencées" -collapsable disparu lors de la vérification du projet Eclipse à partir de SVN
- 26. compiler java à partir de la ligne de commande
- 27. Ajout de fichiers à un MSI, à partir de la ligne de commande?
- 28. Comment ajouter un répertoire de classes java à un projet?
- 29. Comment arrêter/démarrer des applications EJB dans JBOSS 6.0 à partir de la ligne de commande
- 30. Utilisation de GDB avec des bibliothèques externes
comment puis-je déclarer plusieurs répertoires? Quel est le séparateur? – Taranfx
Il n'y en a pas. C'est "jar.libs.dir" pas "jar.libs.dirs". Vous ne pouvez spécifier qu'un seul répertoire. Mais dans ce répertoire, vous pouvez créer un lien vers autant de bocaux que vous le souhaitez. –