【问题标题】:Android NDK - building native libraries without Android StudioAndroid NDK - 在没有 Android Studio 的情况下构建原生库
【发布时间】:2018-06-11 11:38:33
【问题描述】:

我正在开发一个 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 的情况下(通过命令行)完成?
stand-alone NDKma​​ke_standalone_toolchain.py 脚本、android.toolchain.cmake 和其他选项,但没有记录或更新迄今为止。大多数文档仍然在谈论过时的 Android.mk 方法。
我假设在我的 CMakeList.txt 中包含 android.toolchain.cmake,它将设置所有需要的环境...

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

Alex - 谢谢,正是我想要的。只需添加一些标志和调用:

> 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 .

【问题讨论】:

  • 代替make,使用cmake --build 更简洁。 目录 是一个可选参数。这样你就不用担心generator的选择了。也许忍者会更胖。

标签: android-ndk ndk-build


【解决方案1】:

Android Studio(即标准的 Android gradle 插件)不支持纯原生模块,但您可以拆分 CMake 脚本并使用 libAlibB分别地。您可以从命令行运行 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 任务。这是我们通常在构建服务器上执行的操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-16
    相关资源
    最近更新 更多