#!/bin/bash
#设置环境变量
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export JRE_HOME=${JAVA_HOME}/jre 
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib 
export PATH=${JAVA_HOME}/bin:$PATH 
source /etc/profile
 
export ANDROID_JACK_VM_ARGS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4g"
echo "ANDROID_JACK_VM_ARGS=$ANDROID_JACK_VM_ARGS"
 #用户授权
export USER=$(whoami)
 
source /home/lenovosh/.bashrc
#copy函数 拷贝编译后需要的文件
fileCopy(){
cp /home/lenovosh/work/sunflower/LINUX/android/out/target/product/$folder_name/boot.img .
cp /home/lenovosh/work/sunflower/LINUX/android/out/target/product/$folder_name/emmc_appsboot.mbn .
cp /home/lenovosh/work/sunflower/LINUX/android/out/target/product/$folder_name/splash.img .
cp /home/lenovosh/work/sunflower/LINUX/android/out/target/product/$folder_name/system.img .
cp /home/lenovosh/work/sunflower/LINUX/android/out/target/product/$folder_name/userdata.img .
cp /home/lenovosh/work/sunflower/LINUX/android/out/target/product/$folder_name/obj/KERNEL_OBJ/vmlinux .
}
 
#add tag
daTag(){
cd /home/lenovosh/work/sunflower/
repo forall -c 'pwd && git tag -a '$tmp1' -m '$tmp1''
(repo forall -c 'pwd && git push gerrit_lv '$tmp1'')2>&1 | tee pushtag.log
}
 
#上传文件到ftp 重定向
uploadFile(){
cd /home/lenovosh/work/SunFlower_Version/
lftp <<-EOF                                                                                                                                            
open 10.4.64.116
user SDU lenovo
set ssl:verify-certificate no
cd SW\ release/5AR_POC_2.0/2017_7.0/
mkdir $tmp2
cd $tmp2
mirror -R -c -e /home/lenovosh/work/SunFlower_Version/$tmp2/ .
EOF
}
 
#生成本地文件夹 以做备份
newFolder(){
#进入sunflower版本目录
cd /home/lenovosh/work/SunFlower_Version
#生成日期文件夹
mkdir -p $tmp2
cd $tmp2
#新建文件夹
mkdir 1NDP_USER
mkdir 2Lumus_USER
mkdir 3NDP_Debug
mkdir 4Lumus_Debug
}
 
#判断编译成功与否
bianyiOk(){
cd /home/lenovosh/work/sunflower/LINUX/android/
result=$(cat $logname | tail -3 | grep -iE "make completed successfully")
if [ "$result" != "" ]; then
echo "build success"
cd /home/lenovosh/work/SunFlower_Version/$tmp2
    cd $VersionName
#调用copy函数开始Copy
fileCopy folder_name
    uploadFile
daTag
else
    echo "build failed"
fi
}
 
#日期变量tmp
tmp=$(date +%Y%-m%-d)
#目标文件夹
tmp1="AR_POC_2.0_"${tmp}
tmp2="ARVR_SW_ReleaseNote_"${tmp}
newFolder
 
#进入sunflower同步项目  
cd /home/lenovosh/work/sunflower/
pwd
repo sync -j16 >> /home/lenovosh/work/sunflower/LINUX/android/all_log
cd /home/lenovosh/work/sunflower/LINUX/android
#选择编译版本
#选择编译lumus
if [ "$1" == "lumus" ]; then
folder_name=msm8996
cd /home/lenovosh/work/sunflower/LINUX/android
pwd
rm -rf out
source build/envsetup.sh
lunch msm8996-user
env >> /home/lenovosh/work/sunflower/LINUX/android/env_log
(make -j4)2>&1 | tee lumusbuild.log 
if [ "$?" == "0" ]; then
logname=lumusbuild.log
VersionName=2Lumus_USER
bianyiOk logname VersionName
else
echo "make LumusVersion error!!!!"
fi
else  
echo "first paramtes wrong!!!"
fi
 
#选择编译ned+
if [ "$2" == "nedp" ]; then
folder_name=nedplus
cd /home/lenovosh/work/sunflower/LINUX/android
rm -rf out
source build/envsetup.sh
lunch nedplus-user
(make -j4)2>&1 | tee nedpbuild.log
if [ "$?" == "0" ]; then
logname=nedpbuild.log
VersionName=1NDP_USER
bianyiOk logname VersionName
else
echo "make NedPVersion error!!!!"
fi
else
echo "second paramters wrong!!!"
fi
 
#选择编译lumusDebug
if [ "$3" == "lumusD" ]; then
folder_name=msm8996
cd /home/lenovosh/work/sunflower/LINUX/android
rm -rf out
source build/envsetup.sh
lunch msm8996-userdebug
(make -j4)2>&1 | tee lumusDebugbuild.log 
if [ "$?" == "0" ]; then
logname=lumusDebugbuild.log
VersionName=4Lumus_Debug
bianyiOk logname VersionName
else
echo "make LumusDebugVersion error!!!!"
fi
else  
echo "third paramtes wrong!!!"                                                                                                                 
fi
 
#选择编译ned+Debug
if [ "$4" == "nedpD" ]; then
folder_name=nedplus
cd /home/lenovosh/work/sunflower/LINUX/android
rm -rf out
source build/envsetup.sh
lunch nedplus-userdebug
(make -j4)2>&1 | tee nedpDebugbuild.log 
if [ "$?" == "0" ]; then
logname=nedpDebugbuild.log
VersionName=3NDP_Debug
bianyiOk logname VersionName
else
echo "make LumusVersion error!!!!"
fi
else  
echo "first paramtes wrong!!!"            
fi

【shell】编译脚本的更多相关文章

  1. 一篇关于Maven项目的jar包Shell启动脚本

    使用Maven作为项目jar包依赖的管理,常常会遇到命令行启动,笔者也是哥菜鸟,在做微服务,以及服务器端开发的过程中,常常会遇到项目的启动需要使用main方法,笔者潜心的研究了很多博客,发现大多写的都 ...

  2. FFmpeg示例程序合集-批量编译脚本

    此前做了一系列有关FFmpeg的示例程序,组成了<最简单的FFmpeg示例程序合集>,其中包含了如下项目:simplest ffmpeg player:                   ...

  3. ffmpeg学习笔记-编译脚本

    之前已经用他人的编译脚本对ffmpeg进行了成功编译,那么在裁剪ffmpeg的时候需要指定文件,这时候应该怎么编写编译脚本呢?本文目的在于说明ffmpeg编译脚本的编写 首先在ffmpeg的目录下新建 ...

  4. shell及脚本4——shell script

    一.格式 1.1 开头 必须以 "# !/bin/bash"  开头,告诉系统这是一个bash shell脚本.注意#与!中间有空格. 二.语法 2.1 数值运算 可以用decla ...

  5. 阿里云服务器Linux CentOS安装配置(九)shell编译、打包、部署

    阿里云服务器Linux CentOS安装配置(九)shell编译.打包.部署 1.查询当前目录以及子目录下所有的java文件,并显示查询结果 find . -name *.java -type f - ...

  6. 【Telnet】使用Telnet协议连接到远程Shell执行脚本

    介绍 本文介绍如何通过Telnet协议连接到远程Shell,执行脚本,并获取执行结果: 相关文章: <[Jsch]使用SSH协议连接到远程Shell执行脚本>http://www.cnbl ...

  7. SCons - 简单而强大的项目编译脚本

    N年前学的makefile,当时还勉强能写一些简单的工程编译,现在已经基本忘了.makefile确实编写复杂,而且平时也不是经常使用,容易忘记.偶识了scons,一切都变的简单了.最近研究了下scon ...

  8. shell自动计算脚本

    shell自动计算脚本 #!/bin/bash echo $(($)) [root@bogon ~]# sh b.sh 123+123246 let用户声明这个操作是要计算,后者的效率更高 (expr ...

  9. Android系统编译脚本理解

    android源码编译步骤: 1. repo sync 代码(下载代码) 2.start branch(用哪个分支,git相关) 3. 到根目录(android目录) $cd android/ 4. ...

  10. Shell菜单脚本

    今天在这儿给大家分享一个我简单编写的Shell菜单脚本,傻瓜式的人机交互,人人都可以操作linux. #!/bin/sh #Shell菜单演示 function menu () { cat <& ...

随机推荐

  1. Visual Studio Debugger

    Visual Studio Debugger中七个鲜为人知的小功能   Visual Studio debugger是一个很棒的调试工具,可以帮助程序猿们快速地发现和解决问题.这里给大家简单介绍一下V ...

  2. 将jar安装到本地mvn仓库

    声明:仅限于将maven Repository下载的jar(使用maven打包的jar)安装到本地的maven仓库中,不保证全部成功,最初的时候添加依赖发现下载始终不成功,只能手动下载,但是手动下载完 ...

  3. Java设计模式菜鸟系列(二十二)中介者模式建模与实现

    转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/40027109 中介者模式(Mediator):主要用来减少类与类之间的耦合的,由于假设类与 ...

  4. hive 导出数据的几种方式

    1.使用insert导出 这种方式的优点在于既可以导出到hdfs上还可以导出到本地目录 下面以导出emp表中数据为例 insert overwrite local directory "/o ...

  5. RabbitMQ 延迟队列实现订单支付结果异步阶梯性通知

    在第三方支付中,例如支付宝.或者微信,对于订单请求,第三方支付系统采用的是消息同步返回.异步通知+主动补偿查询的补偿机制. 由于互联网通信的不可靠性,例如双方网络.服务器.应用等因素的影响,不管是同步 ...

  6. 构建工具Gradle

    1.Summary   从Android团队开始宣布放弃Eclipse转投Android Studio时,构建工具Gradle进入了Android开发者的视野.而随着热修复.插件化.编译时注解的流行, ...

  7. CSS拾遗(一)

    重新看<精通CSS(第二版)>做一些记录,方便今后巩固. 1.外边距叠加 只有普通文档流中块框的垂直外边距才会发生外边距叠加.行内框.浮动框.或绝对定位框之间的外边距不会叠加. 2.相对定 ...

  8. Entity Framework知识小总结

    什么是Entity Framework EF是微软主推的数据存取技术,在实际开发中,现在通常使用EF来构建应用程序的数据存取层,它是一个开源的“对象/关系映射(ORM:Object Relationa ...

  9. wpf mvvm datagrid数据过滤

    原文:wpf mvvm datagrid数据过滤 datagrid数据过滤,你可以通过设置RowStyle属性,通过将Visibility绑定到ViewModel层的属性来控制是否可见,比如:   & ...

  10. spring-boot-quartz, 依赖spring-boot-parent good

    /** * state的值代表该任务触发器的状态: STATE_BLOCKED 4 // 运行 STATE_COMPLETE 2 //完成那一刻,不过一般不用这个判断Job状态 STATE_ERROR ...