android 增量更新实现_Android组件化架构 - 10.编译优化

  • 软件研发中,耗费最多时间的并不是编写代码,而是代码编译和代码不断调试的过程
  • 软件试错时间

1. Android基础编译流程

  • 编译构建的四个步骤:代码编译:
    将源代码,R文件,AIDL生成的文件等 编译成.class文件代码合成:通过dex工具将.class文件和工程依赖的第三方库文件生成虚拟机可执行的.dex文件,如果使用了MultiDex会产生多个dex文件;资源打包:apkbuilder工具将.dex文件,apt编译后的资源文件,三方库中的资源文件打包生成签名对齐的apk文件签名和对齐:使用Jarsigner和Zipalign对文件进行签名和对齐,生成最终的apk文件
  • 以下是gradle编译一个app module debug版的task链

10c3ec9750be9d78b03cfefd7e347223.png

2.InstantRun
AndroidStudio 2.0 推出了InstantRun,意为瞬间编译,在编译开发时减少应用的部署及构建时间

  • 需要Gradle2.0以上,minSdkVersion15以上
  • 构建流程:代码变更-->编译-->应用构建-->应用部署-->app重启-->activity重启-->完成修改变更
  • 实现即时运行的机制:修改代码后,增量构建(产生增量dex),然后通过判断更新资源的复杂度去选择执行热更新,温更新或者冷更新;热部署:生效时不需要重启app,也不需要重启activity温部署:重启activity后才能看到更新冷部署:app需要重启,但不是重新安装
  • 运行原理:使用manifest-merger整合项目的manifest,通过aapt工具将合成的AndroidManifest.xml文件与res资源编译到增量apk中;
    2,代码修改后,通过javac将java文件编译成class文件,然后打包成dex文件,同样放置在增量apk中;

3.优化gradle编译

  • properties配置优化

7c6e82a26b9385461e52bb12923bc87e.png
  • task任务过滤
    选择性的去除并不需要运行的gradle task任务

ff37cdf96cd42cdd265085ec1791ca0f.png

4.极速

  • 增量编译 freeline:
    由蚂蚁聚宝 Android 团队开发,它可以充分利用缓存文件,在几秒钟内迅速地对代码的改动进行编译并部署到设备上,有效地减少了日常开发中的大量重新编译与安装的耗时(方案不错,不再多说,已经凉了)

组件化分发

串行的优化规则是 减少重复操作--缓存,减少重复造轮子
并行的优化规则是 分离业务耦合度--解耦,将注意力放到更小的模块中
分发意味着更深度的解耦,对事物粒度进行更细致的分裂,对组件进行扩展

我是今阳,如果想要进阶和了解更多的干货,欢迎关注公众号”今阳说“接收我的最新文章

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值