0%

使用CMake交叉编译Android ARM程序

概述

脱离Android Studio,使用CMake交叉编译,生成Android ARM可执行文件及公共库。

环境

CMake 3.10.2NDK 21.4.7075529(从Android StudioSDK Manager中下载)
ABI:armeabi-v7a

CMakeLists.txt

可执行文件

1
2
3
4
5
cmake_minimum_required(VERSION 3.10.2)

project(victim)

add_executable(victim victim.cpp)

共享库

1
2
3
4
5
6
7
cmake_minimum_required(VERSION 3.10.2)

project(inject)

add_library(inject SHARED inject.cpp)

target_link_libraries(inject log)

compile.bat

其中CMake和NDK路径自行修改

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@echo off

set abi=armeabi-v7a
set CMAKE_PATH=D:\AndroidSDK\cmake\3.10.2.4988404\bin
set NDK_HOME=D:\AndroidSDK\ndk\21.4.7075529

if not exist %abi% md %abi%
cd %abi%

%CMAKE_PATH%\cmake ^
-DANDROID_ABI=%abi% ^
-DANDROID_NDK=%NDK_HOME% ^
-DCMAKE_BUILD_TYPE=Debug ^
-DCMAKE_TOOLCHAIN_FILE=%NDK_HOME%/build/cmake/android.toolchain.cmake ^
-DANDROID_NATIVE_API_LEVEL=16 ^
-DANDROID_TOOLCHAIN=clang -DCMAKE_GENERATOR="Ninja" ^
-DCMAKE_MAKE_PROGRAM=%CMAKE_PATH%/ninja ^
..

%CMAKE_PATH%/ninja
cd ..
pause

参考

实现简易安卓inlinehook
脱离AS在windows下使用CMake交叉编译for Android