众所周知,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交叉编译中各个宏的作用。

假期回来再说吧。。。。

更多相关文章

  1. 手写选择题识别-生成编译opencv项目.so文件-失败
  2. android中对apk文件反编译的方法(详细)
  3. Android之——使用Android(安卓)studio创建的AIDL编译时找不到自
  4. Android编译系统环境初始化过程分析
  5. android apk 源码 的 破译(反编译)
  6. Android源代码编译和运行常见错误解决方案
  7. 深入理解java中的package关键字
  8. (转)Android中JNI编程的那些事儿
  9. Android(安卓)apk项目中添加ffmpeg编解码库

随机推荐

  1. [置顶] Android学习记录(6)—将java中的多
  2. 关于ContentProvider的设置问题
  3. android自定义带图片的title
  4. Android:控件ProgressBar进度条
  5. Android(安卓)获取View的位置参数:x,y和相
  6. android双击返回键退出程序
  7. 开源项目收集整理
  8. android 模拟器 得到GPS
  9. Android进程管理机制及优化 for HTC HeRO
  10. Android(安卓)屏幕适配