1
Android2MCU 2021-01-12 01:42:03 +08:00 via iPhone 1
全编译的话看设备性能,普通的话就 1 、2 个小时,所以就不能改一行代码就全编一次,很多模块都可以单编,再更新进去,这样就很快了,性能好的话,可能几秒就编好了。
|
2
cosfun OP @Android2MCU 大佬好,一直对 android 系统挺感兴趣的,就是不知道要怎么入门,如何编译如何单编这种有什么书会系统讲解的吗
|
3
irytu 2021-01-12 02:49:11 +08:00 via iPhone
没做过安卓 但是编译的话可以分模块 把每个模块先编译成一个 lib 后面更新的话 只需要重新链接 lib 就行
|
4
irytu 2021-01-12 02:53:13 +08:00 via iPhone
补充一个关键字:分离编译
|
5
nerocc 2021-01-12 02:54:05 +08:00 via Android 4
别说是系统了,大一点的项目一次也都是好几个小时。这种规模的项目不是说改一行就跑一次来检查写的对不对。都是有各种单元测试,然后部署到服务器上面统一编译测试的。当然个人开发者自己写的情况下,很多人爱咋咋地。我还记得我第一次接触一个大项目,编译一次一个小时。我问同事编译的时候干什么,他说站起来走一走。。。我那个时候真的就是,每天改 8 行代码,这一天就过去了。
|
6
js8510 2021-01-12 06:43:08 +08:00
取决于你改了多少,你 devserver 多大还有你有没有强大的 remote build service. 我很多年前实习的时候,在 16GB 的 devserver 上冷编译一次是 4 小时。就是说我一天啥也不敢,编译两次就下班了。 但是其实你不用每次都全部重新编译的,你往往只改某一个模块。可以依赖 unittest.另外像在 google, 都有 build service. 你只用 publish 一个 diff 就可以等 build service 给你 build.build service 都有 in memory cache 等各种优化,所以也要不了几个小时了。
|
7
js8510 2021-01-12 06:49:41 +08:00 2
“那平常做 android 系统和 rom 开发的人如果写了一个 bug,岂不是就要花几个小时才能验证” 几个小时是非常快的了。。几个月都是有的。code base 大了系统复杂了以后 debug 难度会指数级增长。尤其是 AOSP 或者是非常抽象的 backend service. 如果缺乏合适的测试,bug 又难以在单机复现,往往靠的就是经验和大量读代码。我遇到的最难的 bug 往往都是( 1 ) 很难重现 没有 log, 没有 stack trace.( 2 ) 很难验证。 一旦发现了问题,修市场就是一两行。我修过一个 AOSP bug, 花了两个月。最后 fix 就是加一个 “*”
|
8
fengshuo211 2021-01-12 06:54:59 +08:00
工程师都用很强的台式吧,那种 64G 内存,最好的 CPU 的那种,这种编译器来应该快。
|
10
hinzer 2021-01-12 07:26:10 +08:00
可以但独编译模块。整编的话,增量编译也挺快的
|
11
chenluo0429 2021-01-12 07:39:54 +08:00 via Android
很久没编译过了,在我的机器上,第一次整编,6.0 以前大概要 50 分钟,7.0 要接近两个小时。之后再整编大概要十来分钟。单编模块根据规模时间在几十秒到一两分钟不等吧
|
12
azenk 2021-01-12 07:48:38 +08:00 via Android 1
上 3990x,然后 make -j100 手动狗头
|
13
rpw 2021-01-12 07:56:12 +08:00 via Android
双 CPU,128 核心服务器,256G 内存,编译 Android 10 大概三四十分钟,11 要一到两个小时
|
14
illusionist 2021-01-12 08:09:39 +08:00 via iPhone 1
11 的话引入了高通 QSSI 和一些 MTK 方案会慢一些,原生 AOSP 的话最新 master 分支用 Macbook 16 寸 VM 虚拟机,i9 8 核 16G 内存大概两个半小时可以编译好。大部分时候可以单编某个路径下的模块。我之前我 32 核的 AMD 线程撕裂者配合 32 内存和 2T 固态,28 分钟搞定整个系统编译😊
|
15
l4ever 2021-01-12 08:13:19 +08:00 via iPhone
我司是一家生产行业专用设备的厂商,方案有三星和瑞芯微两种,共七八个产品。
我的工作就是调整 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->生产使用新的系统固件烧录。 |
16
Flywith24 2021-01-12 08:29:20 +08:00
看机器,全编一个小时,单独模块五分钟
|
17
tianyamomo 2021-01-12 08:39:57 +08:00
那种大公司有分布式编译的,而且只改一点点的话又不会全部编译
|
18
binsys 2021-01-12 09:00:02 +08:00
之前的公司出 OTA 都是 jenkins + docker 的 build server,一次平均 40 分钟左右。
本地 SSD,最快的貌似也就 25 分钟。 |
19
besto 2021-01-12 09:16:29 +08:00
1,见 18 楼,40+核强一点的 server 30 分钟
2,只有第一次需要全编译(还有验证 release 的时候) 3,对于 so 类,可以只编译单独 so,几十秒,比较慢的是改了 Android.mk(Android.bp) 4,对于 kernel 等在 boot 分区上的,可以只生成 boot 分区,只烧录 boot 分区 5,即使是需要重新整个 image 来验证的 bug,在完成第一次编译之后,也只是打包 image 的时间+烧录时间 |
21
northeastwolf 2021-01-12 09:38:27 +08:00
对于特定模块,可以单独编译之后再打包 image 刷机验证,比如 framework 相关的修改就是这样操作,不必整体编译一次
当然前提是之前已经完整编译过一次之后,有了缓存才可以单独编译 具体操作命令可以参考 google 文档 https://source.android.google.cn/setup/build/building#build-the-code |
22
aheadlead 2021-01-12 09:53:09 +08:00 via iPhone
|
23
CFM880 2021-01-12 10:21:05 +08:00
|
24
yinzhili 2021-01-12 10:25:02 +08:00
以前看同事做安卓机顶盒固件编译的时候都是拿服务器来编译的,而即便是服务器的 CPU 也要几小时才能编译完
|
25
mygame 2021-01-12 10:37:10 +08:00
第一次编译久点, 一般公司都会有 40 核左右的编译服务器, 一小时以内吧. 这是我在 wsl2 虚拟机上编译 aosp 11 的记录, hqw700.github.io/2021/01/01/aosp-build/, i5-9600k 耗时 3 小时. 调试的话单编模块 push 就行. 这是我今年计划写的一个博客, 主要介绍 android 系统相关的技巧, 问题分析, 源码解读什么的, 欢迎大家关注.
|
26
12101111 2021-01-12 12:50:46 +08:00
c/c++代码可以用 ccache, 基本上没有变动的代码编译速度=io 速度
java 代码可以单独打包 |
27
zzzmh 2021-01-12 14:42:10 +08:00
我不懂安卓,但我知道 3970x 一定可以缩短编译时间 [doge]
|
28
bytesfold 2021-01-12 18:44:45 +08:00
lineageos 好像可以看到服务器的编译版本进度
|
29
orannge 2021-01-12 21:10:19 +08:00
都是服务器编译,几十核+上百 G 内存+固态(容量不够机械凑,毕竟编出来一个项目一两百 G),第一次全量编译后可以增量编译,改动涉及的模块越少编译越快。
|
30
jjpprrrr 2021-01-13 08:10:55 +08:00
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 的话,大多数代码改动不需要完整编译。
|
31
user0 2021-01-13 08:45:09 +08:00 via Android
高通 android q 引入了 qssi 编译特别慢 10700 要编译 4 个小时
|
32
zzukylin 2021-01-13 09:49:22 +08:00
i7-10510U+16GB 内存,编译 Android 10 需要至少 4 个小时!
|