博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android编译
阅读量:6703 次
发布时间:2019-06-25

本文共 2113 字,大约阅读时间需要 7 分钟。

hot3.png

在build.sh中调用source buid/envsetup.sh

        source buid/envsetup.sh向当前shell会话中注册一些shell函数为命令

然后再调用注册的lunch函数来配置编译配置

        在lunch中使用build/core/config.mk来生成部分编译脚本

     在build/core/config.mk指定整体编译中使用的头文件目录、链接库目录及特定工具路径SRC_DROIDDOC_DIR  并包含了build/core/pathmap.mk建立硬件映射。调用了dumpvar.mk,就是打印某个变量的makefile。

 

Makefile -> build/core/main.mk -> build/core/config.mk -> build/core/envsetup.mk -> build/core/product_config.mk

在build/core/product_config.mk 中编译系统首先调用 build/core/product.mk中定义的函数get-all-product-makefiles ,来遍历整个vendor 的子目录, 找到vendor下所有的 AndroidProducts.mk, 不同子目录下的AndroidProducts.mk 中定义了不同的 PRODUCT_NAME, PRODUCT_DEVICE 等信息,(我们也可以通过 打开build/core/product_config.mk 中的#$(dump-products) 语句使控制台编译的时候输出所有product 的信息) , 接着build/core/product_config.mk 会调用resolve-short-product-name 将TARGET_PRODUCT匹配的AndroidProducts.mk 中定义的 PRODUCT_DEVICE 赋值给TARGET_DEVICE。

envsetup.mk文件主要包含了product_config.mk文件,然后指定了编译时要输出的所有文件的OUT目录

 

定义自己的产品编译项

1 添加vendorsetup.sh,此脚本应该能够在build/envsetup.sh中能够调用。

2 添加TARGET_DEVICE目录,并在此目录中创建BoardConfig.mk.  此文件在./build/core/envsetup.mk中会自动加载.  其后BoardConfig.mk所在的路径也就是TARGET_DEVICE_DIR也就是TARGET_DEVICE目录。

3 在TARGET_DEVICE目录,并在此目录中创建AndroidBoard.mk。此文件会在./build/target/board/Android.mk中包含。

 

Android平台Overlay机制

Android overlay 机制允许在不修改packages中apk的情况下,来自定义 framework和package中的资源文件,实现资源的定制。来达到显示不同的UI得目的(如MIUI)。

两种,PRODUCT_PACKAGE_OVERLAYS 将覆盖 DEVICE_PACKAGE_OVERLAYS 中的同一资源

Android——编译体系中的【PRODUCT_COPY_FILES】【ALL_PREBUILT】【BUILD_PREBUILT】

andriod系统层进行开发,或者进行移植时,时常需要添加文件到编译体系中,在最终的编译中复制到out中,最后打包成镜像。其中有部分是没有源码的pre-build第三方库和程序,这些在打包时要使用到PRODUCT_COPY_FILES、ALL_PREBUILT、BUILD_PREBUILT进行复制。

参考资料:

http://www.ithtw.com/thread-1548.htm

https://zhidao.baidu.com/question/1429962904571074139.html

https://www.cnblogs.com/pokerface/p/5754008.html

http://www.cnblogs.com/mr-raptor/archive/2012/06/08/2541571.html

http://blog.csdn.net/wh_19910525/article/details/39254815

http://blog.csdn.net/mr_raptor/article/details/30113417   //Android系统定制

http://blog.csdn.net/mr_raptor/article/details/30113417

 

http://blog.csdn.net/wh_19910525/article/details/7519919  //深入分析Android (build/core/*.mk脚本)

转载于:https://my.oschina.net/yuyang/blog/1584563

你可能感兴趣的文章
Hibernate延迟加载与opensessioninviewFilter
查看>>
Atitit 图像处理 调用opencv 通过java api attilax总结
查看>>
服务管理--systemctl命令
查看>>
SQLServer 维护脚本分享(09)相关文件读取
查看>>
Winscp开源的SSH|SFTP
查看>>
闪回之 回收站、Flashback Drop (table、index、trigger等)
查看>>
office-word去掉效验红色的波浪线
查看>>
Struts2之Action与配置文件
查看>>
POJ 3278 Catch That Cow(BFS,板子题)
查看>>
在Winform开发中使用FastReport创建报表
查看>>
vuejs监听苹果iphone手机键盘事件
查看>>
Spring中基于AOP的@AspectJ
查看>>
excel vba 实现跨表单(sheet) 搜索 - 显示搜索行记录搜索历史
查看>>
Dos命令下目录操作
查看>>
Unity长连接
查看>>
cocos2d-x-3.1 数据结构之Vector (coco2d-x 学习笔记六)
查看>>
将树莓派Raspberry Pi设置为无线路由器(WiFi热点AP,RTL8188CUS芯片)
查看>>
OA系统权限管理设计方案
查看>>
TI C66x DSP 系统events及其应用 - 5.11(中断控制寄存器)
查看>>
《开源框架那点事儿25》:对框架模板引擎实现方式的改造实录
查看>>