【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 <& ...
随机推荐
- 最新国内外可用SVN托管仓库有哪些
最新国内外可用SVN托管仓库哪些 一.总结 一句话总结:用SVNBucket和SourceForge 二.最新国内外可用SVN托管仓库推荐 这几年很多SVN托管平台都基本不维护或者直接关闭了,我翻遍了 ...
- js中如何删除某个元素下面的所有子元素?(两种方法)
js中如何删除某个元素下面的所有子元素?(两种方法) 一.总结 方法一:通过元素的innerHTML属性 元素element.innerHTML=""; 方法二:通过元素的remo ...
- Ajax基础与Json应用(一)
一.Ajax概念 Ajax是异步的javacript和xml 发音: Ajax [ˈeɪˌdʒæks] 二.同步与异步 传统方式(同步):一个请求对应一个回应,他们是同步的,回应不完成,没办法对这个页 ...
- C++常用数据结构的实现
常用数据结构与算法的实现.整理与总结 我将我所有数据结构的实现放在了github中:Data-Structures-Implemented-By-Me 常用数据结构与算法的实现.整理与总结 KMP字符 ...
- js进阶 9-8 html标签如何实现禁止复制和粘贴
js进阶 9-8 html标签如何实现禁止复制和粘贴 一.总结 一句话总结: 1.在oncopy方法中return false即可阻止在控件中复制内容 2.在onpaste方法中return fal ...
- python 爬取bilibili 视频弹幕
# -*- coding: utf-8 -*- # @author: Tele # @Time : 2019/04/09 下午 4:50 # 爬取弹幕 import requests import j ...
- cxf maven 依赖 No message body writer foud.. contenttype:application/json
最近使用cxf发布rest服务时遇到了如题的异常,最后发现是缺少依赖的问题.ps:我并没有使用spring cxf基本运行需要如下依赖 1 <dependency> <groupId ...
- 跟我学CMD实战系列之二 ——数据压缩备份
需求:每天下班时,将本地硬盘上的projects目录压缩为rar文件,文件名中必须含有当天日期信息,例如projects_20070902.rar. 分析:1. 压缩可以调用WinRAR的命令行版本r ...
- git安装使用详解
Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不 需要联网了,因为版本都是在自己的电脑上.既然每个人的电脑都有一个完整的版本库,那多个人如何 ...
- C# keybd_event用法 模拟键盘输入
最近有业务需求,需要模拟键盘输入,所以了解了一下C#中keybd_event函数的用法.该函数能够产生WM_KEYUP或WM_KEYDOWN消息,即可以触发键盘事件. 函数引用如下: [DllImpo ...