Android P添加板型

跟编译相关的mk文件就如上所述,其中AndroidProducts.mk中的内容如下:



PRODUCT_MAKEFILES := \

    $(LOCAL_DIR)/msmnile.mk

他会去调用msmnile.mk因此真正的主编译文件是AndroidBoard.mk/ AndroidProducts.mk/BoardConfig.mk,其实这三个是android原生设计的主入口。

我们可以在build目录中去一探究竟。首先我们在编译android的第一步就是source build/envsetup.sh,其中会有如下操作:


./make/envsetup.sh:1734:49355:for f in `test -d device && find -L device -maxdepth 4 -name 'vendorsetup.sh' 2> /dev/null | sort` \

./make/envsetup.sh:1735:49456:         `test -d vendor && find -L vendor -maxdepth 4 -name 'vendorsetup.sh' 2> /dev/null | sort` \

./make/envsetup.sh:1736:49557:         `test -d product && find -L product -maxdepth 4 -name 'vendorsetup.sh' 2> /dev/null | sort`

会查找devcie/vendor和product目录中是否包含有vendorsetup.sh,并且去执行。一般在一个板级目录中会有定义该文件。

在高通平台上,选择在一个通用的common目录下统一添加板型,比如device/qcom/common/vendorsetup.sh,其中会有关键的添加板型的步骤:


add_lunch_combo msmnile-userdebug

add_lunch_combo msmnile_au-userdebug

你可以选择在该文件中继续添加自己的板型,但是这只是一个选择而已,也可以在自己对应的板型目录中添加vendorsetup.sh文件,并且把板型信息写入来新增板型。

这样后面我们在lunch的时候就会有对应的板型了。在lunch之后我们其实就已经确定了TARGET_PRODUCT,那么TARGET_DEVICE是在哪里定义的呢?

我们从上面的流程知道,lunch最新确定的就是TARGET_PRODUCT:

envsetup.sh:


function lunch()

{

...

 TARGET_PRODUCT=$product 

...

}

根据板型会进行下一步的环境变量的初始化,详情在build/make/core/product.mk里面有介绍,我们不再详述,通过一系列操作,最终会调用到AndroidProducts.mk里面的一些定义。

build/make/core/product.mk:



define _search-android-products-files-in-dir

$(sort $(shell test -d $(1) && find -L $(1) \

  -maxdepth 6 \

  -name .git -prune \

  -o -name AndroidProducts.mk -print))

endef

AndroidProducts.mk比如:


PRODUCT_NAME := msmnile

PRODUCT_DEVICE := msmnile

通过PRODUCT_DEVICE就会最终定义了TARGET_DEVICE。后面就可以进一步找到BoardConfig.mk和AndroidBoard.mk:



./make/core/envsetup.mk:247:


board_config_mk := \

    $(strip $(sort $(wildcard \

        $(SRC_TARGET_DIR)/board/$(TARGET_DEVICE)/BoardConfig.mk \

        $(shell test -d device && find -L device -maxdepth 4 -path '*/$(TARGET_DEVICE)/BoardConfig.mk') \

        $(shell test -d vendor && find -L vendor -maxdepth 4 -path '*/$(TARGET_DEVICE)/BoardConfig.mk') \

    )))


./make/core/envsetup.mk:264:9562:TARGET_DEVICE_DIR := $(patsubst %/,%,$(dir $(board_config_mk)))

./make/target/board/Android.mk:7:107:-include $(TARGET_DEVICE_DIR)/AndroidBoard.mk

1,misuite5.EXE Pegasus出品的图像控件,包含FxTools Gold V5.0(动态图像效果)和SuiteFace V2.0(多媒体制作),效果惊人(9,177KB)2,b003.ZIP 一个小巧的显示GIF动画的控件(24KB)3,b002.ZIP 功能十分强大的一个图像处理控件,可以打印、转换图像格式并有多种处理效果。(包括示例程序)(26KB)4,crystal.zip一个图形创建和处理控件, 它支持bmp, cur, dib, emf, gif, ico, jpg和wmf文件格式, 能装入, 存储, 画, 处理和打印图形. 有多种处理效果. (free) cool(48KB)5,gvocx.zip专业级别的vb下面读写图形文件的控件, 能支持art,bmp,cut,dib,emp,gem,gif,hrz,iff,img,png,jpg,lbm,mac,msp,pcx,ras,rle,tga,tif,wmf,wpg等文件格式(258KB)6,transimg.zip实现透明图形的控件(132KB)7,graphic.zip创建活泼图形的控件(free), 主页地址:http://www.geocities.com/siliconvalley/bay/8064/mads/mads.html(50KB)8,arbackgrctrl.zip建立windows墙纸方式的背景图形(31KB)9,gtimage.v1.4.zip一个扩展的picturebox控件(215KB)10,browser.zip支持bmp, jpeg, gif, ico和wmf格式的图片浏览控件(free), 主页地址http://www.planete.net/~lucash/activex/index.htm(181KB)11,anigif.zip使程序中可以使用Gif动画,而不是静态的图片(425KB)12,iconpicker.zip在应用程序中增加icon浏览界面的控件(28KB)13,b001.ZIP 透明图片控件(133KB) 14,card.ZIP Dll文件可以画出54张牌面和六种牌背,想做扑克牌游戏的朋友千万别错过(52KB)15,dd.zip 压缩位图图象并且保存到 JPG 格式(77KB)16,ccrpani.zip CCRP Animation Control V1.0 (101KB)17,bw6mp22s.zip BW MP3 OCX V2.02(554KB)18,PicOpener.zip PicOpener V2.0可以显示50多中图片格式(113KB)19,vbanigif.zip 显示gif动画的控件(12KB)20,scrprint.zip 屏幕拷贝程序(有例程) (320KB)21,gif.zip 能在Vb中显示动画(*.gif)的控件(39KB)22,gif89.zip 同样能显示动画的控件与gif.ocx相比,它可以接受任意大小的gif图片,只是需要编写的代码要多一些只能说个有千秋,自己选吧 (6KB)23,xpress40.exe Pegasus出品的图像控件,其中包含了多个控件,从图像的捕捉到显示、打印应有尽有,共支持70多种图像格式。(3611KB)24,adsvcap.zip这是一款用于VB 5.0 和 6.0的视频捕获控制器。用户可以在任何视频捕获设备上随意捕捉图象,也可以把表格或是图片转换成BMP格式(58KB) 25,picture.zip图形创建和处理控件(59KB)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值