Android NDK开发 Android.mk 转化 CMakeList.txt

最近没什么事,就想将十年前公司eclipse写的jni项目转化到Android Studio工程,并使用新的构建工具CMake。

从eclipse转AS工程很简单,直接用as自带的转换即可。最麻烦的部分就是jni那块,该文章主要介绍CMakeList.txt脚本的编写,以及Android.mk里面命令跟CMakeList.txt命令的对比。

一、首先将eclipse工程转为Android studio,并关联上jni

转换项目工程我就不说了,直接选择Import project(Gradle,Eclipse ADT,etc.)。

然后导入你的eclipse工程,等构建完毕后(编译的时候可能不会报错,运行才会提示),这个时候jni还并没有关联上。

第一种你可以直接运行,然后报错的时候as会提示你关联jni。

第二种方式,右键app->Link C++ Project with Gradle,如下图(一定要是右键Module,在Project右键是没有的)
这里写图片描述

然后会让你选择用哪种构建方式,有两种:
1. CMake:Android studio新的构建方式,Project Path需要选择CMakeList.txt文件路径,jni会按照这个脚本来进行编译,具体脚本的编写看下面。
2. ndk-build:老eclipse的构建方式,也就是Android.mk的形式。

这里写图片描述
点击ok之后就会开始构建,其实这个选择也就是在gradle里面加一句话而已。
这里写图片描述


二、编写CMakeList.txt,以及跟Android.mk的对比

1.设置需要设置构建jni所需的CMake的最低版本

cmake_minimum_required(VERSION 3.4.1)

2.设置生成的so动态库最后输出的路径,如果项目的so库不需要给别人使用,也可以不设置,不设置的话会生成在build里面,如果给别人使用,寻找的话还是比较麻烦,所以指定一下路径更方便。

# 设置生成的so动态库最后输出的路径,set后面两个参数,
# 前面一个是命令,后面是路径。
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/../jniLibs/${ANDROID_ABI})
  1. CMAKE_LIBRARY_OUTPUT_DIRECTORY : 指定的命令,用于设置输出的路径
  2. ${PROJECT_SOURCE_DIR} :是指当前路径,也就是CMakeList.txt所在的路径,其实也可以不写,因为默认就是以CMakeList.txt所在的路径为起点。
  3. ../jniLibs: ..两个点是回到上一层,一般来说我们都是建个jni文件夹用于放置c文件,CMakeList.txt是在jni文件夹下,也就是回到上一层,存放在jniLib里面。
  4. ${ANDROID_ABI} 会根据架构来生成不同的文件夹放置对应的so文件。
    这里写图片描述

3.设置头文件搜索路径,如果跟CMakeLists.txt同路径则不需要设置,同路径下文件夹不行。

#设置头文件搜索路径(和此txt同个路径的头文件无需设置),可选
include_directories(Cipher
                    Core
                    Core/Common
                    Core/DB
                 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值