首页
学习
活动
专区
工具
TVP
发布

Android资源清理

##资源清理

### 反编译apk

1. 下载最新[apktool_x.jar], 并保存为***apktool.jar***

2. 下载apktool运行[脚本],并保存为***apktool.sh***

3. 将两个文件的权限设为可执行

4. 环境变量配置

5. 执行反编译apk命令`[在apktool文件目录下执行]`

```

在.bash_profile 加入如下配置

export PATH="/Library/Frameworks/Python.framework/Versions/2.7/bin:$"

```

```

$ #!/usr/bin/python

$ sudo chmod a+x apktool.jar

$ sudo chmod a+x apktool.sh

$ ./apktool.sh d ./yizhangtong/build/outputs/apk/ yizhangtong-PingAn-debug-0.apk -o /Users/wangguodong581/Downloads/abc/outputs/yizhangtong

```

[脚本]: http://www.jianshu.com/p/c90024f61653

[apktool_x.jar]: https://bitbucket.org/iBotPeaches/apktool/downloads/

### 资源清理脚本运行与分析

#####如何运行资源清理python脚本

* 在Terminal执行命令`[需要注意的是需要先反编译apk]`

```

$ traversal.py xxx

"xxx" 代表apk反编译后的路径,比如:/Users/wangguodong581/Downloads/abc/outputs/xxxxx/

```

##### 脚本分析

* 清除log文件中日志`_cleanLog()`

* 遍历反编译出来smali*文件中的资源,并存入相对应的字典中 `_verifyRes()` `_readRFile`

* 校验字典中的资源文件名 `_verifyRes()` `_loopFolder`

* 是否有被在java, layout, vaule下文件引用

* 是否有被反射使用

* 如果存在以上使用,则从字典中移除

* 过滤白名单资源,把对应资源字典中含有白名单的文件remove掉 `_readwhitelist()`

* 去除字典中R.drawable.xxx, R.String.xxx开头等规则的元素 `_checkSrc()`

* 删除字典中的资源 `_deleteFiles()`

```

移除字典中白名单资源文件脚本修改 _deleteFiles()函数

if x.find("**drawable**") >= 0:

_writeLog(x + " ---- " + x[12:].strip())

_writeLog("---has key--" + str(drawableDic.has_key(x[12:].strip())))

if drawableDic.get(x[12:].strip()):

drawableDic.__delitem__(x[12:].strip())

```

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180208G1DSJD00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券