文章目录
一、Android 平台代码调试器代码
二、Android.mk 构建脚本内容
三、Application.mk 构建脚本内容
四、正式编译
一、Android 平台代码调试器代码
将代码放在 Y:\002_WorkSpace\001_AS\HackTool 目录下 , 之后需要用到该路径 ;
二、Android.mk 构建脚本内容
Android.mk 构建脚本 更详细的配置方法 , 参考 https://developer.android.google.cn/ndk/guides/android_mk#tiv 文档 ;
完整的 Android.mk 构建脚本 : 每行配置都添加了详细注释 ;
# 代码调试器核心代码 JNI_SRC := HackTool.cpp main.cpp public.cpp Ptrace.cpp # base 代码路径 BASE_SRC := $(wildcard ./Base/*.cpp) # json 代码路径 JSON_SRC := $(wildcard ./Json/*.cpp) # zlib 代码路径 ZLIB_SRC := $(wildcard ./zlib/*.c) $(wildcard ./zlib/*.cpp) # 当前路径 LOCAL_PATH := $(call my-dir) # 头文件路径 SRC_INCLUDES += $(LOCAL_PATH)/zlib $(LOCAL_PATH)/json $(LOCAL_PATH)/base ####libNative#### include $(CLEAR_VARS) LOCAL_ARM_MODE := arm # 指定头文件路径 LOCAL_C_INCLUDES += $(LOCAL_PATH) $(SRC_INCLUDES) # 链接的动态库 LOCAL_LDLIBS += -llog -latomic # 指定代码依赖于特定 C++ 功能 LOCAL_CPPFLAGS += -frtti -fexceptions -std=c++11 -DDEBUG -DTHUMB # 静态块前后是有顺序的,前面的依赖后面的库 LOCAL_MODULE := hacktool # 指定代码路径 LOCAL_SRC_FILES := $(JNI_SRC) $(JSON_SRC) $(ZLIB_SRC) # 编译出来是一个可以在 Android 的 adb shell 命令行可执行的程序 include $(BUILD_EXECUTABLE) ####libBridge#### include $(CLEAR_VARS) # 指定链接库路径 LOCAL_LDLIBS += -llog # 指定编译模块名称 LOCAL_MODULE := bridge # 指定 C 代码路径 LOCAL_SRC_FILES := bridge.c #NDK_APP_DST_DIR := ../Debug/$(TARGET_ARCH_ABI) # 编译目标是动态库 include $(BUILD_SHARED_LIBRARY)
三、Application.mk 构建脚本内容
Application.mk 构建脚本编写 , 参考 https://developer.android.google.cn/ndk/guides/application_mk 博客 ;
Application.mk 构建脚本内容 : 每行配置都添加了详细注释 ;
# 指定要编译的 CPUU 架构 APP_ABI := armeabi armeabi-v7a x86 # 指定用于此应用的 C++ 标准库 APP_STL := gnustl_static # 指定编译的 Android 平台 , 一般是 Android 兼容的最低版本 APP_PLATFORM := android-19
四、正式编译
ndk-build 脚本的用法参考 https://developer.android.google.cn/ndk/guides/ndk-build 文档 ;
在 命令行中断 , 进入 Y:\002_WorkSpace\001_AS\HackTool 路径 , 这是 NDK 项目的存放路径 ;
执行
Y:/001_DevelopTools/002_Android_SDK/ndk/android-ndk-r14b-windows-x86_64/android-ndk-r14b/ndk-build.cmd NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=./Android.mk NDK_APPLICATION_MK=./Application.mk
命令 , 编译 Android 平台的代码调试器 ;
其中 Y:/001_DevelopTools/002_Android_SDK/ndk/android-ndk-r14b-windows-x86_64/android-ndk-r14b/ndk-build.cmd 是 android-ndk-r14b 版本 ndk 的 ndk-build.cmd 编译工具 , 注意不要用错版本 ;
NDK_PROJECT_PATH=. 用于指定 NDK 项目的路径 , 一般都是在当前路径执行 ;
APP_BUILD_SCRIPT=./Android.mk 用于指定 Android.mk 构建脚本 ;
NDK_APPLICATION_MK=./Application.mk 用于指定 Application.mk 构建脚本 ;