APK優(yōu)化(九)之資源res文件混淆和7ZIP壓縮

資源混淆配合7zip壓縮,減小apk大小,增加破解難度。

通過resource.arsc文件格式,混淆步驟為:

  1. 解析arsc文件,主要為全局與資源名字符串池
  2. 修改字符串池中的字符串,以無意義的a/b替換
  3. 修改apk中的res目錄資源文件名
  4. 打包(7zip)、對齊、簽名

微信資源混淆打包工具AndResGuard或者美團資源混淆打包工具。
7zip壓縮參考:
http://blog.rcant.com/2017/03/19/others/android-andresguard/

AndResGuard使用

1.項目根目錄下build.gradle中,添加插件的依賴

classpath 'com.tencent.mm:AndResGuard-gradle-plugin:1.2.15'

2.在app目錄下,創(chuàng)建and_res_guard.gradle文件(也可以直接將內(nèi)容寫入build.gradle文件)

apply plugin: 'AndResGuard'
andResGuard {
    // mappingFile = file("./resource_mapping.txt")
    mappingFile = null
    use7zip = true
    useSign = true
    // 打開這個開關(guān),會keep住所有資源的原始路徑,只混淆資源的名字
    keepRoot = false
    whiteList = [
        // for your icon
        "R.drawable.icon",
        // for fabric
        "R.string.com.crashlytics.*",
        // for google-services
        "R.string.google_app_id",
        "R.string.gcm_defaultSenderId",
        "R.string.default_web_client_id",
        "R.string.ga_trackingId",
        "R.string.firebase_database_url",
        "R.string.google_api_key",
        "R.string.google_crash_reporting_api_key",

        // 我在實際項目中遇到第三方使用getIdentifier訪問的資源的問題,將指定的資源放入白名單后,雖然不閃退了,但還是會出現(xiàn)無法理解的錯誤。所以只好全部id都放入白名單
         "R.id.*"
    ]
    compressFilePattern = [
        "*.png",
        "*.jpg",
        "*.jpeg",
        "*.gif",
    ]
    sevenzip {
         artifact = 'com.tencent.mm:SevenZip:1.2.15'
         //path = "/usr/local/bin/7za"
    }

    /**
    * 可選: 如果不設(shè)置則會默認(rèn)覆蓋assemble輸出的apk
    **/
    // finalApkBackupPath = "${project.rootDir}/final.apk"

    /**
    * 可選: 指定v1簽名時生成jar文件的摘要算法
    * 默認(rèn)值為“SHA-1”
    **/
    // digestalg = "SHA-256"
}

3.在build.gradle文件中引用

apply from: 'and_res_guard.gradle'

集成完AndResGuard后,在app的gradle的tasks中,多了一個叫做andresguard的task
打debug包: 執(zhí)行resguardDebug指令;
打preview包: 執(zhí)行resguardPreview指令;
打release包 : 執(zhí)行resguardRelease指令。

雙擊執(zhí)行resguardRelease指令,執(zhí)行完畢后,可以在app目錄下的/build/output/apk/release/AndResGuard_{apk_name}/ 文件夾中找到混淆后的Apk即可。

APK優(yōu)化(一)之SVG--------------解決大量的套圖問題
APK優(yōu)化(二)之Tint著色器-------------減少apk體積
APK優(yōu)化(三)之資源打包配置----resources.arsc
APK優(yōu)化(四)之.so動態(tài)庫打包配置
APK優(yōu)化(五)之移除無用資源,物理刪除
APK優(yōu)化(六)之代碼混淆
APK優(yōu)化(七)之啟用shrinkResources資源縮減 ,不需要物理上的刪除
APK優(yōu)化(八)之啟用webp轉(zhuǎn)換插件-----圖片變小
APK優(yōu)化(九)之資源res文件混淆和7ZIP壓縮

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

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

  • 本文來自尚妝Android團隊青峰發(fā)表于尚妝博客 APK瘦身探索 最近幾周一直在研究如何為APK瘦身,折騰了很久,...
    尚妝產(chǎn)品技術(shù)刊讀閱讀 1,892評論 1 23
  • 對資源中的文件將進行如下方法進行優(yōu)化: 1.圖片壓縮 1.對apk中的資源圖片進行壓縮.可以使用webp圖片。WE...
    田間小鹿閱讀 539評論 0 0
  • 最近幾周一直在研究如何為APK瘦身,折騰了很久,是時候?qū)懫┛涂偨Y(jié)一下了,雖然已經(jīng)準(zhǔn)備了下周一要在客戶端周會分享用...
    風(fēng)清袖一閱讀 1,205評論 1 10
  • 隨著業(yè)務(wù)不斷的增加,需求不斷的迭代,我們的APP的體積也在不斷的變大,越往后就越成長為一個龐然大物,此時開發(fā)者就需...
    BrotherTree閱讀 1,339評論 0 15
  • 最近一直在研究關(guān)于apk瘦身方面的知識,看了很多文章受益匪淺。原文地址 http://tech.meituan.c...
    王元_Trump閱讀 4,013評論 1 30

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