Aosp 14 源码单模块编译慢,如何优化 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
honhon
V2EX    Android

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

  •  
  •   honhon 141 天前 2800 次点击
    这是一个创建于 141 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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


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


    @1una0bserver 是的 kapt 和 dagger2 ,无解就很难受,clean 后编译十五分钟起,再编译还是差不多时间
    honhon
        22
    honhon  
    OP
       140 天前
    不知如果把项目移出来用 gradle 编译会不会块一些,还是同样收到 kapt dagger2 限制
    honhon
        23
    honhon  
    OP
       140 天前
    在 Android.bp 配置 android_app 的 optimize 的 obfuscate=false ,关闭混淆能提高编译速度
    eleba
        24
    eleba  
       134 天前
    我去年换了个 9950x 编译飞快
    honhon
        25
    honhon  
    OP
       133 天前
    @eleba 处理器性能应该够用,毕竟使用率也不高,主要问题估计还是任务之间有依赖关系,基本都在队列状态
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     935 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 18:58 PVG 02:58 LAX 11:58 JFK 14:58
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86