【发布时间】:2016-02-29 01:42:52
【问题描述】:
我有一个简单的问题,但非常具体。
我在一个 c++ 项目(非 android)中构建了一个共享库 .so,我将其用于其他项目。
我现在想用它来开发一个带有 Android NDK 的 Android 应用。在 /app/src/main/jni 文件夹中,我有 cpp 文件,我想使用我的库的功能。这里是.cpp文件的内容
#include <string.h>
#include <jni.h>
#include <mysharedlibrary.h>
jstring
Java_com_example_nativeapp_MyActivity_stringFromJNI( JNIEnv* env,
jobject thiz ) {
ObjectFromSharedLibrary obj;
functionFromSharedLibrary(obj);
...
}
但我真的不知道该怎么做。我花了最后 2 天寻找答案,但我什么也没找到
这里是我的环境:
- 操作系统 Linux Ubuntu 14.04 LTS
- Android 工作室 1.5
- Gradle 2.8
- 我的 .so 位于 /usr/local/lib 中,*.h 位于 /usr/local/include/mysharedlibraryname/ 中
我想知道这是否可能以及如何从头开始正确地做到这一点。
提前致谢
【问题讨论】:
-
这个链接可能对stackoverflow.com/questions/16705954/…有帮助
-
您不能在 Android 操作系统上使用来自
/usr/local/lib的库。这不仅是平台的差异(您的 Linux 运行在 64 位 x86 上,Android 通常是 32 位 ARM v7a)。它也是运行时环境。您通常可以毫不费力地使用 Android 工具链重新编译 Linux 库,但您的里程可能会有所不同。 -
你找到答案了吗?我有同样的问题
-
不,我暂时还没有找到任何东西,我还在努力。
标签: android c++ android-studio android-ndk android-gradle-plugin