linux自动编译提交版本

  • 格式:pdf
  • 大小:309.72 KB
  • 文档页数:31

Linux 实现android 版本编译与SVN提交自动化 心飞翔

2014-05-04 本文旨在实现linux服务器完成Android开发过程中,软件版本的自动编译与发布,主要功能如下:

A.) 自动比较Linux服务器与SVN代码的版本号,以决定是否开始自动化。 B.) 根据SVN版本库现有版本号,实现版本号的自动累加。 C.) 根据SVN版本库和代码库的版本号,当前时间戳自动生成编译版本号。 D.) 自动检测是否在linux版本库中生成版本文件夹,如V0, V1 …等。 E.) 根据自动生成的编译版本号替换编译版本中buildinfo.sh的版本号。 F.) 版本从V*.9升级到V*(.0)后实现buildinfo.sh的版本号的补全。 G.) 自动实现Android 工程base代码的解压与合并。 H.) 自动实现SVN上最新代码的下载与合并。 I.) 自动编译user与eng版本。 J.) 自动创建需要提交的版本文件夹(V*.*_eng(user))。 K.) 自动拷贝编译生成的镜像文件到版本文件夹 L.) 自动压缩版本文件夹并实现编译结果纠错功能。 M.) 自动拷贝版本文件夹到SVN版本库并实现提交。 N.) Crontab实现定时运行shell脚本 脚本内容如下: ###linux下shell脚本开头### #!/bin/bash ###linux下svn版本库,代码库,测试脚本,必要的txt 以及最终提交版本存放地### basepath=~/share/svn ###linux下进入svn文件夹### cd ~/share/svn ###linux下svn代码库最新版本号截取存放路径### svntextpath=~/share/svn/svn.txt ###linux下svn版本库所有rar版本列表存放路径### rartextpath=~/share/svn/rar.txt ###linux下svn版本库rar最新的版本号存放路径### vertextpath=~/share/svn/version.txt ###linux下svn版本库rar自动生成是整数还是带小数的版本号存放路径### newverpath=~/share/svn/newversion.txt ###linux下版本自动编译完成压缩镜像文件后,版本号需要提交的路径### copytextpath=~/share/svn/copy.txt ###linux下版本自动编译完成后,版本文件夹生成与压缩存放路径### svncommitpath=~/share/svn/commit_store ###存放最终版本号的路径### addpath=~/share/svn/addversionnumber.txt ###linux下需要svn提交的版本库名称### commitname=version ###linux下需要buildinfo.sh版本控制名称### ###O表示无测试,对应新平台的P0### control_O=____O ###A表示开关机+显示,Refresh项目的P0### control_A=____A ###A+表示CIT+电流+30条用例, PCBA试产(非P0)、硬件调试、新器件验证### control_B=___A+ ###AA表示+CIT,Refresh项目的一般性装机和客户Demo### control_C=___AA ###AAA表示预测试(含电流) +CIT+两轮系统测试+北京场测,适用于客户测试、### ###WCDMA项目送测### control_D=__AAA ###CTA表示预测试(含电流) +CIT+CTA,Refresh项目的CTA送测### control_E=__CTA ###AAAA表示AAA+一轮移动自测(包括场测),适用于移动送测### control_F=_AAAA ###AAAAA表示AAA+一轮系统测试+各地场测,适用于量产和售后版本### control_G=AAAAA ###buildinfo.sh版本控制开关### controlV=$control_G

###linux下需要生成版本控制文件夹名称### generate_O=O generate_A=A generate_B=A+ generate_C=AA generate_D=AAA generate_E=CTA generate_F=AAAA generate_G=AAAAA generateV=$generate_G

#choose emmc or nand 选择编译工程是emmc还是nand choose_emmc=emmc choose_nand=nand

#when build is over,copy the img and count the number #需要提取的文件总数目 emmc_number=12 nand_number=9 emmc_number_fat=13

#need to update-api ?是否需要更新api api_need=1 api_noneed=0

#need internal fat? 是否有额外添加的fat分区 fat_need=1 fat_noneed=0 #mt6571 以mtk配置工程为例 ###linux下svn代码库路径### apath=~/share/svn/driver ###linux下svn提交版本库路径### aversionpath=~/share/svn/version/TJBB ###linux下版本自动编译修改版本号需要修改的文件路径### abuildinfopath=~/share/test/buildinfo.sh ###linux下版本自动编译的路径### abuildpath=~/share/test ###linux下版本自动编译完成后,需要拷贝的镜像文件相对路径### aimgcopypath=out/target/product/abc71_et_jb7 ###linux下版本自动编译完成后,镜像文件拷贝到的地方### acopyandrarpath=~/share/svn/commit_store/M6571 ###linux下版本自动编译需要解压的2个包中的一个包### atargz=ALPS.JB7.MP.V1.34_abc_ET_JB7_GPL.tar.gz ###代码解压完后将名称修平台或者项目名### adirname=M6571 ###mtk编译版本所需要的工程名### aproject=abc71_et_jb7 ###mtk编译版本所需要的工程名生成刷机文件的txt文件### ascattertxtname=MT6571_Android_scatter.txt ###在svn服务器上下载ap代码的路径### aapdownloadpath=10.10.8.35/mtk_code/MT6571/JB7_ET/driver ###在svn服务器上下载modem代码的路径### amodemdownloadpath=10.10.8.35/mtk_code/MT6571/JB7_ET/modem_image/abc_et_jb7_tdd128hspa

###在svn服务器上下载modem代码的路径modem文件夹的名字### amodemname=abc_et_jb7_tdd128hspa ###配置编译需要的环境变量,其他工程可参照此配置,此脚本可以多个项目并行#### function 0721_config() { path=$apath versionpath=$aversionpath buildinfopath=$abuildinfopath buildpath=$abuildpath imgcopypath=$aimgcopypath copyandrarpath=$acopyandrarpath targzfile=$atargz filedirname=$adirname projectname=$aproject scattertxtname=$ascattertxtname apdownloadpath=$aapdownloadpath modemdownloadpath=$amodemdownloadpath modemname=$amodemname controlV=$control_G ###need modify generateV=$generate_G ###need modify buildflash=$choose_emmc ###need modify count_number=$emmc_number_fat ###need modify updateapi=$api_need ###need modify fatneed=$fat_need ###need modify echo -ne "path is $path \n versionpath = $versionpath \n buildinfopath = $buildinfopath \n buildpath = $buildpath \n imgcopypath = $imgcopypath \n "