1

我想知道是否可以在本机代码中使用未直接作为 NDK 的 API 公开的 Android 系统库。特别是如何将它们包含在我的本机应用程序代码中,以便它们可以与之链接。我知道这是不鼓励的,但我的项目在不同 Android 版本之间的兼容性不是问题。

我想要实现的是跳过 Android 提供的一些服务并尝试更靠近内核。谢谢。

4

1 回答 1

3

我希望你明白,除了稳定的 API之外,不建议对系统库有任何依赖。但 Android 的开放性允许(无论是在技术上还是在许可方面)引入这种依赖关系。从本质上讲,这意味着在非特许水域航行,并且不仅准备在平台的下一版本中进行 API 更改,而且还准备在相同平台级别的供应商提供(即非 AOSP)设置中进行 API 更改。

确保前向(和供应商)兼容性的最安全方法是对未记录的系统功能使用动态链接,并在此过程中执行仔细的错误检查。

但在很多情况下,系统无文档的 API 实际上是相当稳定的,而且 Google 的 Android 团队中的好人不会经常进行重大更改。因此,如果您链​​接到 4.0 版本的skia ,您的代码很可能只会在 4.1.2 及更高版本上运行。

从技术上讲,您需要编译头文件和链接的.so文件。后者您可以简单地从您自己的设备或模拟器图像中获取任何adb pull /system/lib/lib内容。.so您可以从https://android.googlesource.com/ git 存储库下载标头。确保您的标头与库版本匹配。

于 2013-02-03T09:57:22.717 回答