跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • android 系统编译一次要几小时?
未分類
2021 年 1 月 14 日

android 系统编译一次要几小时?

android 系统编译一次要几小时?

資深大佬 : cosfun 0

今天才知道 android 系统编译一次要好几个小时,那平常做 android 系统和 rom 开发的人如果写了一个 bug,岂不是就要花几个小时才能验证,还是说有类似热更新一样的调试方法?
大佬有話說 (32)

  • 資深大佬 : Android2MCU

    全编译的话看设备性能,普通的话就 1 、2 个小时,所以就不能改一行代码就全编一次,很多模块都可以单编,再更新进去,这样就很快了,性能好的话,可能几秒就编好了。

  • 主 資深大佬 : cosfun

    @Android2MCU 大佬好,一直对 android 系统挺感兴趣的,就是不知道要怎么入门,如何编译如何单编这种有什么书会系统讲解的吗

  • 資深大佬 : irytu

    没做过安卓 但是编译的话可以分模块 把每个模块先编译成一个 lib 后面更新的话 只需要重新链接 lib 就行

  • 資深大佬 : irytu

    补充一个关键字:分离编译

  • 資深大佬 : nerocc

    别说是系统了,大一点的项目一次也都是好几个小时。这种规模的项目不是说改一行就跑一次来检查写的对不对。都是有各种单元测试,然后部署到服务器上面统一编译测试的。当然个人开发者自己写的情况下,很多人爱咋咋地。我还记得我第一次接触一个大项目,编译一次一个小时。我问同事编译的时候干什么,他说站起来走一走。。。我那个时候真的就是,每天改 8 行代码,这一天就过去了。

  • 資深大佬 : js8510

    取决于你改了多少,你 devserver 多大还有你有没有强大的 remote build service. 我很多年前实习的时候,在 16GB 的 devserver 上冷编译一次是 4 小时。就是说我一天啥也不敢,编译两次就下班了。 但是其实你不用每次都全部重新编译的,你往往只改某一个模块。可以依赖 unittest.另外像在 google, 都有 build service. 你只用 publish 一个 diff 就可以等 build service 给你 build.build service 都有 in memory cache 等各种优化,所以也要不了几个小时了。

  • 資深大佬 : js8510

    “那平常做 android 系统和 rom 开发的人如果写了一个 bug,岂不是就要花几个小时才能验证” 几个小时是非常快的了。。几个月都是有的。code base 大了系统复杂了以后 debug 难度会指数级增长。尤其是 AOSP 或者是非常抽象的 backend service. 如果缺乏合适的测试,bug 又难以在单机复现,往往靠的就是经验和大量读代码。我遇到的最难的 bug 往往都是( 1 ) 很难重现 没有 log, 没有 stack trace.( 2 ) 很难验证。 一旦发现了问题,修市场就是一两行。我修过一个 AOSP bug, 花了两个月。最后 fix 就是加一个 “*”

  • 資深大佬 : fengshuo211

    工程师都用很强的台式吧,那种 64G 内存,最好的 CPU 的那种,这种编译器来应该快。

  • 資深大佬 : numgao

    @js8510 哪像你这样的 工资得老高了吧

  • 資深大佬 : hinzer

    可以但独编译模块。整编的话,增量编译也挺快的

  • 資深大佬 : chenluo0429

    很久没编译过了,在我的机器上,第一次整编,6.0 以前大概要 50 分钟,7.0 要接近两个小时。之后再整编大概要十来分钟。单编模块根据规模时间在几十秒到一两分钟不等吧

  • 資深大佬 : azenk

    上 3990x,然后 make -j100 手动狗头

  • 資深大佬 : rpw

    双 CPU,128 核心服务器,256G 内存,编译 Android 10 大概三四十分钟,11 要一到两个小时

  • 資深大佬 : illusionist

    11 的话引入了高通 QSSI 和一些 MTK 方案会慢一些,原生 AOSP 的话最新 master 分支用 Macbook 16 寸 VM 虚拟机,i9 8 核 16G 内存大概两个半小时可以编译好。大部分时候可以单编某个路径下的模块。我之前我 32 核的 AMD 线程撕裂者配合 32 内存和 2T 固态,28 分钟搞定整个系统编译

  • 資深大佬 : l4ever

    我司是一家生产行业专用设备的厂商,方案有三星和瑞芯微两种,共七八个产品。

    我的工作就是调整 android 系统,集成第三方 apk 和自己公司开发的 apk 。

    编译时间:
    全编译一次三星方案大约 30 分钟,瑞芯微大约 45 分钟。这个看编译服务器的性能。(三星也没有给我们 kernel 源代码,都是他们编译好我们直接用的)

    单独调试,大致是这样:
    source build/envsetup.sh
    lunch
    cd frameworks/base/packages/
    mmm SystemUI
    这样 SystemUI 就单独编译好了,这时候
    adb push 到机器上。

    adb shell su -c killall com.android.systemui
    杀掉进程,让他自动启动新版

    编译的包分 user oem 和 debug 版。
    user oem 版做了调整
    打不开开发者选项。

    修复 bug:
    代码都是方案商给的,有 bug,
    但很少要自己改,都是让他们改好我合并即可。

    增加需求:
    这就很多了,大部分是集成第三方软件啊,system ui 调整啊,倒也简单

    提测:
    我会编译 user oem 包和 debug 包上传 svn
    走流程提测->测试部测试->发布到生产 svn->生产使用新的系统固件烧录。

  • 資深大佬 : flywith24

    看机器,全编一个小时,单独模块五分钟

  • 資深大佬 : tianyamomo

    那种大公司有分布式编译的,而且只改一点点的话又不会全部编译

  • 資深大佬 : binsys

    之前的公司出 OTA 都是 jenkins + docker 的 build server,一次平均 40 分钟左右。
    本地 SSD,最快的貌似也就 25 分钟。

  • 資深大佬 : besto

    1,见 18 ,40+核强一点的 server 30 分钟
    2,只有第一次需要全编译(还有验证 release 的时候)
    3,对于 so 类,可以只编译单独 so,几十秒,比较慢的是改了 Android.mk(Android.bp)
    4,对于 kernel 等在 boot 分区上的,可以只生成 boot 分区,只烧录 boot 分区
    5,即使是需要重新整个 image 来验证的 bug,在完成第一次编译之后,也只是打包 image 的时间+烧录时间

  • 資深大佬 : shelterz

    @l4ever Build manager?

  • 資深大佬 : northeastwolf

    对于特定模块,可以单独编译之后再打包 image 刷机验证,比如 framework 相关的修改就是这样操作,不必整体编译一次
    当然前提是之前已经完整编译过一次之后,有了缓存才可以单独编译
    具体操作命令可以参考 google 文档
    https://source.android.google.cn/setup/build/building#build-the-code

  • 資深大佬 : aheadlead

    以前在某手机厂修手机,公司配的台式机配置如下:

    [email protected]
    16G 2400Mhz
    4T 的机械盘( SMR )

    编译完整的 ROM 第一次大概得 5-6h 。仅供参考。

  • 資深大佬 : CFM880

    macbook pro 15 款 16G,2.2 GHz 虚拟机里全编 Android11,5 个半小时 android 系统编译一次要几小时?

  • 資深大佬 : yinzhili

    以前看同事做安卓机顶盒固件编译的时候都是拿服务器来编译的,而即便是服务器的 CPU 也要几小时才能编译完

  • 資深大佬 : mygame

    第一次编译久点, 一般公司都会有 40 核左右的编译服务器, 一小时以内吧. 这是我在 wsl2 虚拟机上编译 aosp 11 的记录, hqw700.github.io/2021/01/01/aosp-build/, i5-9600k 耗时 3 小时. 调试的话单编模块 push 就行. 这是我今年计划写的一个博客, 主要介绍 android 系统相关的技巧, 问题分析, 源码解读什么的, 欢迎大家关注.

  • 資深大佬 : 12101111

    c/c++代码可以用 ccache, 基本上没有变动的代码编译速度=io 速度
    java 代码可以单独打包

  • 資深大佬 : zzzmh

    我不懂安卓,但我知道 3970x 一定可以缩短编译时间 [doge]

  • 資深大佬 : bytesfold

    lineageos 好像可以看到服务器的编译版本进度

  • 資深大佬 : orannge

    都是服务器编译,几十核+上百 G 内存+固态(容量不够机械凑,毕竟编出来一个项目一两百 G),第一次全量编译后可以增量编译,改动涉及的模块越少编译越快。

  • 資深大佬 : jjpprrrr

    R5 3600 + 64GB 内存,AOSP android-11.0.0_r28 tag 加上 CAF 的一些 vendor 部件,kernel 开了 ThinLTO,有 ccache 的情况下,make clean 之后编译大概是四十多分钟,make installclean 之后大概是七八分钟。更改 framework 之后 make installclean 大概十几分钟不到二十分钟,单独编译 framework-res 十分钟以下,其他的小组件就更快了。熟悉 android 的话,大多数代码改动不需要完整编译。

  • 資深大佬 : user0

    高通 android q 引入了 qssi 编译特别慢 10700 要编译 4 个小时

  • 資深大佬 : zzukylin

    i7-10510U+16GB 内存,编译 Android 10 需要至少 4 个小时!

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具