使用crontab进行Android代码的自动更新和构建

引子

最近的工作是一个在Android平台上进行开发的项目,我个人基本是不改动Android部分的代码,但是我所在的项目需要使用到Android编译出来的很多目标文件。另一方面,我又不是开发apk等基于通用Android平台的项目,即Android部分的代码是有其他同事在进行维护。那么就会有这样的场景:我需要保持Android部分代码的更新和并构建出来。

编译过整个Android工程的人都知道编译一次的时间大概要30分钟以上(如果你是独占服务器且内存超大,那么请默默走开~),要是整个工程全部进行重编(加上-B参数),则耗时至少在2个小时以上。假设你想要加速编译的过程而使用 -jN参数时,那你就等着被其他同事骂吧(因为会拖的别人完全无法进行任何操作)。

对于我的工作来讲,要求保持Android部分代码的更新,但是时效性并没有太强,即只要Android部分代码有改动了,我这边抽空的时候更新下载并编译出来即可。是的,只需要抽空完成这个操作即可,但是作为一个程序员一定知道的,如果要抽空完成一件事,那么这件事就基本上遥遥无期了。

因此,我就想何不搞一个自动更新并构建的脚本,让这个工作在晚上没人的时候静悄悄的完成,这就有了下面的脚本和这篇文章。

crontab_android-4.2.1_r1.sh

先看一下这个脚本的具体内容:

#! /bin/bash

ANDROID_4_2=~/android-4.2.1_r1
CRONTAB_LOG_FOLDER=~/bak/crontablog
NONEED_TO_REVERT=build/core/main.mk

cd $ANDROID_4_2

HEAD_VER=`svn log -r HEAD | awk '{if(NR==2)print $1}' | cut -b 2-`
BASE_VER=`svn log -r BASE | awk '{if(NR==2)print $1}' | cut -b 2-`
DATE=`date "+%Y-%m-%d"`

if [ $HEAD_VER -eq $BASE_VER ]; then 
    echo "$DATE: current version($BASE_VER) is the same with svn server($HEAD_VER), no need to build system" >> $CRONTAB_LOG_FOLDER/crontab_log.txt
else
    echo "$DATE: current version($BASE_VER) is different with svn server($HEAD_VER), need to build system" >> $CRONTAB_LOG_FOLDER/crontab_log.txt
    BUILD_LOG=$CRONTAB_LOG_FOLDER/${ANDROID_4_2##*/}_build_$DATE.log
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值