使用NDK与Android中的gradle工作室STL项目 [英] Using NDK with STL in Android Studio gradle project

查看:639
本文介绍了使用NDK与Android中的gradle工作室STL项目的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有链接到的STLport Android中的gradle工作室项目中的麻烦。

使用NDK Eclipse的Andr​​oid项目迁移到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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆