环境
macOS和Ubuntu都可以,推荐Ubuntu
虚拟机。方面后面执行sh脚本。
安装好Clion,下载ndk 21版本或者更高,配置环境变量。也就是在终端命令行中执行ndk-build
可以正常。
Clion创建项目与配置
打开Clion后,点击new project:
点击开始创建一个学习项目,选择c++
版本选择c++14就行了。喜欢其他版本的可以自己切换。点击右下角Create即可。成功后会进入下面的界面,等待没有任何加载提示之后可以点击这个绿色的按钮,跑一次默认的c++代码,看看能否正常编译和运行。
看到这里输出就表示整个环境是OK的。
使用NDK编译代码
上面的Clion默认编译和运行环境是电脑上,我们学习的目标是在手机(真机)上跑的,这里使用Clion的环境来写代码毕竟比较方面,各种语法提示,格式化代码等等。想要在手机上面跑还需要NDK来编译arm的版本。
在项目的根目录下右键创建一个目录jni,把main.cpp拖进去这个文件夹中,同时在jni中创建一个Android.mk文件,打开文件后增加上图的代码配置。这部分都是模板代码,其他项目需要用到也可以直接搬过去的。需要注意的有2个配置。LOCAL_MODULE := demo,这里demo是可以修改的,也就是编译代码之后的可执行文件的名字,比如在手机上面MT管理器中执行这个文件,我们可以把文件修改成xxx.sh
,点击即可执行。LOCAL_SRC_FILES := main.cpp这个地方是你需要编译的代码的文件名字,也就是对应现在我们学习的文件。
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := demo
LOCAL_SRC_FILES := main.cpp
APP_PLATFORM := android-16
APP_ABI := arm64-v8a
APP_ALLOW_MISSING_DEPS=true
include $(BUILD_EXECUTABLE)
上面配置完成了,可以编译了(假设你已经配置好了NDK的环境变量)。
进入终端,cd jni进入jni目录中执行ndk-build
记得修改main中的导入库,和打印Hello World的函数。编译完成后可以看到左边的目录中增加了obj和libs目录,展开libs可以看到不同手机架构的可执行文件。
我现在的手机是arm64的,可以把对应文件夹中的文件通过adb命令push到手机中。
#~/CLionProjects/tank
adb push ./libs/arm64-v8a/demo /data/local/tmp
找到文件后,修改文件属性可读可写可执行,也就是全部打钩。
点击文件出现这个菜单:
选择Linux脚本:
使用root权限执行。点击执行。
到此环境配置和编译的产物传输到手机上面执行就初步完成了。
总结
1、推荐Ubuntu,不建议win。
2、安装Clion。
3、配置NDK 21或者更高版本。
4、创建c++项目并且电脑上面运行正常。
5、NDK编译代码在手机上面运行。