【发布时间】:2015-01-05 15:16:20
【问题描述】:
我开始使用 JNI 开发 NDK - Native Development Kit。
据我了解,NDK 包含: 1. 包含一组 .so 库(和 c/c++ 头文件)的源代码,每个库都专门编译为不同的 Android 架构:例如 arm、mips、x86。它为我们提供了一些用于 Android 设备的 c/c++ API。 2. 负责构建每个 Android 架构的工具链。
使用 NDK 的示例:
我在我的应用程序中使用 c++ 代码中的 logcat,为此我添加到我的 Android.mk(在 Android 工作室 - gradle 属性中):
LOCAL_LDLIBS := -llog
在我的 c++ 代码中,我包含了标题:
#include <android/log.h>
我确实在以下位置看到了头文件: \platforms\android-21\arch-arm\usr\include\android\log.h 和lib文件: \platforms\android-21\arch-arm\usr\lib\liblog.so
我的问题:
并非所有存在于 Java SDK 框架中的 API 都存在于 NDK 框架中,对吧?
如果我对 1 的看法是正确的:虽然使用日志似乎很容易,但我如何知道哪些 API 受支持,哪些不支持? 例如,是否有用于使用相机/手电筒/gps/写入存储的库,或者对于这些我必须使用 Java 代码? 我没有在http://developer.android官方中看到明确的API或文档,也没有在NDK安装中提供的文档中(stableAPIs.html包含最小API集的最小描述),也没有在许多StackOverFlow中我读过的问题。
这是一个不同的主题,针对android不同架构的NDK编译器是基于GCC来编译我们的c++代码的吧?以及如何知道我使用的是哪个 c++ 版本?
谢谢
【问题讨论】:
标签: android android-ndk java-native-interface