Android 如何在源码中添加 Product

Android 如何在源码中添加 Product

1. 什么是 Product

在 App 的开发中,我们要去打渠道包,根据不同应用市场的要求打包出不同的 apk 包。

同样的道理,Android 的系统源码,经过简单的配置,可以打包出不同的系统镜像,用于不同的产品。例如rk3326_q,rk3566_t ,rk3568 均源于瑞芯微平台。

Android 系统源码是通过配置文件来实现 “分包” 的,配置文件将我们的源码配置为了不同的 Product,每一个 Product 适用于特定的硬件产品,这一系列的配置文件我们称为 Product

2. AOSP 中预制的 Product

我们在编译源码之前需要执行 lunch :

lunch

You're building on Linux

Lunch menu... pick a combo:
     1. aosp_arm-eng
     2. aosp_arm64-eng
     3. aosp_blueline-userdebug
     4. aosp_bonito-userdebug
     5. aosp_car_arm-userdebug
     6. aosp_car_arm64-userdebug
     7. aosp_car_x86-userdebug
     8. aosp_car_x86_64-userdebug
     9. aosp_cf_arm64_phone-userdebug
     10. aosp_cf_x86_64_phone-userdebug
     11. aosp_cf_x86_auto-userdebug
     12. aosp_cf_x86_phone-userdebug
     13. aosp_cf_x86_tv-userdebug
     14. aosp_coral-userdebug
     15. aosp_coral_car-userdebug
     16. aosp_crosshatch-userdebug
     17. aosp_crosshatch_car-userdebug
     18. aosp_flame-userdebug
     19. aosp_marlin-userdebug
     20. aosp_sailfish-userdebug
     21. aosp_sargo-userdebug
     22. aosp_taimen-userdebug
     23. aosp_walleye-userdebug
     24. aosp_walleye_test-userdebug
     25. aosp_x86-eng
     26. aosp_x86_64-eng
     27. beagle_x15-userdebug
     28. car_x86_64-userdebug
     29. fuchsia_arm64-eng
     30. fuchsia_x86_64-eng
     31. hikey-userdebug
     32. hikey64_only-userdebug
     33. hikey960-userdebug
     34. hikey960_tv-userdebug
     35. hikey_tv-userdebug
     36. m_e_arm-userdebug
     37. mini_emulator_arm64-userdebug
     38. mini_emulator_x86-userdebug
     39. mini_emulator_x86_64-userdebug
     40. poplar-eng
     41. poplar-user
     42. poplar-userdebug
     43. qemu_trusty_arm64-userdebug
     44. uml-userdebug

Which would you like? [aosp_arm-eng]

这里的每一个选项就是一个 Product, AOSP 预制了很多 Product。对应于 x86_64 模拟器,我们选择的是 aosp_x86_64-eng。

AOSP 中 Product 配置文件保存在以下两个目录:

  • build/target:aosp 提供的 product 配置文件保存在这个目录下,我们选择的 aosp_x86_64-eng Product 就配置在这个目录下。
  • device:芯片及方案厂商提供的 product 配置文件保存在这个目录下

先使用 tree 命令查看 build/target 基本的目录结构:

tree . -L 2
.
├── board
│   ├── Android.mk
│   ├── BoardConfigEmuCommon.mk
│   ├── BoardConfigGsiCommon.mk
│   ├── BoardConfigMainlineCommon.mk
│   ├── BoardConfigModuleCommon.mk
│   ├── BoardConfigPixelCommon.mk
│   ├── emulator_arm
│   ├── emulator_arm64
│   ├── emulator_x86
│   ├── emulator_x86_64
│   ├── emulator_x86_64_arm64
│   ├── emulator_x86_arm
│   ├── generic
│   ├── generic_64bitonly_x86_64
│   ├── generic_arm64
│   ├── generic_x86
│   ├── generic_x86_64
│   ├── generic_x86_64_arm64
│   ├── generic_x86_arm
│   ├── go_defaults_512.prop
│   ├── go_defaults_common.prop
│   ├── go_defaults.prop
│   ├── gsi_arm64
│   ├── gsi_system_ext.prop
│   ├── gsi_system_ext_user.prop
│   ├── mainline_arm64
│   ├── mainline_sdk
│   ├── mainline_x86
│   ├── mainline_x86_64
│   ├── mainline_x86_arm
│   ├── module_arm
│   ├── module_arm64
│   ├── module_x86
│   ├── module_x86_64
│   └── ndk
├── OWNERS
└── product
    ├── AndroidProducts.mk
    ├── aosp_64bitonly_x86_64.mk
    ├── aosp_arm64.mk
    ├── aosp_arm.mk
    ├── aosp_base.mk
    ├── aosp_base_telephony.mk
    ├── aosp_product.mk
    ├── aosp_x86_64.mk
    ├── aosp_x86_arm.mk
    ├── aosp_x86.mk
    ├── base.mk
    ├── base_product.mk
    ├── base_system_ext.mk
    ├── base_system.mk
    ├── base_vendor.mk
    ├── cfi-common.mk
    ├── core_64_bit.mk
    ├── core_64_bit_only.mk
    ├── core_minimal.mk
    ├── core_no_zygote.mk
    ├── default_art_config.mk
    ├── developer_gsi_keys.mk
    ├── empty-preloaded-classes
    ├── empty-profile
    ├── emulated_storage.mk
    ├── emulator.mk
    ├── emulator_system.mk
    ├── emulator_vendor.mk
    ├── full_base.mk
    ├── full_base_telephony.mk
    ├── full.mk
    ├── full_x86.mk
    ├── generic.mk
    ├── generic_no_telephony.mk
    ├── generic_ramdisk.mk
    ├── generic_system_arm64.mk
    ├── generic_system.mk
    ├── generic_system_x86_64.mk
    ├── generic_system_x86_arm.mk
    ├── generic_system_x86.mk
    ├── generic_x86.mk
    ├── go_defaults_512.mk
    ├── go_defau
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值