Android源码中添加自己的Product

文章描述了名为果冻(Jelly)的公司如何开发一款名为大米14(Rice14)的手机,该手机对标苹果14。在源码中,他们创建了特定的目录结构和文件,如AndroidProducts.mk、BoardConfig.mk和rice14.mk,用于定义硬件配置、Wi-Fi设置和产品属性。配置中包括了使用x86_64架构,以及对AndroidGSIs的适应。最后,通过执行构建命令进行验证。

这里假设我们的公司名叫果冻(Jelly),我们准备开发一款对标苹果 14 的手机,取名叫 大米14(Rice14)。

接下来我们在源码中添加我们自己的产品(Product)

在 device 目录下添加如下的目录与文件:

Jelly/
└── Rice14
    ├── AndroidProducts.mk
    ├── BoardConfig.mk
    └── rice14.mk

BoardConfig.mk 包含了硬件芯片架构配置,分区大小配置等信息这里我们直接使用 aosp_x86_64 的BoardConfig.mk 就行。
BoardConfig.mk 拷贝自 build/target/board/generic_x86_64/BoardConfig.mk

# x86_64 emulator specific definitions
TARGET_CPU_ABI := x86_64
TARGET_ARCH := x86_64
TARGET_ARCH_VARIANT := x86_64

TARGET_2ND_CPU_ABI := x86
TARGET_2ND_ARCH := x86
TARGET_2ND_ARCH_VARIANT := x86_64

TARGET_PRELINK_MODULE := false
include build/make/target/board/BoardConfigGsiCommon.mk
include build/make/target/board/BoardConfigEmuCommon.mk

BOARD_USERDATAIMAGE_PARTITION_SIZE := 576716800

BOARD_SEPOLICY_DIRS += device/generic/goldfish/sepolicy/x86

# Wifi.
BOARD_WLAN_DEVICE           :
Android 源码中修改 `ro.product.model` 属性值通常涉及修改设备的构建配置或系统属性文件。以下是具体步骤和注意事项: --- ### **方法 1:修改 `device.mk` 或 `BoardConfig.mk`** 1. **定位设备配置文件** 在 Android 源码中,找到设备的 `device/<厂商>/<设备名>/` 目录(如 `device/xiaomi/gemini/`)。 通常需要修改以下文件之一: - `device.mk` - `BoardConfig.mk` - `system.prop` 或 `product.prop` 2. **添加或修改属性** 在 `device.mk` 或 `BoardConfig.mk` 中添加: ```makefile PRODUCT_PROPERTY_OVERRIDES += \ ro.product.model=MyCustomModel ``` 或在 `system.prop` 中直接定义: ``` ro.product.model=MyCustomModel ``` --- ### **方法 2:修改 `build/make/core/Makefile`(全局修改)** 如果需要全局修改(不推荐,可能影响所有设备),可以修改 `build/make/core/Makefile` 中的默认值: ```makefile PRODUCT_DEFAULT_PROPERTY_OVERRIDES += \ ro.product.model=GlobalCustomModel ``` --- ### **方法 3:动态覆盖属性(调试用途)** 在代码中通过 `setprop` 临时修改(需 root 权限): ```bash adb shell setprop ro.product.model "TempModel" ``` 或在 Java 代码中: ```java SystemProperties.set("ro.product.model", "TempModel"); // 需要反射或系统权限 ``` --- ### **方法 4:修改 `init.rc` 或 `init.<设备>.rc`** 在设备的初始化脚本中覆盖属性(需修改 `init.rc` 或厂商自定义的 `init` 文件): ```rc on init setprop ro.product.model "InitCustomModel" ``` --- ### **注意事项** 1. **编译生效** 修改后需重新编译系统镜像并刷机: ```bash make -j8 adb reboot bootloader fastboot flash system system.img ``` 2. **属性只读性** `ro.*` 属性默认是只读的,部分设备可能限制动态修改。若需动态修改,需在 `init` 阶段或通过系统签名应用实现。 3. **厂商定制影响** 某些厂商可能通过 `odm` 或 `vendor` 分区的配置覆盖属性,需检查 `vendor.img` 中的配置。 4. **合规性** 修改 `ro.product.model` 可能影响 Google Play 认证或厂商服务,需确保符合设备规范。 --- ### **验证修改** 刷机后通过以下命令检查: ```bash adb shell getprop ro.product.model ``` 或查看 `/system/build.prop` 文件。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

帅气的铅笔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值