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

2022-03-23 16:56:26 +08:00
 zinwalin

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

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

多谢

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

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/842402

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX