在android studio

时间:2017-02-06 09:18:59

标签: java android-ndk shared-libraries android-studio-2.1

我需要一些帮助才能在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库转换为适用于所有平台手机?

1 个答案:

答案 0 :(得分:0)

我认为库确实加载了,否则你会得到一个异常,我想你会提到它。因此,您需要声明要在库中使用的本机方法,然后调用它。您可以在此处看到一个简单示例:Sample: hello-jni

示例源代码可在此处找到:Hello JNI