V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tanranran
V2EX  ›  Android

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

  •  
  •   tanranran · 2021-03-18 18:56:09 +08:00 · 10475 次点击
    这是一个创建于 1377 天前的主题,其中的信息可能已经有所发展或是发生改变。

    问题经过

    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 条附言  ·  2021-03-23 18:42:28 +08:00

    找到一张优化的图,可以按照上述一步一步的优化

    image.png

    原文链接

    21 条回复    2022-07-07 13:59:16 +08:00
    AoEiuV020
        1
    AoEiuV020  
       2021-03-18 19:21:04 +08:00
    同求,我现在基本上编译时就拿起手机看看或者刷刷 v2ex,
    systemcall
        2
    systemcall  
       2021-03-18 21:30:08 +08:00
    转鸿蒙开发,用 Harmony Studio 试试
    gainsurier
        3
    gainsurier  
       2021-03-18 21:32:50 +08:00 via iPhone
    才十几秒,够幸福了
    stardust21
        4
    stardust21  
       2021-03-18 21:37:04 +08:00
    十几秒很快了,可以尝试按功能分几个 module,做某个功能的时候单独编译其中的一个
    winterbells
        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


    编译还是要六七分钟起步,有编译缓存就无所谓了
    tanranran
        6
    tanranran  
    OP
       2021-03-18 22:10:43 +08:00
    @stardust21 #4 项目还没有大到要拆 module 的时候,其实现在相当于是当单一的 module 编译一次需要几十秒
    john6lq
        7
    john6lq  
       2021-03-18 23:28:37 +08:00 via iPhone
    Offline mode 打开
    xloger
        8
    xloger  
       2021-03-18 23:32:15 +08:00
    十几秒是真的很快了,我记得前几年 Gradle 没优化好的时候,编译一次得两分钟吧
    hotsymbol
        9
    hotsymbol  
       2021-03-18 23:48:52 +08:00
    转 Flutter 吧
    charliecaptain
        10
    charliecaptain  
       2021-03-19 00:41:29 +08:00 via Android
    我们项目怎么优化都是 7 分钟,摸鱼儿不好吗
    kingzeus
        11
    kingzeus  
       2021-03-19 09:31:42 +08:00
    把项目拆成 module,分布式编译,最后是加个本地 maven 镜像
    tanranran
        12
    tanranran  
    OP
       2021-03-19 12:00:14 +08:00
    @john6lq #7 打开了
    tanranran
        13
    tanranran  
    OP
       2021-03-19 12:00:29 +08:00
    @hotsymbol #9 有考虑中
    tanranran
        14
    tanranran  
    OP
       2021-03-19 12:01:02 +08:00
    @systemcall #2 难道你不知道 Harmony Studio 基于开源版的 Android Studio 开发的吗
    tanranran
        15
    tanranran  
    OP
       2021-03-19 12:01:22 +08:00
    @xloger #8 有一说一,几年前的比现在的快多了
    HongJay
        16
    HongJay  
       2021-03-19 12:49:55 +08:00
    十几秒你还想怎么样
    tanranran
        17
    tanranran  
    OP
       2021-03-19 13:30:12 +08:00
    @HongJay #16 想达前端热更新,Flutter 热重载的效果,其实这个是能做到的比如 [freeline] [ instant run] ,但是如今都不可用
    systemcall
        18
    systemcall  
       2021-03-19 13:35:01 +08:00
    @tanranran #14
    胡说,明明是 Google 偷了牢厂的代码
    Porster
        19
    Porster  
       2021-03-24 09:47:34 +08:00
    用 M1 芯片开发的感受:第一次编译慢点,后面改代码运行都是 10s 编译完成。不需要加入这些提升编译速度的手段了。
    tanranran
        20
    tanranran  
    OP
       2021-10-15 09:16:28 +08:00
    最终的解决办法就是 组件化或者换 flutter
    trycatchx
        21
    trycatchx  
       2022-07-07 13:59:16 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5373 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 09:03 · PVG 17:03 · LAX 01:03 · JFK 04:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.