gpt4 book ai didi

android - JNI_OnLoad 通常用于 Android NDK 吗?

转载 作者:搜寻专家 更新时间:2023-11-01 08:25:52 25 4
gpt4 key购买 nike

我是 Android NDK 的新手,我正在阅读 these tips在 Android 开发者网站上。它建议使用 JNI_OnLoad 来注册您的 native 方法,但没有详细说明如何执行此操作。

正在搜索 Google's NDK sample repo on GitHub只出现了 JNI_OnLoad 的一种用法,它没有调用 RegisterNatives。在网上搜索也没有太多关于如何做到这一点的信息。

我觉得我错过了什么。据谷歌称,这应该是正确的方法,但他们自己的示例使用“发现”方法命名方法。

这可能是一种古老的方法,不再真正采用这种方法了吗?

最佳答案

RegisterNatives 在 Android 上完全受支持,正确的方法是使用 JNI_OnLoad,它也运行良好并且是 shown prominently in NDK documentation .使用 RegisterNatives 与通常通过名称匹配自动解析 native 方法(始终使用 javah 以获得正确的名称)相比,使用的理由很少。

  1. 当您有许多 native 方法时,您可能不希望共享库中有一个巨大的导出函数表。

  2. 使用自动匹配可以更轻松地进行逆向工程和破解您的共享库。

  3. 您可以构建自定义逻辑以在运行时匹配 native 方法。

  4. @CriticalNative方法必须使用 RegisterNatives 注册,而不是依赖动态 JNI 链接。

这些原因都不适用于操作示例和介绍性教程。

关于android - JNI_OnLoad 通常用于 Android NDK 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45203918/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com