V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
honhon
V2EX  ›  Android

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

  •  
  •   honhon · May 21, 2025 · 4412 views
    This topic created in 344 days ago, the information mentioned may be changed or developed.

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

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


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


    @1una0bserver 是的 kapt 和 dagger2 ,无解就很难受,clean 后编译十五分钟起,再编译还是差不多时间
    honhon
        22
    honhon  
    OP
       May 22, 2025
    不知如果把项目移出来用 gradle 编译会不会块一些,还是同样收到 kapt dagger2 限制
    honhon
        23
    honhon  
    OP
       May 22, 2025
    在 Android.bp 配置 android_app 的 optimize 的 obfuscate=false ,关闭混淆能提高编译速度
    eleba
        24
    eleba  
       May 28, 2025
    我去年换了个 9950x 编译飞快
    honhon
        25
    honhon  
    OP
       May 29, 2025
    @eleba 处理器性能应该够用,毕竟使用率也不高,主要问题估计还是任务之间有依赖关系,基本都在队列状态
    rcj6056
        26
    rcj6056  
       14 days ago
    @honhon 做底层开发的嘛
    honhon
        27
    honhon  
    OP
       14 days ago
    @rcj6056 系统应用开发,你说的底层是指那方便
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2640 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 50ms · UTC 12:06 · PVG 20:06 · LAX 05:06 · JFK 08:06
    ♥ Do have faith in what you're doing.