2010-04-08 4 views
6

Je souhaite ajouter un fichier jar tiers externe dans l'application Android intégrée.Ajout d'une référence de jar externe dans Android.mk

J'ai ajouté la variable LOCAL_CLASSPATH dans Android.mk en raison de laquelle la compilation se passe bien. Mais pendant l'exécution, il n'est pas capable de trouver la définition de classe qui se trouve dans le fichier JAR.

Quelle est la variable que je dois définir pour ajouter les fichiers JAR tiers dans le fichier .dex/.apk?

TIA.

Répondre

12

Voici ce que j'utilisé pour résoudre le problème:

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := path_to_jar_file.jar 
include $(BUILD_MULTI_PREBUILT) 

Cela devrait être ajouté dans Android.mk après include $(BUILD_PACKAGE)

Vous devez également préciser le nom de la bibliothèque dans LOCAL_STATIC_JAVA_LIBRARIES pour la compilation.

-2

Dans Eclipse, choisissez Modifier le chemin de génération et choisissez Ajouter un fichier externe, puis sélectionnez le fichier que vous voulez inclure.

+1

En fait, je veux le faire dans Android.mk. – Karan

+0

créer un répertoire lib dans votre projet android et ajouter le pot puis –

0

Ajoutez-le avec LOCAL_STATIC_JAVA_LIBRARIES & LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES flag.

et de mettre LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES entre include $(BUILD_PACKAGE) & include $(BUILD_MULTI_PREBUILT).

Cela va OK. merci pour l'URL fournie par a2ronus.

15

Un exemple est plus que de parler.

... 

LOCAL_STATIC_JAVA_LIBRARIES := libmylibs 

LOCAL_PACKAGE_NAME := myapp 

... 

include $(BUILD_PACKAGE) 

################################################## 
include $(CLEAR_VARS) 

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := libmylibs:mylib.jar 

include $(BUILD_MULTI_PREBUILT) 

Remarque: mettez le "mylib.jar" à la racine du projet.

+1

Je veux juste ajouter quelques notes: "libmylibs" est essentiellement un nom symbolique. Vous pouvez tout aussi bien utiliser "foo", à condition d'utiliser le même nom dans les deux déclarations. En outre, vous pouvez utiliser un chemin d'accès complet à votre fichier jar si vous le souhaitez, par ex. "libs/mylib.jar". C'est pratique car il est compatible avec un environnement de travail éclipse typique. –

+1

pouvez-vous s'il vous plaît expliquer ce qui est LOCAL_PACKAGE_NAME, ce qui devrait l'utiliser ici, mon fichier jar a des paquets comme org.jivesoftwar.smack et org.jivesoftwar.smacks. Puis-je utiliser org.jivesoftwar en tant que LOCAL_PACKAGE_NAME? – anargund

+1

Bien que, cette réponse manque vraiment d'explications, je pense que c'est mieux que la réponse acceptée. – cwhsu

0
LOCAL_STATIC_JAVA_LIBRARIES := \ 
other libs \ 
your_jar 

include $(CLEAR_VARS) 
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := your_jar:jar_path/jar_file.jar 
include $(BUILD_MULTI_PREBUILT) 
Questions connexes