AAB加固自己的一些看法

先說說google play上架為什么要用AAB格式

image.png

相比于 APK,Google 主推的 APP 打包格式 AAB 在很多方面都更為優(yōu)越,主要體現(xiàn)為如下幾點(diǎn):
1.1. 動(dòng)態(tài)分發(fā)
一個(gè) APK 中往往包含各國的語言資源、ABI、屏幕密度等資源。然而,對于單個(gè)用戶來說,往往只需要這些資源中的部分。
目前,國內(nèi)的開發(fā)者將所有資源統(tǒng)一放在單個(gè) APK 中,這樣就會導(dǎo)致 APK 特別龐大,而AAB在壓縮APK體積方面具有優(yōu)勢。
而為了縮小體積,部分開發(fā)者會有意縮減 APK 中的 ABI 目錄。例如,將 arm64-v8a 的 SO 從 APK 中去除,只留下 armeabi-v7a 的 SO。但這種做法使得64位 CPU 的手機(jī)無法發(fā)揮出其64位的運(yùn)算優(yōu)勢,降低程序運(yùn)行速度。還有語言的問題,如果手機(jī)系統(tǒng)語言沒有設(shè)置支持英語,那下載的AAB包也是不包含英語語言包的,這個(gè)時(shí)候添加英語會出現(xiàn)使用默認(rèn)語言。
Split APKs是 Android 5.0 開始提供的多 APK 構(gòu)建機(jī)制,借助 Split APKs 可以將一個(gè) APK 基于 ABI、屏幕密度和 CPU 架構(gòu)拆分成多個(gè) APK ,這樣可以有效減少單個(gè) APK 體積。當(dāng)用戶下載應(yīng)用程序安裝包時(shí),Google Play 會自動(dòng)識別用戶的語言和 CPU 架構(gòu),自動(dòng)將對應(yīng)平臺 SO 和資源的 APK 下發(fā)給用戶。

1.2. 動(dòng)態(tài)功能模塊
在 Android Studio 中新增了一個(gè)模塊:動(dòng)態(tài)功能模塊。通過該模塊開發(fā)出的功能可在用戶需要時(shí)再進(jìn)行下載,類似于目前在國內(nèi)被廣泛使用的熱更新機(jī)制,只不過熱更新大多是用來修復(fù)功能性 BUG 的,而動(dòng)態(tài)功能模塊更傾向于形成一個(gè)獨(dú)立功能。
用戶在安裝 APK 時(shí),只需要下載一個(gè)包含 APP 主要功能的 APK ,而其他附加功能可在用戶需要時(shí)進(jìn)行動(dòng)態(tài)下載安裝。這樣就進(jìn)一步減小了 APK 的體積,為用戶改善了 APP 安裝使用體驗(yàn)。比如正常使用的時(shí)候是不會加載直播模塊,在使用直播功能時(shí)才下發(fā)直播相關(guān)代碼和資源。

關(guān)于AAB格式加固
APK格式加固后:在 APP 運(yùn)行時(shí)對 APK 的簽名特征進(jìn)行校驗(yàn),若運(yùn)行時(shí)的 APK 簽名特征與加固前的 APK 簽名特征不一致,則 APK 會直接閃退。
AndroidManifest.xml修改 這里說明一下:一些粗心大意的開發(fā)者甚至?xí)?APP 的 debuggable 開關(guān)設(shè)為 "true",從而使得 APK 能夠被輕易地調(diào)試
正常的加固如果靠開發(fā)者自己去做,會牽扯到,簽名加固:資源混淆: DEX 格式和 SO 格式加固,防逆向,防數(shù)據(jù)防泄漏:處理技術(shù)方面的能力,還需要大量的時(shí)間,目前在360,樂固,愛加密,網(wǎng)易都推出了加固方案.
但是aab格式的加固目前都是要收費(fèi)的,主要有2家收費(fèi)還不便宜:
網(wǎng)易易盾(非游戲行業(yè) 一個(gè)應(yīng)用端5W一年 不限加固次數(shù))
百度應(yīng)用加固,(14w一年 單次1.4w)
AAB格式包到googleplay應(yīng)用市場上面,在安裝過程中自動(dòng)簽名,下載到手機(jī)上面根據(jù)手機(jī)設(shè)備下發(fā)不同的模塊,我這邊測試拿到下發(fā)的apk解壓,發(fā)現(xiàn)并沒有CPU架構(gòu)的依賴庫(lib),多語言/屏幕密度是缺少,也就是apk包確實(shí)是不完整的,也就很難反編譯以及注入代碼了,就算反編譯成功也難再次打包成功,至于是否要使用收費(fèi)的方案,就看自己的公司和應(yīng)用規(guī)模了

從谷歌上面下發(fā)的AAB轉(zhuǎn)APK查看簽名有如下提示

cmd命令代碼:jarsigner -certs -verbose -verify xxx.apk
 [證書的有效期為2021/11/8 下午4:21至2051/11/8 下午4:21]
      [無效的證書鏈: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target]

sm       24 Thu Jan 01 01:01:02 CST 1981 META-INF/MainAppSDK_release.kotlin_module

      >>> 簽名者
      X.509, CN=Android, OU=Android, O=Google Inc., L=Mountain View, ST=California, C=US
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容