2014-12-25 16 views
6

Ich habe ein Problem mit der Verknüpfung von STLPORT in GRADLE-Projekt in Android Studio.Verwenden von NDK mit STL in Android Studio Gradle-Projekt

Eclipse Android Projekt mit NDK migriert in Android Studio.

Das Projekt verwendet STL und ich habe android.mk Datei mit Inhalt

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) 

Es gradle scheint .mk Datei zu ignorieren, und ich fügte den Folowing Code in build.gradle Datei:

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

Danach gradle Gebäude wurde erfolgreich, aber auf dem Gerät die Anwendung ausgeführt wird, wird ein Fehler:

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/ Abschnitt auf overide (NDK) Plugin mit Ihrem eigenen 'Android.mk' lesen –

Antwort

3

Sie müssen die gemeinsam genutzte Bibliothek stlport manuell in Ihrem Java-Code laden, wenn Sie die gemeinsam genutzte Variante verwenden. Wenn Sie die gemeinsam genutzte Variante nicht benötigen, geben Sie stlport_static statt:

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

Wo Sie tun Stellen Sie dies? –

+0

@ AndréFratelli in der build.gradle Ihrer App. – Totoro

Verwandte Themen