文章目錄
- 一、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 構建腳本 ;
命令列輸出 :
Microsoft Windows [版本 10.0.19041.1288]
(c) Microsoft Corporation,保留所有權利,
Y:\002_WorkSpace\001_AS\HackTool>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
[armeabi] Compile thumb : bridge <= bridge.c
[armeabi] SharedLibrary : libbridge.so
[armeabi] Install : libbridge.so => libs/armeabi/libbridge.so
[armeabi] Compile++ arm : hacktool <= HackTool.cpp
[armeabi] Compile++ arm : hacktool <= main.cpp
[armeabi] Compile++ arm : hacktool <= public.cpp
[armeabi] Compile++ arm : hacktool <= Ptrace.cpp
[armeabi] Compile++ arm : hacktool <= json_reader.cpp
[armeabi] Compile++ arm : hacktool <= json_value.cpp
[armeabi] Compile++ arm : hacktool <= json_writer.cpp
[armeabi] Compile arm : hacktool <= adler32.c
[armeabi] Compile arm : hacktool <= compress.c
[armeabi] Compile arm : hacktool <= crc32.c
[armeabi] Compile arm : hacktool <= deflate.c
[armeabi] Compile arm : hacktool <= gzclose.c
[armeabi] Compile arm : hacktool <= gzlib.c
[armeabi] Compile arm : hacktool <= gzread.c
[armeabi] Compile arm : hacktool <= gzwrite.c
[armeabi] Compile arm : hacktool <= infback.c
[armeabi] Compile arm : hacktool <= inffast.c
[armeabi] Compile arm : hacktool <= inflate.c
[armeabi] Compile arm : hacktool <= inftrees.c
[armeabi] Compile arm : hacktool <= trees.c
[armeabi] Compile arm : hacktool <= uncompr.c
[armeabi] Compile arm : hacktool <= zutil.c
[armeabi] Compile++ arm : hacktool <= Compressor.cpp
[armeabi] Executable : hacktool
[armeabi] Install : hacktool => libs/armeabi/hacktool
[armeabi-v7a] Compile thumb : bridge <= bridge.c
[armeabi-v7a] SharedLibrary : libbridge.so
[armeabi-v7a] Install : libbridge.so => libs/armeabi-v7a/libbridge.so
[armeabi-v7a] Compile++ arm : hacktool <= HackTool.cpp
[armeabi-v7a] Compile++ arm : hacktool <= main.cpp
[armeabi-v7a] Compile++ arm : hacktool <= public.cpp
[armeabi-v7a] Compile++ arm : hacktool <= Ptrace.cpp
[armeabi-v7a] Compile++ arm : hacktool <= json_reader.cpp
[armeabi-v7a] Compile++ arm : hacktool <= json_value.cpp
[armeabi-v7a] Compile++ arm : hacktool <= json_writer.cpp
[armeabi-v7a] Compile arm : hacktool <= adler32.c
[armeabi-v7a] Compile arm : hacktool <= compress.c
[armeabi-v7a] Compile arm : hacktool <= crc32.c
[armeabi-v7a] Compile arm : hacktool <= deflate.c
[armeabi-v7a] Compile arm : hacktool <= gzclose.c
[armeabi-v7a] Compile arm : hacktool <= gzlib.c
[armeabi-v7a] Compile arm : hacktool <= gzread.c
[armeabi-v7a] Compile arm : hacktool <= gzwrite.c
[armeabi-v7a] Compile arm : hacktool <= infback.c
[armeabi-v7a] Compile arm : hacktool <= inffast.c
[armeabi-v7a] Compile arm : hacktool <= inflate.c
[armeabi-v7a] Compile arm : hacktool <= inftrees.c
[armeabi-v7a] Compile arm : hacktool <= trees.c
[armeabi-v7a] Compile arm : hacktool <= uncompr.c
[armeabi-v7a] Compile arm : hacktool <= zutil.c
[armeabi-v7a] Compile++ arm : hacktool <= Compressor.cpp
[armeabi-v7a] Executable : hacktool
[armeabi-v7a] Install : hacktool => libs/armeabi-v7a/hacktool
[x86] Compile : bridge <= bridge.c
[x86] SharedLibrary : libbridge.so
[x86] Install : libbridge.so => libs/x86/libbridge.so
[x86] Compile++ : hacktool <= HackTool.cpp
[x86] Compile++ : hacktool <= main.cpp
[x86] Compile++ : hacktool <= public.cpp
[x86] Compile++ : hacktool <= Ptrace.cpp
[x86] Compile++ : hacktool <= json_reader.cpp
[x86] Compile++ : hacktool <= json_value.cpp
[x86] Compile++ : hacktool <= json_writer.cpp
[x86] Compile : hacktool <= adler32.c
[x86] Compile : hacktool <= compress.c
[x86] Compile : hacktool <= crc32.c
[x86] Compile : hacktool <= deflate.c
[x86] Compile : hacktool <= gzclose.c
[x86] Compile : hacktool <= gzlib.c
[x86] Compile : hacktool <= gzread.c
[x86] Compile : hacktool <= gzwrite.c
[x86] Compile : hacktool <= infback.c
[x86] Compile : hacktool <= inffast.c
[x86] Compile : hacktool <= inflate.c
[x86] Compile : hacktool <= inftrees.c
[x86] Compile : hacktool <= trees.c
[x86] Compile : hacktool <= uncompr.c
[x86] Compile : hacktool <= zutil.c
[x86] Compile++ : hacktool <= Compressor.cpp
[x86] Executable : hacktool
[x86] Install : hacktool => libs/x86/hacktool
Y:\002_WorkSpace\001_AS\HackTool>

編譯后 , 在 ndk 工程目錄下生成了 libs 和 obj 目錄 ;

libs 目錄下是編譯結果 , 分別表示不同 cpu 架構的編譯結果 ;

Y:\002_WorkSpace\001_AS\HackTool\libs\x86\hacktool 是編譯出來可以在 x86 手機 , 也就是電腦上的 Android 模擬器中 , 可以運行的 Android 代碼除錯器 程式 ;

五、博客資源
CSDN 下載 : https://download.csdn.net/download/han1202012/35933121
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/344281.html
標籤:其他
