当前位置: 首页 > 知识库问答 >
问题:

android studio中“未找到本机方法”

高宸
2023-03-14

我已经翻阅了这里所有关于这个主题的其他帖子,但没有一个对我有帮助。

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

 java.lang.UnsatisfiedLinkError: Native method not found: com.oovoo.core.ClientCore.VideoChannelPtr.nCreate:(Ljava/lang/String;)J
    null

谢谢!

android studio版本0.8.6 gradle版本1.12 Ooovoo版本1.2.4

共有1个答案

翟永春
2023-03-14

具体回答您的问题:

它无法到达实现,因为在运行时,当java环境试图用html" target="_blank">原型int(string)加载名为java_com_oovoo_core_clientcore_videochannelptr_ncreate的本机方法时,它没有发现加载这样的方法。这可能是由下列因素造成的:

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

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

 类似资料:
  • 问题内容: 我有一个带有本机函数的小型JNI文件,该函数将char数组转换为字节数组(因此我可以将其发送到我的C ++客户端)。 定义如下: 软件包名称(加载库的位置是: 并且该类中的本机deffiniton如下: 但是当调用ConvertString函数时,我得到以下错误: 问题可能是该类(communicationmoduleTCPIP)是可运行的类吗?我不在类中运行,并且具有以下定义(当我注

  • 问题内容: 有一块代码可以在android 4.1.2上正常工作,但在4.0.3上却不能正常工作,崩溃日志为4.0.3 我收到UnsatisfiedLinkError异常 请指导我谢谢 这是我的课 这是我从中编译并创建二进制“ libsqliteX.so”文件的源cpp文件http://www.sqlite.org/android/tree?ci=trunk&re=jni|src/org/sqli

  • 该链接描述了工具的用法 https://github.com/oracle/graal/blob/master/substratevm/CONFIGURE.md 我无法在JDK11的Graalvm版本19.0.3.2中找到此工具 我在哪里可以得到这个工具?

  • 和异常日志: [MonoDroid]未处理的异常:[MonoDroid]java.lang.UnsatifiedLinkError:引发了类型为“java.lang.UnsatifiedLinkError”的异常。[MonoDroid]在system.runtime.exceptionservices.exceptiondispatchinfo.throw()[0x0000b]在/users/bu

  • 我有RHEL7.3,在其中我构建了tesseract,并且我能够执行我的jar。现在我有了另一个具有相同RHEL配置的系统,我想执行相同的jar,但我不想在这个系统上构建tesseract,所以我从以前构建的tesseract系统中选择/usr/lib64/libtseract.so和/usr/lib64/liblept.so文件,并将这些so文件放在新的RHEL7.3系统中/usr/lib64/

  • 我是JNI的新手,我正在努力解决这个问题。 我有一个c回调被网络库(alljoyn)调用。 在这个回调中,我需要调用Java代码。 由于此回调位于另一个线程中,因此我使用以下代码获取JNIEnv指针: (jvm是全局指针) 问题是,当我尝试使用此env指针调用FindClass时,结果为NULL。 如果我在主线程中执行完全相同的FindClass调用,一切都会正常工作。 我怎样才能解决这个问题?这