繁体   English   中英

Android Studio .so共享库中的调用方法

[英]Calling method inside .so shared library on android studio

我需要一些帮助来使用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库转换为可在所有平台移动设备上使用?

我假设该库确实已加载,否则您将获得异常,并且我想您会提到它。 因此,您需要从库中声明要使用的本机方法,然后调用它。 您可以在此处看到一个简单的示例: 示例:hello-jni

示例源代码可以在这里找到: Hello JNI

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM