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

Aosp 14 源码单模块编译慢,如何优化

  •  
  •   honhon · 18 天前 · 1531 次点击

    我的设备是 64 核,128G 内存,andrid14 全系统编译大概一个多小,但是我用 m SystemUI 编译系统界面的时候 cpu 占用不高,编译时间特别长,想求助大佬,寻求提高单模块编译速度办法

    25 条回复    2025-05-29 10:58:22 +08:00
    honhon
        1
    honhon  
    OP
       18 天前
    单编译 SystemUI 的时间大约 6 分钟
    honhon
        2
    honhon  
    OP
       18 天前
    我尝试 clean 之后编译需要 15 分钟
    fightingZ
        3
    fightingZ  
       18 天前 via Android
    不改 mk/bp 文件的情况下,ninja ,直接编译
    540852101
        4
    540852101  
       18 天前
    android 根目录执行./prebuilts/build-tools/linux-x86/bin/ninja -f out/combined-${TARGET_PRODUCT}.ninja SystemUI -j64 (这种编译仅限于没有新增文件,没有修改 mk, bp 文件), 平时调试代码,ninja 编译方式速度最快
    honhon
        5
    honhon  
    OP
       18 天前
    @540852101 感谢大佬回复,我尝试了一下,编译时间跟 m SystemUI 差不多,编译的时候 cpu 使用率也不高
    yongchuan
        6
    yongchuan  
       18 天前
    @540852101 有删除的文件也能使用吗?
    yongchuan
        7
    yongchuan  
       18 天前
    @honhon 看看 mk 配置的 cpu 核心是多少
    honhon
        8
    honhon  
    OP
       18 天前
    @yongchuan 请问在哪里看 mk 配置的 cpu 核心数量
    maokg
        9
    maokg  
       18 天前
    换 u ,12 核 24 线程快很多
    maokg
        10
    maokg  
       18 天前
    sorry ,没看清除配置(尴尬
    honhon
        11
    honhon  
    OP
       18 天前
    @maokg 没关系,感谢回复
    540852101
        12
    540852101  
       18 天前
    @yongchuan 应该是可以的,我一般是调试代码时用 ninja; 有新增,删除文件,修改编译文件都是用 make
    540852101
        13
    540852101  
       18 天前
    建议试试单编下其他模块,看看耗时;
    lixile
        14
    lixile  
       18 天前
    存储是?
    另外可以用 cmake 存储缓存 只要引用头文件 编译宏没变 可以大幅节约 未修改文件的编译时间
    LeviMarvin
        15
    LeviMarvin  
       18 天前
    SystemUI 的编译确实特别慢,我也不知道为什么,我这里编译 SystemUI 都得十几分钟。
    honhon
        16
    honhon  
    OP
       18 天前
    @540852101 我尝试了编译 Music 跟 Gallery2 ,编译时间都很短一二十秒,哎就 SystemUI 特慢 @LeviMarvin


    @lixile 存储是 ssd ,应该不是 IO 问题,你指的是开启 CCACHE 么,系统界面,基本是 Java 编译这个作用不知道大不大
    bunnyblueair
        17
    bunnyblueair  
       18 天前
    class->dex 这部分最慢了 最开始这部分单线程 我记得应该是后来编译系统优化了每个 class 都转换为一个对应的 dex 然后 dex merge 后来速度提高了不少。不知道 System UI 的编辑逻辑,好几年没搞 Android 了。看一下哪个步骤耗时,要么 aapt 要么 class2dex 。
    honhon
        18
    honhon  
    OP
       18 天前
    @bunnyblueair 不太了解如何分析每个步骤的耗时情况,大佬可以指导一下么
    nguoidiqua
        19
    nguoidiqua  
       18 天前
    电脑什么系统
    1una0bserver
        20
    1una0bserver  
       18 天前 via Android
    一眼 kapt 和 dagger2 ,我自己写的应用用这俩的时候编译每次都得等一会,而且经常因为莫名其妙的原因编译卡住,清理缓存能缓解。迁移到 ksp+k2 能缓解一些,但还是慢。后来想想我写的也没多复杂,也不吃性能,研究了下迁移到 kodein 并移除 ksp 后,速度快多了,增量也能秒编译了。不过你这是 systemui ,没法像我那样迁移,无解,最多能清下编译缓存试试。
    honhon
        21
    honhon  
    OP
       18 天前
    @nguoidiqua Ubuntu 20.04.6 LTS


    @1una0bserver 是的 kapt 和 dagger2 ,无解就很难受,clean 后编译十五分钟起,再编译还是差不多时间
    honhon
        22
    honhon  
    OP
       17 天前
    不知如果把项目移出来用 gradle 编译会不会块一些,还是同样收到 kapt dagger2 限制
    honhon
        23
    honhon  
    OP
       17 天前
    在 Android.bp 配置 android_app 的 optimize 的 obfuscate=false ,关闭混淆能提高编译速度
    eleba
        24
    eleba  
       11 天前
    我去年换了个 9950x 编译飞快
    honhon
        25
    honhon  
    OP
       10 天前
    @eleba 处理器性能应该够用,毕竟使用率也不高,主要问题估计还是任务之间有依赖关系,基本都在队列状态
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5548 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 01:31 · PVG 09:31 · LAX 18:31 · JFK 21:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.