[TOC]

概述

Gradle配置

设置SO编译的平台

1
2
3
4
// 指定abi,如需在模拟器调试,增加"x86",否则指定"armeabi-v7a"即可
ndk {
abiFilters "armeabi-v7a", "arm64-v8a", "x86", "x86_64"
}

CMake版本的设置

1
2
3
4
5
6
7
8
9
10
11
12
defaultConfig {
// 指定abi,如需在模拟器调试,增加"x86",否则指定"armeabi-v7a"即可
ndk {
abiFilters "armeabi-v7a", "arm64-v8a", "x86", "x86_64"
}
// 导入CMake构建。声明C++的版本号
externalNativeBuild {
cmake {
cppFlags "-std=c++17"
}
}
}
1
2
3
4
5
6
7
8
// 其实这个地方就是告知Gradle的进行Cmake编译的路径和版本号
// 具体怎么编译是CMakeList的事情
externalNativeBuild {
cmake {
path "src/main/cpp/CMakeLists.txt" //构建脚本的路径
version "3.10.2" //CMake的版本
}
}

CMake语法学习

1
2
3
4
# 下面我们学习一下cmake创建一个变量,使用的是set
set(var Welocome to Android Jni World)
# CMake是不区分大小写的: SET(var helloJni)
message(${var})

只进行编译Native的库

image-20210130132341954

执行Native的库编译的时候,我们发现使用3.10.2版本的Cmake 会导致CmakeList里面的信息无法打印出来。应该是Android Studio的Bug。

所以我们使用3.6.0版本的Cmake

CMake的基础语法的学习

变量的打印

image-20210130133126983

CMake怎么增加多个链接库学习

image-20210130134212710

1
2
3
4
5
6
7
8
9
# 关联库(链接库),确保hello-jni中 能使用log库。
# 我们将我们的hello-jni和poeple-jni的链接库进行关联起来
target_link_libraries( # Specifies the target library.
hello-jni
poeple-jni
# Links the target library to the log library
# included in the NDK.
${log-lib})