面试复习题--AndResGuard

29 篇文章 0 订阅
28 篇文章 0 订阅

1、使用

applyplugin:'AndResGuard'

andResGuard{

    // keep住不混淆的资源原有的物理路径 mappingFile = file("./resource_mapping.txt");

    //如果混淆全部的话,设置mappingFile = null

    mappingFile =null

    // 打开这个开关,会keep住所有资源的原始路径,只混淆资源的名字

    keepRoot =false

    // 设置这个值,会把arsc name列混淆成相同的名字,减少string常量池的大小

    fixedResName ="arg"

    // 打开这个开关会合并所有哈希值相同的资源,但请不要过度依赖这个功能去除去冗余资源

    mergeDuplicatedRes =true

    // 启用7zip压缩。当你使用v2签名的时候,7zip压缩是无法生效的。

    // use7zip 为true时,useSign必须为true

    // 对于发布于 Google Play 的 APP,建议不要使用 7Zip 压缩,因为这个会导致 Google Play 的优化 Patch 算法失效

    use7zip =true

    // 启用签名,(需要配置signConfig)

    useSign =true

    // 保留不被混淆的资源文件,只作用于文件名,不会对路径有影响,支持通配符:? * +

    //  【+】代表1个或多个,【?】代表0个或1个,【*】代表0个或多个。如  "R.id.*",//任意id

    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"

    ]

// 打包时是否压缩这类文件,支持通配符:? * +

    compressFilePattern = [

"*.png",

"*.jpg",

"*.jpeg",

"*.gif",

//如果不是对APK size有极致的需求,请不要把resources.arsc添加进compressFilePattern

//"resources.arsc"

    ]

//配置7Zip,只需设置 artifact 或 path;支持同时设置,但此时以 path 的值为优先

    sevenzip{

        artifact ='com.tencent.mm:SevenZip:1.2.9'

        //path = "/usr/local/bin/7za"  //path指本地安装的7za(7zip命令行工具)

    }

    /**

    * 可选: 如果不设置则会默认覆盖assemble输出的apk

**/

    finalApkBackupPath ="${project.rootDir}/app.apk"

    /**

    *  可选: 指定v1签名时生成jar文件的摘要算法 默认值为“SHA-1”

**/

    // digestalg = "SHA-256"

}
//其中whiteList 为白名单

2、原理

1、生成新的资源文件目录,里面对资源文件路径进行混淆(其中涉及如何复用旧的mapping文件),例如将res/drawable/hello.png混淆为r/s/a.png,并将映射关系输出到mapping文件中。
2、对资源id进行混淆(其中涉及如何复用旧的mapping文件),并将映射关系输出到mapping文件中。
3、生成新的resources.arsc文件,里面对资源项值字符串池、资源项key字符串池、进行混淆替换,对资源项entry中引用的资源项字符串池位置进行修正、并更改相应大小,并打包生成新的apk。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值