前言
在开发一个需要Native代码的jar包的时候,我们可以单独编译Native代码成so库,而不需要使用Android Studio进行编译,这样在开发通用Native代码的时候可以节省很多时间。
设置环境变量
设置ANDROID_HOME/ANDROID_SDK_HOME变量,该目录为安装Android Studio时候设置的SDK目录,比如我的目录为D:\Library\Android\sdk
,那么设置该变量为此地址即可。
编译脚本build.bat
:
set abi=arm64-v8a
if not exist %abi% md %abi%
cd %abi%
%ANDROID_SDK_HOME%/cmake/3.22.1/bin/cmake ^
-DANDROID_ABI=%abi% ^
-DANDROID_NDK=%ANDROID_SDK_HOME%/ndk/25.1.8937393 ^
-DCMAKE_BUILD_TYPE=Debug ^
-DCMAKE_TOOLCHAIN_FILE=%ANDROID_SDK_HOME%/ndk/25.1.8937393/build/cmake/android.toolchain.cmake ^
-DANDROID_NATIVE_API_LEVEL=19 ^
-DANDROID_TOOLCHAIN=clang -DCMAKE_GENERATOR="Ninja" ^
-DCMAKE_MAKE_PROGRAM=%ANDROID_SDK_HOME%/cmake/3.22.1/bin/ninja ^
..
%ANDROID_SDK_HOME%/cmake/3.22.1/bin/ninja
cd ..
以上脚本参考自Ref 1
,做了一些简单的错误更正和微调,其中DANDROID_NDK
的设置需要定位到D:\Library\Android\sdk\ndk\25.1.8937393
,而不是内层的build目录。
基本变量解释:
ANDROID_ABI:目标ABI,支持armeabi-v7a,arm64-v8a等。
ANDROID_NDK:NDK的目录。
ANDROID_TOOLCHAIN:编译Cmake使用的工具链,默认clang
ANDROID_NATIVE_API_LEVEL:编译Android NDK的API级别
CMAKE_TOOLCHAIN_FILE:Cmake编译链接时的cmake文件
CMAKE_MAKE_PROGRAM:make程序选择