目录
前言
本文记录C++算法开发移植到安卓平台的工具和过程。
一、需要哪些工具?
算法代码一般是 C++,并可能包含 OpenCV 以及 Eigen 等库文件,因此在部署到安卓端时有一些注意事项。本文档结合 gitLab 及 xmake 跨平台编译进行说明。
二、Git配置步骤
1.Git
访问 gitLab并获得项目访问权限。
2.本地 ssh 配置
在本机配置 ssh 密钥,将id_rsa.pub 内容粘贴到 gitLab
data = pd.read_csv(
'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())
该处使用的url网络请求的数据。
3.本地 git 配置
配置 Git Gui 或使用命令行访问 gitLab 项目。
4.git 代码下载
设置服务器地址,选择代码分支并 pull 到本地目录。
三、代码调试
1.代码编辑
使用 Visual Studio 或 VScode 编辑代码,确定可运行。
2.xmake 调试
xmake 是跨平台的工程编译软件,如下图可在VScode 安装插件,方便调试。
xmake 的配置可参考
安装xmake [install](https://xmake.io/#/guide/installation?id=windows)
3.安卓调试
安卓调试需下载 NDK 并配置环境变量,可通过 xmake 配置为全局变量,省去每次编译指定NDK安装目录
xmake config -p android -a armeabi-v7a --ndk=NDK安装目录 --build_test=yes
若程序名称有改动和新增, 需修改test_Calibration下的xmake.lua文件,加入
add_files('src/Calibration.cpp', 'src/Util_AutoReg.cpp')
新增库文件需加入
add_includedirs('include', 'src', 'src/eigen-3.3.9/', 'src/eigen-3.3.9/Eigen', {public=true})
4.安卓设备调试
想要不依赖java代码apk测试android的接口,目前的做法是将算法so库,模型文件和测试程序push到/data/local/tmp/目录运行
xmake脚本会在每次编译时上传程序和依赖库(如果已连接android设备的话)
可连接安卓开发板,或者直接连接安卓手机,安卓手机需打开'开发者模式',数据线连接电脑,选择文件传输模式,确认弹出 USB 调试窗口并授权,方可进行 adb 相关操作,也可使用安卓虚拟机或内网 IP 访问安卓设备。
注意事项
1.安卓宏定义
__ANDROID__ 是一个预定义的宏,在Android平台下会被自动定义,在非Android平台下则不会被定义。因此,通过检查该宏是否被定义,可以判断当前是否在Android平台下进行编译。
其中 cmake的android插件定义的名称为__ANDROID__,xmake 中自行定义也统一为该宏名称。使用示例:
#ifndef __ANDROID__ //判断是安卓则跳过,需安卓端编译时加入逻辑判断
#include <windows.h>
#endif
2.调试宏定义
计时模块,画图模块,图片显示模块,均为调试宏定义下执行,在 git 提交代码前修改值为 0,或判断在线版本则定义为 0。