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 左右==
找到一张优化的图,可以按照上述一步一步的优化
1
AoEiuV020 2021-03-18 19:21:04 +08:00
同求,我现在基本上编译时就拿起手机看看或者刷刷 v2ex,
|
2
systemcall 2021-03-18 21:30:08 +08:00
转鸿蒙开发,用 Harmony Studio 试试
|
3
gainsurier 2021-03-18 21:32:50 +08:00 via iPhone
才十几秒,够幸福了
|
4
stardust21 2021-03-18 21:37:04 +08:00
十几秒很快了,可以尝试按功能分几个 module,做某个功能的时候单独编译其中的一个
|
5
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 编译还是要六七分钟起步,有编译缓存就无所谓了 |
6
tanranran OP @stardust21 #4 项目还没有大到要拆 module 的时候,其实现在相当于是当单一的 module 编译一次需要几十秒
|
7
john6lq 2021-03-18 23:28:37 +08:00 via iPhone
Offline mode 打开
|
8
xloger 2021-03-18 23:32:15 +08:00
十几秒是真的很快了,我记得前几年 Gradle 没优化好的时候,编译一次得两分钟吧
|
9
hotsymbol 2021-03-18 23:48:52 +08:00
转 Flutter 吧
|
10
charliecaptain 2021-03-19 00:41:29 +08:00 via Android
我们项目怎么优化都是 7 分钟,摸鱼儿不好吗
|
11
kingzeus 2021-03-19 09:31:42 +08:00
把项目拆成 module,分布式编译,最后是加个本地 maven 镜像
|
14
tanranran OP @systemcall #2 难道你不知道 Harmony Studio 基于开源版的 Android Studio 开发的吗
|
16
HongJay 2021-03-19 12:49:55 +08:00
十几秒你还想怎么样
|
17
tanranran OP @HongJay #16 想达前端热更新,Flutter 热重载的效果,其实这个是能做到的比如 [freeline] [ instant run] ,但是如今都不可用
|
18
systemcall 2021-03-19 13:35:01 +08:00
@tanranran #14
胡说,明明是 Google 偷了牢厂的代码 |
19
Porster 2021-03-24 09:47:34 +08:00
用 M1 芯片开发的感受:第一次编译慢点,后面改代码运行都是 10s 编译完成。不需要加入这些提升编译速度的手段了。
|
20
tanranran OP 最终的解决办法就是 组件化或者换 flutter
|
21
trycatchx 2022-07-07 13:59:16 +08:00
Rocketx :https://github.com/trycatchx/RocketX
|