【发布时间】:2017-02-06 09:18:59
【问题描述】:
我需要一些帮助才能在 android studio 中使用“.so”(共享库)中的方法“callMethod()”。
我的android studio版本是2.1.3
我在“src/main/”中创建了 jniLibs 文件夹 然后我在 jniLibs 文件夹中创建了三个文件夹:(armeabi, armeabi-v7a, x86) 然后我将 .so 库放在每个提到的文件夹中。 之后,我将 build.gradle 更新如下:
compile fileTree(dir: 'libs', include: ['*.jar','.so'])
在 MainAcrivity java 类中我写了这个:
static {
System.loadLibrary("SharedLibAndroid");
}
之后我不知道该怎么办?
我需要解释如何从 .so 库中调用方法“callMethod()”,请举例说明。
我搜索了很多,但没有看到完整的示例。
提前致谢。
我的更新
我已经在我的项目中添加了新的类和原生方法,如下所示:
@SuppressWarnings("JniMissingFunction")
public class Test1Cpp {
static {
System.loadLibrary("Cpp");
}
public native String callMethod();
}
那我就可以调用.so共享库里面的方法了,
我遇到了另一个问题,即我的 .so 库不适用于所有平台的手机,
错误是:
java.lang.UnsatisfiedLinkError:dlopen 失败: “/data/app/com.mysecondtestapp-1/lib/arm/libCpp.so”有 意外的 e_machine:3
那么,我的问题是:如何将我的 .so 库转换为可在所有平台手机上使用?
【问题讨论】:
标签: java android-ndk shared-libraries android-studio-2.1