1、gradle配置
配置CMakeLists.txt的路径等:
android {
...
externalNativeBuild {
cmake {
path "src/main/cpp/CMakeLists.txt"
}
}
}
配置abi过滤
android {
defaultConfig {
//配置需要编译出哪些abi的so
externalNativeBuild {
cmake {
abiFilters 'armeabi-v7a'
}
//如果用ndk_build的话:
ndk_build{
abiFilters 'armeabi-v7a'
}
}
//配置需要打包哪些abi的so
ndk{
abiFilters 'armeabi-v7a'
}
}
}
2.指定so文件的输出目录:
有时候要把输入的so文件给其他项目使用,系统默认生成的so文件在build底下,层级很深,所以可以通过配置Cmake文件来指定so文件的输出目录:
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY
C
M
A
K
E
C
U
R
R
E
N
T
S
O
U
R
C
E
D
I
R
/
.
.
/
j
n
i
L
i
b
T
e
m
p
/
{CMAKE_CURRENT_SOURCE_DIR} /../jniLibTemp/
CMAKECURRENTSOURCEDIR/../jniLibTemp/{ANDROID_ABI})
PS:不能生成在jniLibs底下,会报多个so文件的错。
3.CMakeLists.txt配置
aux_source_directory(< dir > < variable >)
查找在某个路径下的所有源文件。
如:
//查找当前目录下的所有源文件将名称保存到 DIR_SRCS 变量
aux_source_directory(. DIR_SRCS)
//根据DIR_SRCS保存的源文件添加到lib
set(TARGET xxx)
add_library(${TARGET} SHARED ${DIR_SRCS})