Android NDK - 在没有Android Studio的情况下构建本机库

时间:2018-01-01 12:13:17

标签: android-ndk ndk-build

我正在开发一个c / c ++跨平台项目,由2个主要库构成(带有一些外部依赖项:ssl,yajl,fribidi)。
android解决方案将包括Java文件和JNI层,所有这些都捆绑在AAR文件中(包括资产和本机库)。

我设法建立整个项目,但是以一种非常尴尬的方式: 我在Android Studio中创建了一个“hello world”Android应用程序,具有本机支持,并将所有本机依赖项添加到CMAkeList.txt。我添加了我的Java代码+ JNI并设法创建了AAR(目前仅适用于ARM)。

现在我需要将不同库的构建分别分别到它们各自的项目:libA,libB和C.aar。

如果没有IDE(并通过命令行),它是如何完成的?
独立的NDK make_standalone_toolchain.py 脚本, android.toolchain.cmake 和其他选项,但没有记录或上传 - 至今。大多数文档仍然谈论过时的Android.mk方法 我想在我的CMakeList.txt中包含 android.toolchain.cmake ,这将设置所有需要的环境......

我正在使用最新的Android Studio 3.0.1和NDK r16b(通过SDK Manager安装)

亚历克斯 - 谢谢,正是我在寻找的东西。只需要添加一些标志和调用make:

> cmake -G "MinGW Makefiles" -DCMAKE_TOOLCHAIN_FILE=%ANDROID_NDK%\build\cmake\android.toolchain.cmake -DANDROID_NATIVE_API_LEVEL=android-19 -DCMAKE_MAKE_PROGRAM=%ANDROID_NDK%\prebuilt\windows-x86_64\bin\make.exe -DCMAKE_BUILD_TYPE=Release -DANDROID_ABI="armeabi-v7a with NEON" ..
> cmake --build .

1 个答案:

答案 0 :(得分:0)

Android Studio(标准的Android gradle插件)不支持仅限原生模块,但您可以拆分CMake脚本并使用 libA libB 分别。您可以从命令行运行 cmake (但最好使用Android SDK附带的版本)。

sdk/cmake/3.6.4111459/bin/cmake -DCMAKE_TOOLCHAIN_FILE=sdk/ndk-bundle/build/cmake/android.toolchain.cmake ...

构建包含已编译的Java包装器和两个本机库的AAR文件的最简单方法是使用Android Studio,但您可以从命令行运行gradle任务。这是我们通常在构建服务器上执行的操作。