CMake Android(安卓)交叉编译
16lz
2021-01-26
众所周知,AS现在可以利用Grandle调用cmake,实现c++代码在Android平台上的交叉编译。但是大多是情况下,项目代码不是从零开发,而是在现有代码的基础上移植到Android平台上。这种情况下,最有效的构建形式是直接使用cmake进行交叉编译,而不是再借助Grandle甚至AS。
在参考了网上众多资料和尝试后。以下,以一个最精简的示例,说明Android平台的交叉编译方法:
准备代码,
CrossCompile/| mymath.cpp| mymath.h| CMakeLists.txt| cmake.bat| build/
// mymath.h#ifndef _MYMATH_H#define _MYMATH_Hint myadd(int a, int b);int mysub(int a, int b);int mymul(int a, int b);#endif
// mymath.cpp#include#include"mymath.h"int myadd(int a, int b){ return a + b;} int mysub(int a, int b){ return a - b;} int mymul(int a, int b){ return a * b;}
CMakeList.txt 也是能多精简多精简
cmake_minimum_required(VERSION 3.10)project(mymath) add_library(mymath SHARED ../mymath.h ../mymath.cpp)
编译bash
set ANDROID_SYSTEM_NAME=Androidset ANDROID_SYSTEM_VERSION=1set ANDROID_ABI=armeabi-v7aset ANDROID_PLATFORM=android-15set ANDROID_BUILD_TYPE=Debugset ANDROID_NDK=E:/ProgramFiles/Android/sdk/ndk-bundleset ANDROID_TOOLCHAIN_FILE=E:/ProgramFiles/Android/sdk/ndk-bundle/build/cmake/android.toolchain.cmakeset ANDROID_TOOLCHAIN=clangcd ./buildcmake .. -G "Unix Makefiles" -DCMAKE_SYSTEM_NAME=%ANDROID_SYSTEM_NAME% -DCMAKE_SYSTEM_VERSION=%ANDROID_SYSTEM_VERSION% -DANDROID_ABI=%ANDROID_ABI% -DANDROID_PLATFORM=%ANDROID_PLATFORM% -DCMAKE_BUILD_TYPE=%ANDROID_BUILD_TYPE% -DANDROID_NDK=%ANDROID_NDK% -DCMAKE_TOOLCHAIN_FILE=%ANDROID_TOOLCHAIN_FILE% -DANDROID_TOOLCHAIN=%ANDROID_TOOLCHAIN%pause
其中,重点说明下Android交叉编译中各个宏的作用。
假期回来再说吧。。。。
更多相关文章
- 手写选择题识别-生成编译opencv项目.so文件-失败
- android中对apk文件反编译的方法(详细)
- Android之——使用Android(安卓)studio创建的AIDL编译时找不到自
- Android编译系统环境初始化过程分析
- android apk 源码 的 破译(反编译)
- Android源代码编译和运行常见错误解决方案
- 深入理解java中的package关键字
- (转)Android中JNI编程的那些事儿
- Android(安卓)apk项目中添加ffmpeg编解码库