V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zinwalin
V2EX  ›  Android

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

  •  
  •   zinwalin · 2022-03-23 16:56:26 +08:00 · 10304 次点击
    这是一个创建于 1009 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    多谢

    5 条回复    2022-11-03 09:08:41 +08:00
    cc666
        1
    cc666  
       2022-03-23 17:02:50 +08:00
    二者都有,以前 mi 厂用的分支,每个产品一个分支,github 上能找到相应的内容,某厂用的的配置文件,这个具体情况具体对待,甚至同一个厂家不同的模块都有不同的方案。
    SupperMary
        2
    SupperMary  
       2022-03-23 17:07:49 +08:00
    可以多分支管理,AOSP 里面有 device 的概念(大白话来讲就是某个文件夹里面保存了某个机型的所有相关配置,编译的时候从这里取相应的信息),通常来说,只要 SOC 相同,多数情况下都能通过不同的 device/product 来管理不同的产品,如果适配得够多,同一套代码也可以适配多种 SOC 的,也是从 device/product 里面取相应的配置信息。相同的部分还可以抽出来让产品公用。
    zinwalin
        3
    zinwalin  
    OP
       2022-03-23 17:31:23 +08:00
    @SupperMary 多谢回复,像 SystemUI 的定制,不同的产品有不同的界面,这种哪种代码管理方式更容易? 如果是分支管理,那需要经常做一些 cherry-pick 的操作,因为有相同的修改要合并到不同的分支里。
    SupperMary
        4
    SupperMary  
       2022-03-23 17:37:29 +08:00   ❤️ 1
    @zinwalin 不同的产品有不同的定制的情况,AOSP 还有一种叫 overlay 的机制,界面不同也可以根据每个产品指定一个 xml ,这个 xml 里面覆盖原生的某些配置项,比如这个产品不需要状态栏或者 3 大金刚键,就在 xml 里面写好(这个 xml 通常是放在这个产品自己的目录里面的),AOSP 编译的时候,原生代码里面的配置与产品配置里有冲突的地方,就以产品配置为准。system_ui 里面的很多 service 也可以用类似的方法按不同产品来配好。
    l4ever
        5
    l4ever  
       2022-11-03 09:08:41 +08:00
    用的 overlay+分支吧.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5453 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 08:27 · PVG 16:27 · LAX 00:27 · JFK 03:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.