Android NDK - 在没有 Android Studio 的情况下构建本地库
Android NDK - building native libraries without Android Studio
我正在开发一个 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和其他选项,但 none 已记录或最新。大多数文档仍在讨论过时的 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 .
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 来自命令行的任务。这是我们通常在构建服务器上执行的操作。
我正在开发一个 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和其他选项,但 none 已记录或最新。大多数文档仍在讨论过时的 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 .
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 来自命令行的任务。这是我们通常在构建服务器上执行的操作。