无法运行具有.so(共享对象)文件的apk

时间:2015-11-11 07:10:01

标签: java android android-ndk

我已按照此回答中提到的所有步骤(Link)。

但我仍然得到相同的不满意的链接错误,如下所示。

  

11-11 12:38:22.304:E / AndroidRuntime(19180):致命异常:主要   11-11 12:38:22.304:E / AndroidRuntime(19180):   java.lang.UnsatisfiedLinkError:mAdd

这是我们的应用程序的屏幕截图 Native Libs Monitor

PS:我们使用Android的NDK版本而不是cygwin64生成了.so文件。

请你告诉我这里真正的问题是什么?

enter image description here

==更新==

请浏览以下图片

在libAddition.so文件中,

原生方法public native int mAdd(int v1,int v2);在Addition.java文件中声明。

使用包含此声明的javah为此java文件生成头文件,

JNIEXPORT jint JNICALL Java_com_example_testsampleso_Addition_mAdd
  (JNIEnv *, jobject, jint, jint);

在这里,我的问题是

为什么生成的头文件中的方法签名或入口点Java_com_example_testsampleso_Addition_mAdd与.so文件中的Java_com_ndkadd_Addition_Addition_mAdd不同?

是链接器错误不满意的原因吗?

enter image description here

1 个答案:

答案 0 :(得分:0)

您的Java类是 com.example.testsampleso.Addition ,但该库是为与Java类 com.ndkadd.Addition.Addition 一起使用而构建的。

您只能使用正确的名称(和包名称)从Java类调用 mAdd 本机方法。此名称不适合您的Android软件包名称,但没有问题。

您可以将任何包含任何包名称的类添加到APK。