首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JNI_OnLoad通常用于Android吗?

JNI_OnLoad通常用于Android吗?
EN

Stack Overflow用户
提问于 2017-07-20 02:09:13
回答 1查看 2.1K关注 0票数 3

我是Android的新手,我在Android网站上阅读这些提示。它建议使用JNI_OnLoad注册您的本机方法,但没有详细说明如何做到这一点。

搜索谷歌NDK样本在GitHub上的回购只显示JNI_OnLoad的一种用法,而不调用RegisterNatives。搜索网络也没有出现太多关于如何做到这一点的信息。

我觉得我错过了什么。谷歌认为,这是正确的做法,但他们自己的例子却使用了“发现”方法命名方法。

这也许是一种旧的方式,这不是真的做了吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-25 19:13:45

RegisterNatives在Android上是完全支持的,正确的方法是JNI_OnLoad,它的工作原理也很好,也是显着地显示在NDK文档中。使用RegisterNatives与通常通过名称匹配自动解析本机方法(始终使用javah以获得正确的名称)的原因不多。

  1. 当您有许多本机方法时,您可能不希望在共享库中有一个庞大的导出函数表。
  2. 使用自动匹配可以使反向工程和黑客攻击共享库更容易。
  3. 您可以构建自定义逻辑以匹配运行时的本机方法。
  4. 必须使用RegisterNatives注册@CriticalNative方法,而不是依赖于动态JNI链接。

所有这些理由都不适用于如何对待样本和入门教程。

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

https://stackoverflow.com/questions/45203918

复制
相关文章

相似问题

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