【问题标题】:Cannot resolve corresponding jni function无法解析对应的jni函数
【发布时间】:2017-10-12 14:29:48
【问题描述】:

我读了很多帖子,但还不能解决这个问题。

有我的错误行和项目结构:

我从另一个项目中获取的一些库和配置......并且不知道我哪里出错了。

如果需要,我会给你文件的源代码

感谢您的帮助。

【问题讨论】:

  • 尝试将 c++ 链接到项目获取此外部本机构建问题 link FAILURE:构建失败并出现异常。 * 出了什么问题:配置项目 ':app' 时出现问题。 > 为 ndkBuild D:\android\AndroidStudioProjects\DiceReader\app\src\main\jniLibs\Android.mk 执行外部原生构建

标签: java android c++ android-studio android-studio-2.3


【解决方案1】:

好的,所以这个缺失的“JNI 函数”没什么大不了的。我知道它以红色突出显示,但函数正在链接,只是不是以 IDE 可以确定的方式。

首先,相关源码如下:https://github.com/koreader/crengine/blob/master/android/jni/cr3engine.cpp#L770

CrEngine 在运行时链接函数。您的 IDE 没有选择它们的原因是因为 CrEngine 函数以 Java_org_ 而不是 Java_com_ 开头。如果您依赖引擎自动链接,这将是一个问题,但如前所述,它们在运行时与jniRegisterNativeMethods 显式链接。


执行clean 并将您的构建工具更新到 gradle.build 文件中的 25.0.3(或更高版本)。更新您的 SDK 和 NDK。然后重建。我看到的一些错误可能是由较旧的构建工具引起的。

【讨论】:

  • 具体来说,我以前更新前一直得到make: *** No rule to make target 'xxxx', needed by xxx\cp_stats.o'. Stop.。我必须清理构建才能修复。
【解决方案2】:

自从从 Android Studio 2 升级到 3 后,我也遇到了这个错误。代码可以编译,但 IDE 无法识别本机函数。 (这可能是由于我创建了一个简化 JNI 函数名称的预处理器宏。)

我通过在我的类声明前添加 @SuppressWarnings("JniMissingFunction") 来抑制 Java 中的此错误。

【讨论】:

  • 同样的问题!不修改代码就没有办法解决吗?
  • 我不知道。我在 Android Studio 版本 1 中遇到了这个问题。问题在版本 2 中消失了,但在版本 3 中再次出现。
猜你喜欢
  • 2018-07-05
  • 1970-01-01
  • 1970-01-01
  • 2017-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多