zinwalin
V2EX  ›  Android

手机厂商是怎么维护多个版本?

By zinwalin at 2022 年 3 月 23 日 · 14635 次点击

比如小米,他们在安卓 AOSP 上修改,有多款手机,怎么做代码管理 ?

是多个分支吗? 还是在源码里通过 if else 来做管理? 或者是像 buildenvsetup.sh 那样传入不同的型号?

多谢

5 条回复  •  2022-11-03 09:08:41 +08:00
cc666
   1
cc666  
   2022 年 3 月 23 日
二者都有,以前 mi 厂用的分支,每个产品一个分支,github 上能找到相应的内容,某厂用的的配置文件,这个具体情况具体对待,甚至同一个厂家不同的模块都有不同的方案。
SupperMary
   2
SupperMary  
   2022 年 3 月 23 日
可以多分支管理,AOSP 里面有 device 的概念(大白话来讲就是某个文件夹里面保存了某个机型的所有相关配置,编译的时候从这里取相应的信息),通常来说,只要 SOC 相同,多数情况下都能通过不同的 device/product 来管理不同的产品,如果适配得够多,同一套代码也可以适配多种 SOC 的,也是从 device/product 里面取相应的配置信息。相同的部分还可以抽出来让产品公用。
zinwalin
   3
zinwalin  
OP
   2022 年 3 月 23 日
@SupperMary 多谢回复,像 SystemUI 的定制,不同的产品有不同的界面,这种哪种代码管理方式更容易? 如果是分支管理,那需要经常做一些 cherry-pick 的操作,因为有相同的修改要合并到不同的分支里。
SupperMary
   4
SupperMary  
   2022 年 3 月 23 日   ❤️ 1
@zinwalin 不同的产品有不同的定制的情况,AOSP 还有一种叫 overlay 的机制,界面不同也可以根据每个产品指定一个 xml ,这个 xml 里面覆盖原生的某些配置项,比如这个产品不需要状态栏或者 3 大金刚键,就在 xml 里面写好(这个 xml 通常是放在这个产品自己的目录里面的),AOSP 编译的时候,原生代码里面的配置与产品配置里有冲突的地方,就以产品配置为准。system_ui 里面的很多 service 也可以用类似的方法按不同产品来配好。
luckyc
   5
luckyc  
   2022 年 11 月 3 日
用的 overlay+分支吧.
© 2026 V2EX · 40ms · 3.9.8.5