2021 年了 Android 开发 现在还有什么能够增强编速度的插件或者做法呢

2021-03-18 18:56:09 +08:00
 tanranran

问题经过

3 年前用过 freeline ( https://github.com/alibaba/freeline) [可以 1-3 秒编译生效,大部分场景不用重启 APP ] 

真的很惊艳,和 iOS 中的 Injection 有的一比

可是随着 alibaba 的放弃维护,freeline 也无法使用

项目现在能用 aar 的也都用 aar 了

在此请教下各位大佬,2021 年了 Android 现在有什么办法能够加快编译呢

目前所用的配置

AndroidStudio 版本

Android Studio 4.1.2
Build #AI-201.8743.12.41.7042882, built on December 20, 2020
Runtime version: 1.8.0_242-release-1644-b01 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Windows 10 10.0
GC: ParNew, ConcurrentMarkSweep
Memory: 1237M
Cores: 8
Registry: ide.new.welcome.screen.force=true, external.system.auto.import.disabled=true
Non-Bundled Plugins: GsonFormatPlus, org.jetbrains.kotlin, wu.seal.tool.jsontokotlin

语言用的是纯 kotlin
gradle 使用得版本是 6.5
build.gradle 中能配置的也都配置了


gradle.properties 配置

android.useAndroidX=true
android.enableJetifier=true
org.gradle.daemon=true
org.gradle.configureondemand=true
org.gradle.parallel=true
org.gradle.jvmargs=-Xmx4096m -XX:+UseParallelGC -XX:MaxPermSize=1024m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

#开启 gradle 缓存
org.gradle.caching=true
android.enableBuildCache=true

#开启 kotlin 的增量和并行编译
kotlin.incremental=true
kotlin.incremental.java=true
kotlin.incremental.js=true
kotlin.caching.enabled=true
kotlin.parallel.tasks.in.project=true


#优化 kapt
kapt.use.worker.api=true
kapt.incremental.apt=true 
kapt.include.compile.classpath=false
kapt.verbose=true
# Kotlin code style for this project: "official" or "obsolete":
kotlin.code.style=official

        
#优化 databinding
android.lifecycleProcessor.incremental=true
android.databinding.incremental=true
android.injected.testOnly=false

#显示过时的调用
android.debug.obsoleteApi=true

==虽然已经做了上述的配置但是编译一次还是大约需要 15-30s 左右==

5854 次点击
所在节点    Android
21 条回复
AoEiuV020
2021-03-18 19:21:04 +08:00
同求,我现在基本上编译时就拿起手机看看或者刷刷 v2ex,
systemcall
2021-03-18 21:30:08 +08:00
转鸿蒙开发,用 Harmony Studio 试试
gainsurier
2021-03-18 21:32:50 +08:00
才十几秒,够幸福了
stardust21
2021-03-18 21:37:04 +08:00
十几秒很快了,可以尝试按功能分几个 module,做某个功能的时候单独编译其中的一个
winterbells
2021-03-18 21:43:49 +08:00
https://developer.android.com/studio/preview/features#use-java-11
你试试,公司项目编译大概 10%提速


还有一个 https://docs.gradle.com/enterprise/gradle-plugin/
没验证过有什么差别


我们年前就用 AS Canary 版本了( bug 不少……),gradle 用 nightly,JDK 11


编译还是要六七分钟起步,有编译缓存就无所谓了
tanranran
2021-03-18 22:10:43 +08:00
@stardust21 #4 项目还没有大到要拆 module 的时候,其实现在相当于是当单一的 module 编译一次需要几十秒
john6lq
2021-03-18 23:28:37 +08:00
Offline mode 打开
xloger
2021-03-18 23:32:15 +08:00
十几秒是真的很快了,我记得前几年 Gradle 没优化好的时候,编译一次得两分钟吧
hotsymbol
2021-03-18 23:48:52 +08:00
转 Flutter 吧
charliecaptain
2021-03-19 00:41:29 +08:00
我们项目怎么优化都是 7 分钟,摸鱼儿不好吗
kingzeus
2021-03-19 09:31:42 +08:00
把项目拆成 module,分布式编译,最后是加个本地 maven 镜像
tanranran
2021-03-19 12:00:14 +08:00
@john6lq #7 打开了
tanranran
2021-03-19 12:00:29 +08:00
@hotsymbol #9 有考虑中
tanranran
2021-03-19 12:01:02 +08:00
@systemcall #2 难道你不知道 Harmony Studio 基于开源版的 Android Studio 开发的吗
tanranran
2021-03-19 12:01:22 +08:00
@xloger #8 有一说一,几年前的比现在的快多了
HongJay
2021-03-19 12:49:55 +08:00
十几秒你还想怎么样
tanranran
2021-03-19 13:30:12 +08:00
@HongJay #16 想达前端热更新,Flutter 热重载的效果,其实这个是能做到的比如 [freeline] [ instant run] ,但是如今都不可用
systemcall
2021-03-19 13:35:01 +08:00
@tanranran #14
胡说,明明是 Google 偷了牢厂的代码
Porster
2021-03-24 09:47:34 +08:00
用 M1 芯片开发的感受:第一次编译慢点,后面改代码运行都是 10s 编译完成。不需要加入这些提升编译速度的手段了。
tanranran
2021-10-15 09:16:28 +08:00
最终的解决办法就是 组件化或者换 flutter

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/762943

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX