2010-04-08 15 views
6

Desidero aggiungere un file jar esterno di terze parti nell'app Android integrata.Aggiunta di un riferimento jar esterno in Android.m

Ho aggiunto la variabile LOCAL_CLASSPATH in Android.mk a causa della quale la compilazione funziona correttamente. Ma durante il runtime, non è in grado di trovare la definizione della classe che si trova nel JAR.

Qual è la variabile che devo impostare per aggiungere i JAR di terze parti in .dex/.apk?

TIA.

risposta

12

Ecco quello che ho usato per risolvere il problema:

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := path_to_jar_file.jar 
include $(BUILD_MULTI_PREBUILT) 

Questo dovrebbe essere aggiunto in Android.mk dopo include $(BUILD_PACKAGE)

È inoltre necessario specificare il nome della libreria in LOCAL_STATIC_JAVA_LIBRARIES per la compilazione.

-2

In Eclipse selezionare modifica percorso di creazione e scegliere aggiungi jar esterno e selezionare il vaso che si desidera includere.

+1

In realtà, voglio farlo in Android.mk. – Karan

+0

crea una directory lib nel tuo progetto Android e aggiungi il jar quindi –

0

Aggiungilo con LOCAL_STATIC_JAVA_LIBRARIES & LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES flag.

e inserire LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES tra include $(BUILD_PACKAGE) & include $(BUILD_MULTI_PREBUILT).

Sarà OK. grazie per l'URL fornito da a2ronus.

15

Un esempio è più che parlare.

... 

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) 

Nota: mettere il "mylib.jar" alla radice del progetto.

+1

Voglio solo aggiungere un paio di note: "libmylibs" è fondamentalmente un nome simbolico. Puoi tranquillamente usare "pippo", purché tu usi lo stesso nome nelle due dichiarazioni. Inoltre, puoi utilizzare un percorso completo per il file jar, se preferisci, ad es. "Libs/mylib.jar". Questo è utile poiché è compatibile con un tipico ambiente di lavoro di eclissi. –

+1

puoi spiegare cosa è LOCAL_PACKAGE_NAME, cosa dovresti usare qui, il mio file jar ha pacchetti come org.jivesoftwar.smack e org.jivesoftwar.smacks. Allora dovrei usare org.jivesoftwar come LOCAL_PACKAGE_NAME? – anargund

+1

Tuttavia, questa risposta manca davvero di spiegazioni, penso che sia meglio della risposta accettata. – 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) 
Problemi correlati