敢说敢作敢为, 无怨无恨无悔。这篇文章主要讲述Android添加项目编译.相关的知识,希望能为你提供帮助。
一.产品配置文件[由底层向上构建顺序: 芯片架构层 ->
核心板层 ->
设备层 ->
产品层]
- 芯片架构层: 产品使用的硬件架构,ARM X86等.
- 核心主板层: 硬件电路的核心板配置
- 设备层: 外围设备的配置, 键盘,鼠标, 外接设备等.
- 产品层: 最终系统生成需要的配置, 支持(默认)的国家语言, 是否摄像头, sensor等.
[我们只需要配置产品层就行了.]
# 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
2.androidProducts.mk,这个存放在具体产品文件下[device/c123/],用来定义产品的一些配置信息.一般只用来做一个'重定向':
PRODUCT_MAKEFILES := $(LOCAL_DIR)/c123.mk1212
【Android添加项目编译.】3.在device/c123/下新建名称为c123.mk[就是AndroidProducts.mk的重定向文件]这个文件通常会配置一些手机需要的文件信息,如media,audio等xml文件,GMS包,jar引入,产品信息的命名等,也可以将一些需要拷贝到手机里面的文件放在这里:
# media_profiles and media_codecs 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.[此文章本人于2016-11-16在CSDN发表过.]
本文出自 “Amos的技术博客” 博客,转载请与作者联系!
推荐阅读
- 第二节课-Data-driven approach:KNN和线性分类器分类图片
- Android:子线程向UI主线程发送消息
- 比较pagerequestsessionapplication的使用范围(转自用)
- Cause: java.lang.ClassCastException: java.lang.String cannot be castto org.apache.ibatis.mapping.M
- Android(制作Update.zip升级包)
- 用树莓派改装电风扇及实现Android500.gs遥控
- Android权限管理PermissionsDispatcher2.3.2使用+原生6.0权限使用
- Android 跳转到系统应用管理
- 教你如何反编译app,拿到加密方式