【shell】编译脚本
#!/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】编译脚本的更多相关文章
- 一篇关于Maven项目的jar包Shell启动脚本
使用Maven作为项目jar包依赖的管理,常常会遇到命令行启动,笔者也是哥菜鸟,在做微服务,以及服务器端开发的过程中,常常会遇到项目的启动需要使用main方法,笔者潜心的研究了很多博客,发现大多写的都 ...
- FFmpeg示例程序合集-批量编译脚本
此前做了一系列有关FFmpeg的示例程序,组成了<最简单的FFmpeg示例程序合集>,其中包含了如下项目:simplest ffmpeg player: ...
- ffmpeg学习笔记-编译脚本
之前已经用他人的编译脚本对ffmpeg进行了成功编译,那么在裁剪ffmpeg的时候需要指定文件,这时候应该怎么编写编译脚本呢?本文目的在于说明ffmpeg编译脚本的编写 首先在ffmpeg的目录下新建 ...
- shell及脚本4——shell script
一.格式 1.1 开头 必须以 "# !/bin/bash" 开头,告诉系统这是一个bash shell脚本.注意#与!中间有空格. 二.语法 2.1 数值运算 可以用decla ...
- 阿里云服务器Linux CentOS安装配置(九)shell编译、打包、部署
阿里云服务器Linux CentOS安装配置(九)shell编译.打包.部署 1.查询当前目录以及子目录下所有的java文件,并显示查询结果 find . -name *.java -type f - ...
- 【Telnet】使用Telnet协议连接到远程Shell执行脚本
介绍 本文介绍如何通过Telnet协议连接到远程Shell,执行脚本,并获取执行结果: 相关文章: <[Jsch]使用SSH协议连接到远程Shell执行脚本>http://www.cnbl ...
- SCons - 简单而强大的项目编译脚本
N年前学的makefile,当时还勉强能写一些简单的工程编译,现在已经基本忘了.makefile确实编写复杂,而且平时也不是经常使用,容易忘记.偶识了scons,一切都变的简单了.最近研究了下scon ...
- shell自动计算脚本
shell自动计算脚本 #!/bin/bash echo $(($)) [root@bogon ~]# sh b.sh 123+123246 let用户声明这个操作是要计算,后者的效率更高 (expr ...
- Android系统编译脚本理解
android源码编译步骤: 1. repo sync 代码(下载代码) 2.start branch(用哪个分支,git相关) 3. 到根目录(android目录) $cd android/ 4. ...
- Shell菜单脚本
今天在这儿给大家分享一个我简单编写的Shell菜单脚本,傻瓜式的人机交互,人人都可以操作linux. #!/bin/sh #Shell菜单演示 function menu () { cat <& ...
随机推荐
- iOS 项目的文件夹结构能看出你的开发经验
近期有师弟去面试iOS开发,他谈论到,面试官既然问他怎么分文件夹结构的,并且还详细问到每一个子文件夹的文件名称. 文件夹结构确实非常重要.面试官问他这些无疑是想窥探他的开发经验.清晰的文件夹结构,可让 ...
- Android 设置alpha值来制作透明与渐变效果的实例
Android系统支持的颜色是由4个值组成的,前3个为RGB,也就是我们常说的三原色(红.绿.蓝),最后一个值是A,也就是Alpha.这4个值都在0~255之间.颜色值越小,表示该颜色越淡,颜色值越大 ...
- FullPage.js全屏滚动插件解说
1.主要功能 1).支持鼠标滚动 2).多个回调函数 3).支持手机.平板触屏事件 4).支持css3动画 5).支持窗口缩放 6).窗口缩放时自动调整 7).可设置滚动宽度.背景颜色.滚动速度.循环 ...
- [Angular] Organizing Your Exports with Barrels
From: import {LoadUserThreadsEffectService} from "./store/effects/load-user-threads.service&quo ...
- iOS 下载功能:断点下载(暂停和开始)(NSURLConnectionDataDelegate方法)
1,model文件代码 文件名称:HMFileDownloader.h #import <Foundation/Foundation.h> @interface HMFileDownloa ...
- erlang 符号相关基本语法
http://blog.csdn.net/anghlq/article/details/6803332 ErLang语法约定: 大写字母开头的名字(比如Address),表示一个变量,包括参数.局部变 ...
- Hibernate——(4)Hibernate映射类型
一.常用的Hibernat映射类型有如下几种: string integer double date 日期,只表示年月日 datetime 日期,只表示年月日 timestamp 时间戳,存放 ...
- jQuery.noop
一个空函数 当你仅仅想要传递一个空函数的时候,就用他吧.这对一些插件作者很有用,当插件提供了一个可选的回调函数接口,那么如果调用的时候没有传递这个回调函数,就用jQuery.noop来代替执行.
- Method of Seamless Integration and Independent Evolution of Information-Centric Networking via Software Defined Networking
A method of transferring data between a software defined network (SDN) and an information-centric ne ...
- 微服务:ICE 入门之 编译环境搭建
俗话说分享是学习的重要途径之一,提高自己的过程,学习,研究,应用,解决问题,总结,分享:闲来无事时便可总结下自己学习过的知识,把之前遇到过的问题也上升到方法论,把自己踩过的坑也罗列出来以防重蹈覆辙!好 ...