JNI_OnLoad通常用于Android NDK吗()

大鹏一日同风起,扶摇直上九万里。这篇文章主要讲述JNI_OnLoad通常用于Android NDK吗?相关的知识,希望能为你提供帮助。
我是android NDK的新手,我在Android开发者网站上阅读these tips。它建议使用JNI_OnLoad注册您的本机方法,但没有详细说明如何做到这一点。
搜索Google's NDK sample repo on GitHub只出现了JNI_OnLoad的一种用法,它没有调用RegisterNatives。搜索网络也没有太多关于如何做到这一点。
我觉得我错过了什么。据Google称,这应该是正确的方法,但他们自己的例子使用“发现”方法命名方法。
【JNI_OnLoad通常用于Android NDK吗()】这可能是一种古老的做法,那不是真的已经完成了吗?
答案在Android上完全支持RegisterNatives,正确的方法来自JNI_OnLoad,它也运行良好并且是shown prominently in NDK documentation。使用RegisterNatives与通常通过名称匹配自动解析本机方法的原因很少(总是使用javah来获取正确的名称)。

  1. 当您拥有许多本机方法时,您可能不希望在共享库中拥有庞大的导出函数表。
  2. 使用自动匹配可以更轻松地进行逆向工程和黑客攻击共享库。
  3. 您可以构建自定义逻辑以在运行时匹配本机方法。
  4. @CriticalNative方法必须在RegisterNatives中注册,而不是依赖于动态JNI链接。
这些原因都不适用于如何使用示例和入门教程。

    推荐阅读