2014-12-25 8 views
6

Ho un problema con il collegamento di stlport nel progetto gradle in Android Studio.Utilizzo di NDK con STL nel progetto grader di Android Studio

Il progetto Eclipse Android con NDK viene migrato in Android Studio.

Il progetto utilizza STL e ho android.mk file con contenuti

LOCAL_PATH := $(call my-dir) 

include $(CLEAR_VARS) 

LOCAL_MODULE := MyProject 
LOCAL_SRC_FILES := jniapi.cpp renderer.cpp 
LOCAL_LDLIBS := -llog -landroid -lEGL -lGLESv1_CM -ljnigraphics 

include $(BUILD_SHARED_LIBRARY) 

Sembra Gradle ignorare il file .mk, e ho aggiunto il codice folowing in file di build.gradle:

ndk { 
    moduleName "MyProject" 
    stl "stlport_shared" 
    ldLibs "log", "EGL", "android", "jnigraphics", "GLESv1_CM" 
    //No equivalent for the "include $(BUILD_SHARED_LIBRARY)" here 
} 

Dopo questo edificio Gradle ha avuto successo, ma in esecuzione l'applicazione sul dispositivo causa un errore:

27446-27446/com.example.test E/AndroidRuntime﹕ FATAL EXCEPTION: main 
java.lang.UnsatisfiedLinkError: Cannot load library: soinfo_link_image(linker.cpp:1635): could not load library "libstlport_shared.so" needed by "libMyProject.so"; caused by load_library(linker.cpp:745): library "libstlport_shared.so" not found 
+0

http://ph0b.com/android-studio-gradle-and-ndk-integration/ leggere la sezione sulla overide (NDK) plugin con il proprio 'Android.mk' –

risposta

3

È necessario caricare manualmente la libreria condivisa di stlport nel codice Java se si utilizza la variante condivisa. Se non avete bisogno della variante condiviso, specificare stlport_static invece:

ndk { 
    moduleName "MyProject" 
    stl "stlport_static" 
    ldLibs "log", "EGL", "android", "jnigraphics", "GLESv1_CM" 
    //No equivalent for the "include $(BUILD_SHARED_LIBRARY)" here 
} 
+0

Dove ti metti questo? –

+0

@ AndréFratelli nel build.gradle della tua app. – Totoro