My first powershell code
因为懒,也因为烦。
所以为了发布版本简单可靠,也因为基于window环境下,所以学着写了powershell。
一边搜示例,一面学着写。大概有shell的基础入门挺快。
闲话少叙,直接提码:12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758function build($target){$dest_dir="build/build_$target"$output="$dest_dir/output"# if exsit remove itif(Test-Path $dest_dir){echo "rm $dest_dir"ri "$dest_dir" -recurse}cpi -Path "./Pad" -Destination $dest_dir -Recurse -Forceif((Test-Path $output) -ne 'True'){echo "mkdir $dest_dir/output"mkdir "$dest_dir/output"}$obj_dir='obj\local\armeabi'$dirs='sdtp','api','mpos'foreach($build in $dirs){ndk-build clean -C "$dest_dir/$build/jni"ndk-build -j3 DEVICE=$target -C "$dest_dir/$build/jni"Copy-Item -Path "$dest_dir/$build/$obj_dir/*.so" -Destination $outputCopy-Item -Path "$dest_dir/$build/$obj_dir/*.a" -Destination $output}}function argument_checker([string]$in_arg){}function buildAll($in_devices){foreach($device in $in_devices){echo "in_device=$device";build($device);}}#default build all typefunction main{param([ValidateSet('N900_3G','N900_4G','IM81')]$in_args)$devices='N900_3G','N900_4G','IM81'if($in_args.Count -eq 0){echo "build in default"buildAll($in_devices=$devices);}else{buildAll($in_devices=$in_args);}}main($args);我是要把工程目录Pad下面sdtp,api,mpos这三个库文件的目录依顺序进行编译,然后将编译的文件打包。
因为一共要发布3款终端产品,有三个不同产品编译选项开关。同时有两个大的分支版本。所以正式发布版本时,需要323=18次目录进出,然后进行ndk-build操作。并且很恶心的是,原来设定的库文件之间还有依赖关系,所以需要严格按照sdtp,api,mpos这三个目录的顺序进行编译。还有就是每个目录每次选择不同机型编译前都需要执行清空操作,因为不同的机型包含进来的代码可能还有些许差异。所以没有用脚本执行前,每次发版本都是异常辛苦,并且要很认真注意每个操作步骤的。
目前这个脚本,还不完善。最近抽时间增加publish脚本,用来进行自动将生成的so文件以及.a文件发布到我们的git服务器上,同时增加了cleanAll脚本用来清理编译生成的目标文件夹,方便提交svn。
后续计划会增加并发任务,加快编译的效率。同时也考验下新的i5机器的性能。
所以学点脚本,还是有用的,效率杠杠的。
这里推荐两个不错的powershell学习网址:pstips 以及Microsoft PowerShell Management