为AOSP创建特定的设备树

26

我按照谷歌官方的教程构建了自己的AOSP,并在所有步骤中都取得了成功:我在Nexus模拟器上运行着“纯AOSP版本”。https://source.android.com/source/building.html

我的问题是,我的某些罕见设备附带了一些明显不需要的预安装应用程序。我想将纯AOSP移植到我的设备上 - 不包括任何改进或新功能(因此,例如,我不想知道如何构建CM git库)。

  1. 是这样工作的,只需将正确的文件添加到/device/vendor/model文件夹中,然后在主分支的cwd下执行$ . build/envsetup.sh命令,正确吗?

  2. 如果是这样,我需要将哪些文件及其内容放置在/device/vendor/model文件夹下呢?我找到了很多指南,介绍如何拉取已有的CM树或其他东西(http://xda-university.com/as-a-developer/porting-aosp-roms-using-source-code),以及包括AOSP的Android设备配置,并查看了一些设备的git库,尝试找出最小完整文件集及其内容,但我没有找到任何相关性。我认为必须有最小完整的文件集,并且每个文件的存在都有编程原因。而在现有的git库中所看到的是这个集合 + 每个开发人员添加的自定义附加项。

  3. 之后,如何确定要执行$ lunch <Build name>-<Buildtype>来建立名字和构建类型?

  4. 如何集成$ make otapackage以构建熟悉的zip文件,以便通过恢复模式(如CWM)加载?

这是在我之前的帖子"为特定硬件设备移植AOSP"之后,但这里的问题更具体。


1
你的设备是什么?你需要厂商二进制文件、内核和设备树。一些手机制造商(如LG)在网上提供内核源代码,而其他制造商则可能没有。那么,你“稀有”的Android设备的型号和/或代号是什么?如果你没有内核源代码,你可能无法完成它。如果你无法获取内核源代码,并且愿意承担一定的风险,一些人在使用最接近的具有工作内核源代码的设备进行测试时取得了成功。让我知道。我是VanirAOSP的成员,如果可能的话可以帮助你。 - SudoSURoot
@SudoSURoot 谢谢!1. 那么您的意思是我的方法不对 - 仅仅配置一些make文件是不够的,我还需要实际编写一些内核代码?2. 然后,在此之后 - 我需要替换AOSP的内核文件,并与新的make文件(“设备树”)一起编译?3. 我在谈论“小米红米2” - 它很新,所以不是CM,我也不喜欢miui。谢谢! - michael
1
嗨,我很好奇,我也想要一些答案 :) - Tofandel
@Tofandel 基本上有赏金机制... - michael
有什么新情况吗?我正在面临类似的困境。 - John11
1个回答

1
  1. 向AOSP添加新设备的过程: 首先,设备定义应放置在device/vendor/model路径中。然后,您应该添加具有COMMON_LUNCH_CHOICES的AndroidProducts.mk文件,该文件指定您的AOSP的名称和构建类型(Eng,userdebug,release),以及应指向您的主设备makefile的PRODUCT_MAKEFILES。

  2. device/vendor/model包含设备本身的核心配置,例如蓝牙配置、audio_policy配置、wpa_supplicant配置、设备树、预编译硬件固件或用于引导或恢复的预编译映像。它还包含框架覆盖,您可以在其中配置一些框架参数,并决定您的Android是否应具有导航栏或您想要什么类型的状态栏。它还包含SELinux策略,您可以为不同的进程制定规则,定义新上下文,甚至禁止某些进程运行或访问某些资源。最后,它包含了您可以包括哪些软件包的makefiles(aosp.mk)或您的设备配置(BoardConfig.mk),例如CPU架构、GPU驱动程序名称或是否使用硬件合成器,或者您的系统是否具有WiFi、蓝牙,如果有,它们的地址和所需驱动程序的名称是什么。此外,我们还有init(在您想要向Android引导过程添加一些附加更改时),fstab(描述Android分区以及应如何挂载它们)和ueventd以及应在此目录中的一些udev规则。

  3. 看一下第1点。

  4. 对于OTA更新包,首先您需要生成必要的密钥,这对于生成ota更新的zip文件至关重要。如果您现在开始,我建议您使用fastboot。但是,如果您想要,我可以提供一个链接,显示如何加密所需的软件包。当加密完成后,您可以通过此命令生成OTA映像:

    img_from_target_files signed-target-files.zip signed-img.zip

OTA升级指南: https://source.android.com/devices/tech/ota/sign_builds

  1. 我认为你所寻找的不是OTA包,而是如何形成统一的zip文件。OTA包将在系统安装后进行更改。我的OTA包有约500MB的文件(有效负载)等。这是完整更新。增量更新要小得多。然而,当我构建一个可刷的包时,我会得到大约2.6GB的文件。刷机因设备而异。QCom(高通)需要QFil工具来刷全系统。或者通过fastboot刷入单个镜像。所以我不知道第4步对你是否适用。 看起来原始答案是基于谷歌糟糕的文档而得出的。当涉及到AOSP时,经验是必须的,文档永远不够。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接