Android添加项目编译.[笔记]

一.产品配置文件

[由底层向上构建顺序: 芯片架构层 -> 核心板层 -> 设备层 -> 产品层]

  1. 芯片架构层: 产品使用的硬件架构,ARM X86等.
  2. 核心主板层: 硬件电路的核心板配置
  3. 设备层: 外围设备的配置, 键盘,鼠标, 外接设备等.
  4. 产品层: 最终系统生成需要的配置, 支持(默认)的国家语言, 是否摄像头, sensor等.
    [我们只需要配置产品层就行了.]

二.如何把产品加入编译

1.vendorsetup.sh,这个文件用来统计这个基线所有的产品[型号] (下面以虚拟产品型号:c123)在源码/device/c123/下,新建vendorsetup.sh,里面添加”add_lunch_combo c123[产品名称]”,这个vendorsetup.sh文件将会在 envsetup.sh[build/下]中扫描device和vendor这两个文件:

# Execute the contents of any vendorsetup.sh files we can find.
for f in `test -d device && find -L device -maxdepth 4 -name 'vendorsetup.sh' 2> /dev/null | sort` \
`test -d vendor && find -L vendor -maxdepth 4 -name 'vendorsetup.sh' 2> /dev/null | sort`
do
    echo "including $f"
    . $f
done
unset f
  1. AndroidProducts.mk,这个存放在具体产品文件下[device/c123/],用来定义产品的一些配置信息.一般只用来做一个'重定向':
PRODUCT_MAKEFILES := \
    $(LOCAL_DIR)/c123.mk

3.在device/c123/下新建名称为c123.mk[就是AndroidProducts.mk的重定向文件]这个文件通常会配置一些手机需要的文件信息,如media,audio等xml文件,GMS包,jar引入,产品信息的命名等,也可以将一些需要拷贝到手机里面的文件放在这里:

# media_profiles and media_codecs xmls
PRODUCT_COPY_FILES += device/c123/media/media_profiles.xml:system/etc/media_profiles.xml \
                      device/c123/media/media_codecs.xml:system/etc/media_codecs.xml \
...
PRODUCT_NAME := 产品名称[设置 - 关于设备]
PRODUCT_DEVICE := 设备名称
PRODUCT_BRAND := 手机品牌
PRODUCT_MODEL := 产品型号
...

4.BoardConfig.mk,主要是配置使用什么架构,调整分区,设置分区大小等.也是在device/c123/目录下.

TARGET_ARCH := arm64
TARGET_ARCH_VARIANT := armv8-a
TARGET_CPU_ABI := arm64-v8a
...
BOARD_SYSTEMIMAGE_PARTITION_SIZE := 分区大小[单位是bit]
BOARD_USERDATAIMAGE_PARTITION_SIZE := 分区大小[单位是bit]

基本以上文件都是放在项目文件下的,在源码根目录执行 ‘source build/envsetup.sh’ 的时候会自动把这些文件加载进行,然后 ‘choosecombo’ 选择添加的项目名,然后执行 ‘make’ 就会编译那个项目了.
关于Android.mk这个文件是一个Android编译单个目标的makefile.基本上源码里面每个apk生成以及farmework很多编译都需要这个文件.
  
注:源码是Android 6.0.

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值