APP终极瘦身方案,移动混合开发线程

优化Assets目录
  • 删除无用字体:中文字体不同于英文字体,一个中文字体库是很大的,因此不建议将字体文件随意丢弃到Assets中。对于有些只会用在Logo中的字体,推荐将字体文件进行删减处理。forJrking/FontZip就是一种字体提取工具。

  • 动态下载资源:对于字体、js、html这样的资源,尽量动态下载

  • 压缩资源文件:对于JS代码或者Html代码,可以通过混淆压缩的方案进行压缩,对于非代码类的文件,可以采用压缩存储的方式,在需要的时候将其解压使用。

优化Resources.arsc

resources.arsc中存在一个对应关系 关于文件,第一时间想到的就是压缩存储,在app运行时,要经常用到这个id,说明这个文件需要被频繁的读取。如果将这个文件进行压缩,在第一次读取之前必须进行解压的操作,就会有一些性能和内存的开销,综合考虑是得不偿失的。

  • 删除无用的映射:resources.arsc的正确瘦身方式是删除不必要的string entry,可以借助Android-arscblamer检查出可以优化的部分,例如一些空的引用。

  • 进行资源混淆:微信团队开源了资源混淆工具-AndResGuard,能将资源的名称进行混淆和缩减。可以使用它对该文件进行优化,只是具体优化效果与编码方式、id数量和命名长度有关。被AndResGuard优化后的资源名称会发生改变,一般会所见为一到两个英文字母。 AndResGuard工具其实是一个Task,可以根据需要进行配置即可。对于不需要混淆的可以将其放到白名单中。

具体可参见 github.com/shwenzhang/…

优化META-INF

MANIFEST.MF:是摘要文件,程序会遍历apk包中所有的文件,对非文件夹、非签名文件的文件,逐个编码生成摘要信息,并记录于此。如果逆向修改了任何文件,那么将出现文件和摘要信息不匹配的情况,导致安全校验失败。每一个资源文件都有一个sha1-digest的值,为该文件sha-1的值进行base64编码后的结果。

CERT.SF:是对MANIFEST.MF的签名文件,经过三步生成:

  • 1、系统会把MANIFEST.MF整个文件进行sha1计算,并且计算base64编码后的值。

    </
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值