我需要一些帮助才能在android studio中的“.so”(共享库)中使用方法“callMethod()”。
我的android工作室版本是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库转换为适用于所有平台手机?
答案 0 :(得分:0)
我认为库确实加载了,否则你会得到一个异常,我想你会提到它。因此,您需要声明要在库中使用的本机方法,然后调用它。您可以在此处看到一个简单示例:Sample: hello-jni
示例源代码可在此处找到:Hello JNI。