android基于Android Studio的持续集成CI
来源:互联网 发布:汕头美工培训机构 编辑:程序博客网 时间:2024/05/16 11:08
Android基于AS自动化编译并发送邮件
记录[AndroidStudio][6] 自动化编译,并发送邮件出来
脚本流程
- 配置编译环境
- 拉取服务器最新的代码(此处可以是git,或者是svn)
- 配置服务器代码为as编译环境的目录结构
- 配置编译版本号版本tag等
- 执行as编译脚本
- 邮件发送结果(邮件内容读取最近一天svnlog日志,as编译版本为附件)
环境配置
- as环境安装
AndroidStudio1.4或以上
- python
python2.7
- bat
windows 批处理
- svn
svn版本最新即可
- j dk
jdk1.6
- adt
as自带
项目初衷
由于习惯用eclipse开发,但是每次都需要手动打包版本给测试人员测试,很麻烦所以尝试下as的自动化编译功能
编写过程中又能学习下python,gradle,bat等多种脚步混合编写,尽量做到不依赖某一个模块
由于习惯用eclipse开发,所以只是在eclipse里面开发后提交到svn,然后每天编译一个日版本发邮件出来
首先还是要使用as IDE新建一个android的project,并且添加需要编译的项目进来,包括多依赖的项目
在使用as构建编辑目录结构的时候有几点比较坑
1.就是libs下jar,和so的目录结构和在eclipse里面不一样(百度有)
2.gradle编译脚本里面so和jar的添加方法也不一样(百度有)
3.发邮件模块是使用的python发送的邮件,邮箱注册的outlook的
outlook需要手机认证不然容易发送失败被当垃圾邮件
配置目录代码
下载并配置as编译目录结构:
::svn下载最新代码rm -rf tmpsvn co https://svn.url_url tmp::初始化路径set lll=%~dp0kasfaandroid_lbxx\set moudle=srcrm -rf %moudle%rm -rf libsrm -rf buildmkdir %moudle%mkdir %moudle%\main\mkdir %moudle%\main\java\mkdir %moudle%\main\res\mkdir %moudle%\main\assets\mkdir %moudle%\main\jniLibs\mkdir libs\::copy代码到编译目录xcopy %lll%tmp\src %lll%%moudle%\main\java\ /e /qxcopy %lll%tmp\assets %lll%%moudle%\main\assets\ /e /qxcopy %lll%tmp\res %lll%%moudle%\main\res\ /e /qxcopy %lll%tmp\libs %lll%%moudle%\main\jniLibs\ /e /q::删除libs目录下面所有的jar文件,不删除so的文件夹rm -rf %lll%%moudle%\main\jniLibs\*.*copy %lll%tmp\AndroidManifest.xml %lll%%moudle%\main\AndroidManifest.xmlxcopy %lll%tmp\libs %lll%libs\ /e /q::删除libs目录下面所有的文件夹,不包括jarpython %DirCorelibs%py_remove_all_dir.py %lll%libs
由于项目里面是多个lib依赖,编译目录都一样,此处就不贴代码
编译脚本
编译脚本是初始化脚本添加编译时间tag标注到app
::初始化编译脚本rm -rf build.gradlecopy %DirCorelibs%build.gradle.model build.gradleset currentHour=%time:~0,2%if "%time:~0,1%"==" " set currentHour=0%time:~1,1%@echo %date:~0,4%%date:~5,2%%date:~8,2%_%currentHour%%time:~3,2%%time:~6,2%::替换版本号和版本python %DirCorelibs%replaceStrTools.py %versionCode% versionCodeValue build.gradlepython %DirCorelibs%replaceStrTools.py %versionName% versionNameValue build.gradlepython %DirCorelibs%replaceStrTools.py %date:~0,4%%date:~5,2%%date:~8,2%_%currentHour%%time:~3,2%%time:~6,2% ChannelValue build.gradle::clean,然后编译代码rm -rf buildlog.txtcall gradle cleancall gradle build -q 2>> buildlog.txt
邮件发送编译结果
编译结果判断编译的releaseapk是否存在,存在表示编译成功,否则读取as编译产生的错误日志发送邮件出来:
setlocal enabledelayedexpansionset mydd=%date:~0,4%set /a mydd=!mydd!+1svn log https://svn.url_url -r {%date:~0,4%-%date:~5,2%-%date:~8,2%}:{%mydd%-%date:~5,2%-%date:~8,2%} -v >> log.txt::打包好的apk发邮件出去if not exist build\outputs\apk\vtest.apk goto nofilegoto sendmail:nofile::编译失败发送邮件告诉主负责人python %DirCorelibs%sendmail.py build\outputs\apk\vtest.apk vtest.apk xxxxxxxx@qq.com SFA_Build_Faild_%versionName%_%versionCode%_%date:~0,4%%date:~5,2%%date:~8,2%_%currentHour%%time:~3,2%%time:~6,2% buildlog.txt goto endsendmail:sendmail::编译成功发送邮件告诉主负责人python %DirCorelibs%sendmail.py build\outputs\apk\vtest.apk vtest.apk xxxxxxx@qq.com SFA_L_%versionName%_%versionCode%_%date:~0,4%%date:~5,2%%date:~8,2%_%currentHour%%time:~3,2%%time:~6,2% log.txt :endsendmail@echo end_send_email_%time:~0,8%
邮件结果
最终可以写一个at命令处理每天晚上编译一个日版本给到测试人员
邮件截图如下
补上web前端展示编译结果页面
0 0
- android基于Android Studio的持续集成CI
- Travis CI android 持续集成
- Android项目基于flow.ci+fir.im+github的持续化集成实例
- 基于Jenkins的持续集成CI [
- 使用 flow.ci 实现 Android 自动化测试与持续集成
- Android快速开发与体系搭建--持续集成--Gitlab CI
- Android敏捷开发、CI(持续集成)探究
- android配置集成CI持续化开发工具Jenkins
- Jenkins CI持续集成(基于Git)
- 基于Gitlab CI搭建持续集成环境
- 基于Gitlab CI搭建持续集成环境
- Android studio 下的robotium自动化测试和持续集成
- 基于Jenkins+git+gradle的android持续集成
- 基于Jenkins+git+gradle的android持续集成
- 基于Jenkins+git+gradle的android持续集成
- 基于Jenkins+git+gradle的android持续集成
- 基于Jenkins+git+gradle的android持续集成
- 基于Jenkins+git+gradle的android持续集成
- selenium webdriver+testng自定义html测试报告
- nodejs模拟get,post 进行字符统计功能
- 【GDOI 2016 Day1】第四题 疯狂动物城 题解+代码
- bzoj 1003: [ZJOI2006]物流运输 动态规划+最短路
- LK源码解析 1 crt0.s
- android基于Android Studio的持续集成CI
- Android studio更新到2.2之后出现的问题
- js制作淘宝放大镜效果
- Android 仿iOS右滑 finish 界面
- hdoj 2033人见人爱A+B 解题报告
- ES5中新增的Array方法
- 第十三周项目52-虚析构函数
- python的sort()函数详解
- 斜杠和反斜杠