Windows mobile image generated -- from Walle

Windows mobile 编译镜像总是让人难以忍受的耗时,当然我们不能每次修改一点东西就build All一次。
下面是自己工作中积累的【不同情况下使用的编译命令】来加速生成镜像的过程,不排除有错的可能,欢迎指正。


对于修改,一般可以分为以下几种类型:
(1)修改public下的东西(一般不会修改这里的东西)
(2)修改了Cesysgen.bat或是会影响到Cesysgen.bat的环境变量,如以SYSGEN或BSP为前缀的变量。
(3)修改platform/%myPlatform%下的东西

其中(3)又可以分为:
(4)只修改reg、bib文件
(5)只修改了%myPlatform%下的源码


一、 blddemo命令
关于blddemo,msdn里有详细介绍,但讲得很不清楚。
如果没记错的话,这是一个批处理(bat)文件,会执行一些列命令,可以根据不同情况使用不同参数,
下面主要是对其加以总结,到底什么时候用什么参数,这正是msdn没有讲清楚却是最重要的部分。

blddemo最常用的有三个参数:clean -q -qbsp
(1)clean:如果修改了跟sysgen相关的,也就是说上面的第(2)种情况,那就要加上clean。
(2)-q:如果没有修改public下的东西,则可加上-q,因为public下的东西一般是不会修改的,微软不推荐修改这里的东西,所以一般都会用到-q。
(3)-qbsp:我理解是quick BSP,也就是说只要是只修改了%myPlatform%下的东西,这一个参数便肯定能将修改编入镜像,不管是源码还是reg、bib或者其他。

-qbsp 似乎已包含了-q 功能,没见过二者同时用的情况,也就是说只改动%myPlatform%下的肯定就没改动public下的,所以-qbsp一般单独使用。

对于blddemo命令最常用参数组合整理如下:

若public没改变
(a)blddemo clean -q :sysgen 改变(build all 就是使用了这个命令)
(b)blddemo -q :sysgen没变
(c)blddemo -qbsp:只改变了%myplatform%下的东西

这里从上到下耗时依次减少。

若public改变,则使用blddemo 或blddemo clean ,这两项很少用到,理论上用法,没验证过。

二、makeimg 命令
以上虽然blddemo -qbsp耗时最少,但耗时还是很长。我平时用的最多的是makeimg命令,这个命令就是生成镜像的意思,也是会执行一系列操作,属于最后一个步骤,所以耗时几乎是最短的了。但有个前提,它的所有操作都是针对release目录下的内容。
makeimg会执行reg、bib等的合并操作,但都是对release目录下的,比如platform.reg common.reg project.reg 三个合并成一个reginit.ini,明白了这一点就好办了。

对于上面所说的第(4)种情况,也就是只改动reg或bib文件,最快速的方法是:
直接修改release目录下的platform.reg、platform.bib,把需要的文件拷贝到release目录下,然后makeimg即可。
如果确定生效了,再到%myplatform%下修改,以防不小心执行了其他操作把release下的修改的东西给覆盖了。





三、快速makeimg

call packagegenerator packages.pkd.xml.merged
call dskimage %MyPlatform%.cfg.xml %MyPlatform%.sku.xml



在生成image的过程中,就是将所有dll,exe,等文件进行打包,然后做成flash.bin. 在mobile 打包过程中,会根据各个描述文件,如xml 等等对dll,exe,reg,bib进行处理,最后合成一个打包描述文件packages.pkd.xml.merged。因此如果只改变源代码的改变 不改变配置文件时不会改变packages.pkd.xml.merged的内容。所以在只通过打包工具 packagegenerator.exe 根据原有的packages.pkd.xml.merged进行打包,再通过dskimage做成flash.bin。这样就大大的节约了时间。



因此,当你改变bib或reg文件时,此方法不能生效。这是你可以使用buildpkg来生成新的image



四、buildpkg.bat


1 调用OEMGuids.bat;

2 删除Packages目录; 删除所有bsm.xml文件, 删除所有psf.csv文件;

3 预处理pkd.xml文件,保存到postproc目录.

4 合并packages.cpm.csv.merged,合并packages.crf.merged.

5 Mergepkd.exe合并release/postproc下所有pkd.xml成packages.pdk.xml.merged.

6 Settingscollision.exe对注册表 和这些合并的文件进行冲突检测.

7 Dependgen.exe处理组件依赖关系.

8 Shadowordertool.exe产生psm.csv

9 Makergu.exe每个包产生rgu注册表文件.产生boot.rgu,default.rgu.

10 Rgucomp.exe处理boot.rgu得到boot.hv

11 makePKG.exe产生bsm.xml。 bsm描述了package包含了哪些东西。

12 PackageGenerator.exe根据bsm和pkd产生dsm和cab

13 Diskimage.bat产生image


五、Diskimage.bat



1 预处理sku.xml文件,保存到postproc目录

2 Skumerge.exe合并sku文件得到<bsp>.sku.xml

3 Makecif处理<bsp>.sku.xml的压缩标志得到packages.cif。(cif:压缩信息文件)

4 shadowCalcEng处理packages.cif得到packages.sof(sof:shadow order file)

5 RGUComp处理rgu文件得到default.hv和user.hv

6 PackageGenerator (metadata.pkd.xml)

7 合并得到 <bsp>.cfg.xml

8 OEMpreDskImage.bat 呼叫SignPackageFiles.cmd

9 最后执行dskimage.exe得到image

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值