【腾讯Bugly干货分享】Redex初探与Interdex:Andorid冷启动优化

本文探讨了Facebook的redex工具在Android冷启动优化中的应用,包括redex的安装、使用和遇到的挑战。文章指出,虽然redex提供了多种优化,但在实践中存在诸多问题,如错误和兼容性问题。然而,Interdex优化,通过调整类顺序,能显著提升冷启动速度。作者实现了自定义的Interdex,减少了启动时间约30%,但注意到在release构建中,由于热补丁插桩的影响,效果不明显。最后,作者总结了Interdex的优化原理并强调了实践的重要性。
摘要由CSDN通过智能技术生成

本文来自于腾讯bugly开发者社区,未经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/583b9e3ee8992c2c2df6e6ac

导语

早在去年10月份,facebook就发布了介绍redex的文章,这个据说可以直接对apk做处理,既提高启动性能,又可减少安装包的利器让安卓开发者们都心动不已。直到今年4月,redex终于开源了,我们也第一时间对redex做了研究(有观众可能要说我骗人,这都11月了怎么还第一时间呢?好把这个总结是拖了很久才写),虽然由于坑多,最终没有接入到项目构建中,但受Interdex启发,在应用冷启动速度优化方面有了新的收获。

PS:本篇提到的冷启动速度优化,不包括Android 5.0及以上系统

一、redex的使用与坑

1.安装与使用

使用redex的第一个坑就是环境。很遗憾的是这个工具不支持windows系统(用mac开发的壕请忽略),只好装虚拟机来跑ubuntu。解决了系统,就可以按照github上的官方指引一步步来了,这里需要安装茫茫多的依赖库和解决若干环境问题,幸好各种典型issue已经有了解决方案,这里不再赘述。

2.优化原理与配置

Redex的优化项众多,并且可以很方便的修改配置文件来选择需要执行的优化,默认的配置文件如下

根据官方的介绍文档,redex的优化主要有以下几项:

A.内联。
简单说就是去除一些多级调用的中间层级,举个例子:

func1 -> static func2 -> static func3

优化后就是

func1 -> static func3

这样可以减少函数调用时间和字节码。除了静态方法调用,对象引用也有类似优化。

B.删除无用代码,移除空类。

C.对于只有一个实现类的接口或父类,直接用实现类代替。

D.SynthPass
翻译不能,官方例子,内部类B访问外部类A的private static变量,compile后其实是通过生成额外的acces方法来帮助内部类访问外部类私有成员。这个优化可以去除额外生成的字节码,方法相当于把变量的作用域改成public。

E.字符串缩减,包括提供字节码

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值