2014-12-25 40 views
6

我在將Android Stlport鏈接到Android Studio中的gradle項目時遇到了問題。在Android Studio Gradle項目中使用NDK和STL

使用NDK的Eclipse Android項目遷移到Android Studio。

該項目使用STL和我有內容android.mk文件

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) 

看來gradle這個忽略.mk文件,我添加了如下因素代碼到的build.gradle文件:

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

在此之後gradle這個建築變成了成功,但運行在設備上的應用程序導致錯誤:

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/與閱讀超越控制(NDK)插件部分你自己的「Android.mk」 –

回答

3

如果您使用共享變體,則需要在Java代碼中手動加載stlport共享庫。如果你不需要共享變種,指定stlport_static代替:

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

你在哪裏把這個? –

+0

@AndréFratelli在應用程序的build.gradle中。 – Totoro

相關問題