apkandroid原始碼中混淆編譯

2021-06-03 21:57:25 字數 1559 閱讀 2254

終於知道怎麼在android原始碼中混淆編譯了,不用ant也不用eclipse外掛程式。

local_proguard_enabled := full

local_proguard_flag_files := proguard.flags

target_build_variant := user或者target_build_variant := userdebug

這樣後在工程目錄下執行mm便可以看到在out目錄下生成了形如proguard.classes.jar的東東,這就說明已在編譯中啟動了proguard

但反編譯一看,並未出現網路雲說的abcd替代符號,其實**並未真正混淆:

android在編譯時預設關閉了混淆選項,有去研究build/core目錄的同志會發現這裡也有個proguard.flags檔案,其實在proguard的過程中,編譯器會呼叫包括本地目錄下和系統定義了的多個proguard.flags檔案,而在這個檔案中混淆的選項被禁止了,故而編譯出來的apk仍未混淆。因此將如下句子注釋掉便可實現真正的混淆編譯:

# don't obfuscate. we only need dead code striping.

-dontobfuscate(將該句加個#號注釋掉)

好奇的同志還可以繼續看看,為什麼target_build_variant := user和local_proguard_enabled := full二選一即可,詳見build/core/package.mk:

local_proguard_enabled:=$(strip $(local_proguard_enabled))

ifndef local_proguard_enabled

ifneq ($(filter user userdebug, $(target_build_variant)),)

# turn on proguard by default for user & userdebug build

local_proguard_enabled :=full

endif

endif

ifeq ($(local_proguard_enabled),disabled)

# the package explicitly request to disable proguard.

local_proguard_enabled :=

endif

proguard_options_file :=

ifneq ($(local_proguard_enabled),custom)

ifneq ($(all_resources),)

proguard_options_file := $(package_expected_intermediates_common)/proguard_options

endif # all_resources

endif # !custom

local_proguard_flags := $(addprefix -include ,$(proguard_options_file)) $(local_proguard_flags)

具體我就不解釋了,大家自己理解吧哈

中英混串轉拼音 原始碼

本程式只對gb2312編碼有效 漢字讀音分界點處的碼值陣列 static const unsigned short code pin 漢字讀音陣列 static const char str pin 陣列長度 static const size t size array sizeof code pi...

《原始碼閱讀》原始碼閱讀技巧,原始碼閱讀工具

檢視某個類的完整繼承關係 選中類的名稱,然後按f4 quick type hierarchy quick type hierarchy可以顯示出類的繼承結構,包括它的父類和子類 supertype hierarchy supertype hierarchy可以顯示出類的繼承和實現結構,包括它的父類和...

Cartographer原始碼篇 原始碼分析 1

在安裝編譯cartographer 1.0.0的時候,我們可以看到 主要包括cartorgarpher ros cartographer ceres sover三個部分。其中,ceres solver用於非線性優化,求解最小二乘問題 cartographer ros為ros平台的封裝,獲取感測器資料...