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 300 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 |