0%

使用CMake交叉编译Android ARM&ARM64 程序

概述

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

环境

CMake 3.10.2、3.18.1NDK 21.4.7075529、22.1.7171670(从Android StudioSDK Manager中下载)
ABI:armeabi-v7aarm64-v8a

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.18.1)

project(inject)

add_library(inject SHARED inject.cpp)

target_link_libraries(inject log)

compile.bat

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

set abi=arm64-v8a
set CMAKE_PATH=D:\Tools\AndroidSDK\cmake\3.18.1\bin
set NDK_HOME=D:\Tools\AndroidSDK\ndk\21.4.7075529

if not exist %abi% md %abi%
cd %abi%
del /q *.*

%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