首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >android演播室中的“本地方法找不到”

android演播室中的“本地方法找不到”
EN

Stack Overflow用户
提问于 2014-08-19 15:03:40
回答 1查看 4.7K关注 0票数 1

我看过这里关于这个问题的所有其他帖子,但没有一个对我有帮助。

我正在使用第三方SDK (oovoo),它包含一个.jar文件和.so文件(armeabi-v7a)。

如前所述,我将.jar文件放在libs文件夹中,armeabi-v7a文件夹(包含.so文件)放在src/main中名为jniLibs的文件夹中。

构建之后,当我解压缩.apk时,我会看到一个名为lib的文件夹,其中有一个名为armeabi-v7a的文件夹,其中包含.so文件。

但我仍然有这样的例外:

代码语言:javascript
复制
 java.lang.UnsatisfiedLinkError: Native method not found: com.oovoo.core.ClientCore.VideoChannelPtr.nCreate:(Ljava/lang/String;)J
  • 为什么它不能实现呢?
  • 如果它位于.apk中的lib文件夹中,这是否意味着它将在运行时对它进行处理?

谢谢分配!

android工作室版本0.8.6级版本1.12 oovoo版本1.2.4

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-19 15:26:16

具体地回答你的问题:

它无法到达实现,因为在运行时,当java环境试图用原型java_com_oovoo_core_ClientCore_VideoChannelPtr_nCreate加载一个名为int (string)的本地方法时,它找不到这样一个加载的方法。造成这种情况的原因如下:

  • .so库在您调用该方法时没有加载,因此java不知道它(所以这是您的错误,您按错误的顺序调用函数)
  • .so库不会导出这样的函数,这意味着您没有机会修复这个函数。
  • 手机在运行时加载的.so库除了armv7s之外,还需要一个不同的体系结构。确保您的设备是armv7s
  • Android系统正在寻找本机lib的文件夹与您预期的不同。我知道这是个老问题,所以在apk中,在lib文件夹中创建"armeabi-v7a“和"armeabi”,并在这两个文件夹中复制该.so文件。

关于您的第二个问题,是的,如果apk中有lib,您将在运行时得到它。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25386820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档