<转载>android 编译慢解决方案 (插件介绍 JRebel for Android)

刚开始我用这个办法,还是非常慢

http://blog.csdn.net/fuchaosz/article/details/51146091

后来我用找到了阿里的的https://www.freelinebuild.com/关注了其他编译插件

目前使用JRebel for Android,相对来说已经比原生快
很多了。





=============================================================================================
其他回答
https://www.zhihu.com/question/36892290

作者:知乎用户
链接:https://www.zhihu.com/question/36892290/answer/125762516
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Instant-Run:developer.android.com/s

  • Pros
    • Google官方支持的增量编译方案,随着Android Studio的迭代持续优化
    • 相对来说更加稳定,零配置,基本无侵入性影响
    • 几秒内可以完成编译,速度非常快
  • Cons
    • 对于可以修改的地方有局限性,具体可以参考官方文档:developer.android.com/s
    • 除了资源修改之外,修改 Java 文件会重启整个应用,从 Launcher Activity 重新进入,如果是在开发一个层级较深的 UI 页面的话,使用起来不方便(当然,也可以手动关掉 Activity 重启,不过可能带来编译后应用没有更新的问题,具体方法可以参考官方文档
    • 增量过的代码不支持debug
    • 对于复杂的工程结构支持程度不高
    • 不支持Kotlin

Buck/okbuck:GitHub - facebook/buck: A fast build system that encourages the creation of small, reusable modules over a variety of platforms and languages.

  • Pros
    • Facebook出品的构建工具,支持多种语言/平台的构建
    • okbuck是一个帮助gradle工程快速集成buck的工具,目前转入uber进行维护
    • 多线程并发编译,充分利用缓存,近似增量编译
    • 目前支持了retrolambda与注解(?)
  • Cons
    • 对于有历史的大型工程接入成本较高,需要较高的时间成本
    • 构建过程与gradle不同,所以第一次接入可能会存在不少的问题需要解决
    • 同理,因为构建过程与 Gradle 不同,社区上一些新的技术可能没办法很快应用上
    • 需要重新安装 APK 消耗时间较久

    • 不支持Kotlin
    • 不支持win平台

JRebel for Android:JRebel for Android

  • Pros
    • 在Instant Run之前就已经存在的Android平台上的增量编译解决方案,zeroturnround有大量JVM上热部署的实践积累
    • 零配置,只需安装Android Studio插件,立刻可以运行
    • 相比Instant Run支持的范围广,参考这篇文章:JRebel for Android and Instant Run: Hot Swaps, Warm Swaps, Cold Swaps, all the Swaps!
    • 支持lambda与部分流行注解库
    • 字节码层面的动态加载,理论上支持几乎所有基于JVM语言,包括Kotlin、Groovy等
    • 付费版提供技术支持
  • Cons

Freeline:GitHub - alibaba/freeline: Freeline is a fast build and deployment tool for Android

  • Pros
    • 支持大多数场景的增量编译
    • 支持 Retrolambda 与注解
    • 支持 so 动态替换
    • 支持 DataBinding
    • 支持 Windows/Linux/macOS
    • App crash后,仍然可以通过增量编译来修复
    • 大多数情况下增量编译可以在10s内完成
  • Cons
    • 初次接入可能存在一定的问题,需要稍微花点时间来解决
    • 在简单的工程上,与其他构建方案相比,没有明显的优势
    • 不支持删除带id的资源
    • 不支持Kotlin

LayoutCast 也是一个常用的加速编译的方案,不过对多 module 的工程支持不足,所以只能算是一个增量编译的工具原型,通常都需要改造一下才能在复杂工程上应用起来,没办法满足开箱即用的需求,因此就不加入上面的比较了。


下面再说下如何选择上面方案的问题。


如果团队里所有人都是清一色 Mac 配置,而且是刚刚起步或者没有什么历史包袱的项目的话,可以考虑一开始就把构建系统迁移到 buck 上,这样子随着工程的膨胀,基本上也不会遇见编译速度太慢的问题。而对于那些本身已经有一定量级的工程还要迁移到buck上的话,需要考虑时间成本的问题,大工程迁移构建系统就算有 okbuck 的帮助,时间上还是会耗费不少的,甚至可能会需要修改 buck 的源码来适配自己的项目。另外,在使用 buck 的时候,最好能够对工程模块进行合理拆分,拆成更多的小单元,也能够显著地提高整体的编译速度。当然 buck 也存在着明显的问题,问题的根源在于其是一套独立的,与 Gradle 完全不一样的构建系统,这意味着很多可以应用在 Gradle 工程上的 plugins,都需要单独移植到 buck 上,以及使用 buck 打出来的包跟 Gradle 打出来的包,可能是会存在差异的,不能单纯地直接使用 buck 打 debug 包,然后使用 Gradle 构建 release 包。


对于个人开发者的小工程,Instant Run 基本上已经够用了。不差钱的朋友或者使用了 Kotlin 等基于 JVM 的语言,也可以选择试试看 JRebel for Android (前提是如果你愿意付费的话,否则只有一段时间的免费试用期)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值