编译apk遇到的问题 2022/6/16
之前业务上遇到个问题,就是反编译一个apk,什么都不干,直接回编后,发现包体变小很多。几番检查之后,发现关键问题: **skipping file '.drwable' due to ANDROID_AAPT_IGNORE pattern '.*'** 这个是由于aapt工具执行命令前做的类型检测。aapt默认的文件忽略类型为:[外链图片转存中...(img-mMUspunc-1655521494062)] 自己资源中带有这类不规范命名的,最好还是自己改下吧。 当然,如果是反编译回编这种操作,不能改动别人资源的,也还是有办法处理的。 - **方案一:更改aapt源码** 能动源码了,那方案就多种多样了。简单粗暴点的可以直接修改AaptAssets.cpp下的gDefaultIgnoreAssets或者gUserIgnoreAssets里的值。但是可操作空间不大,你懂的,这次为了这个apk的奇葩资源改一个,下次还有更奇葩的,对不~~~ - **方案二:使用--ignore-assets命令参数** 在aapt命令中使用这个参数,实际上就是给源码中的gUserIgnoreAssets赋值而已。到这里,如果是使用第三方工具打包的,不是直接调用aapt的,是不是感觉要憋死了呢,死活都是没法有效解决问题。别急,往下还有方案 - **方案三:设置系统环境变量** 在执行aapt操作前,先设置好环境变量。比如在windows下,使用set ANDROID_AAPT_IGNORE=要忽略校检的文件名或者正则表达式。 这个操作,不用觉得太神奇,看到源码就清楚为何了。 [外链图片转存中...(img-5rsbORyh-1655521494063)] aapt在执行指令之前,会分优先级的获取资源命名的规范设置。  

                        
本日记共有 1 页 [1]
                   ⌒_