2011-10-28 14 views
7

Ho una libreria condivisa libfoo.so e ho bisogno di usarla nella mia app per android.come includere le librerie condivise precompattate in apk con eclissi

Il mio primo tentativo era quello di avere in Android.mk:

include $(CLEAR_VARS) 
LOCAL_MODULE := test 
LOCAL_SRC_FILES := test.cpp 
LOCAL_LDLIBS := -L$(PATH_TO_FOO) -lfoo 
include $(BUILD_SHARED_LIBRARY) 

nella mia attività, ho:

statis 
{ 
    System.loadLibrary("foo"); 
} 

Questo costruisce correttamente, però ho notato che creato doesnt apk includono libfoo. così (anche io vedo che non è copiato in libs/armeabi). Credo che per questo motivo ho UnsatisfiedLinkError durante l'esecuzione della mia app.

ho visto in altri posti che ho bisogno di aggiungere $ (PREBUILD_SHARED_LIBRARY), così ho aggiungere il seguente alla mia Android.mk:

include $(CLEAR_VARS) 
LOCAL_MODULE:= foo 
LOCAL_SRC_FILES := $(FOO_PATH)/libfoo.so 
include $(PREBUILD_SHARED_LIBRARY) 

Ma ora sto ottenendo l'errore di generazione:

foo: LOCAL_SRC_FILES points to a missing file. 

Sono sicuro che il percorso è corretto. Si noti che la libfoo.so stava avendo originariamente il numero di versione alla fine, anche se ho dovuto rimuoverlo (e lasciare solo .so) da quando ndk-build si è lamentato.

Cosa sto sbagliando?

risposta

5

L'includono sembra essere errore di ortografia:

include $(PREBUILD_SHARED_LIBRARY) 

dovrebbe essere

include $(PREBUILT_SHARED_LIBRARY) 
1

In eclissi, aggiungo una libreria statica copiando il file nel percorso project/libs/armeabi/e ricostruisco il progetto dopo averlo pulito. Questo include il .so nell'apk.

+0

Questo non funziona per me (ADT22, Indigo, NDK-R9). La lib viene cancellata durante la compilazione. – WindRider

5

Trovato la soluzione !! LOCAL_SRC_FILES non può avere percorsi assoluti o relativi, solo il nome del file. Il percorso deve essere impostato in LOCAL_PATH.

Quindi, nel mio caso, invece di:

LOCAL_SRC_FILES := $(FOO_PATH)/libfoo.so 

che ho adesso:

LOCAL_PATH := $(FOO_PATH) 
LOCAL_SRC_FILES := libfoo.so 

E questo funziona bene.

+0

hey .. puoi farci un po 'di luce. m affrontando lo stesso problema. sto avendo 3 file .so da caricare che cosa dovrei scrivere nel file .mk? –

+2

A valle. LOCAL_SRC_FILES può sicuramente contenere percorsi relativi. –

+0

sì concordato che può avere percorsi relativi. – pauld

Problemi correlati