使用NDK与Android中的gradle工作室STL项目 [英] Using NDK with STL in Android Studio gradle project
问题描述
我有链接到的STLport Android中的gradle工作室项目中的麻烦。
使用NDK Eclipse的Android项目迁移到Android的工作室。
该项目使用STL和我有内容android.mk文件
LOCAL_PATH:= $(叫我-DIR)包括$(CLEAR_VARS)LOCAL_MODULE:= MyProject的
LOCAL_SRC_FILES:= jniapi.cpp renderer.cpp
LOCAL_LDLIBS:= -llog -landroid -lEGL -lGLESv1_CM -ljnigraphics包括$(BUILD_SHARED_LIBRARY)
这似乎gradle这个忽略.mk文件,我增加了如下因素code到的build.gradle文件:
NDK {
MODULENAMEMyProject的
STLstlport_shared
LDLIBS日志,东瀛,机器人,jnigraphics,GLESv1_CM
//没有类似的包括$(BUILD_SHARED_LIBRARY)在这里
}
在这个建筑的gradle取得了成功,但对运行设备的应用程序导致错误:
27446-27446 / com.example.test E / AndroidRuntime:致命异常:主要
java.lang.UnsatisfiedLinkError中:无法加载库:soinfo_link_image(linker.cpp:1635):无法加载库libstlport_shared.so被libMyProject.so需要;造成load_library(linker.cpp:745):库libstlport_shared.so找不到
您需要,如果您使用的共享变量来在Java code手动加载STLport的共享库。如果你不需要共享变量,指定stlport_static来代替:
NDK {
MODULENAMEMyProject的
STLstlport_static
LDLIBS日志,东瀛,机器人,jnigraphics,GLESv1_CM
//没有类似的包括$(BUILD_SHARED_LIBRARY)在这里
}
I have a trouble with linking stlport into gradle project in Android Studio.
Eclipse Android project with using NDK migrates into Android Studio.
The project uses STL and I have android.mk file with contents
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)
It seems gradle to ignore .mk file, and I added the folowing code into build.gradle file:
ndk {
moduleName "MyProject"
stl "stlport_shared"
ldLibs "log", "EGL", "android", "jnigraphics", "GLESv1_CM"
//No equivalent for the "include $(BUILD_SHARED_LIBRARY)" here
}
After this gradle building became successful, but running the application on device causes an error:
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
You need to load the stlport shared library manually in your Java code if you are using the shared variant. If you do not need the shared variant, specify stlport_static instead:
ndk {
moduleName "MyProject"
stl "stlport_static"
ldLibs "log", "EGL", "android", "jnigraphics", "GLESv1_CM"
//No equivalent for the "include $(BUILD_SHARED_LIBRARY)" here
}
这篇关于使用NDK与Android中的gradle工作室STL项目的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!