linux安装配置apk打包程序gradle+jdk+Android_sdk+python自动化编译脚本
安装gradle:
1.下载gradle包
去这里下载需要的tar.gz包:https://services.gradle.org/distributions/
2.解压
tar zxvf gradle.tar.gz
3.移动到/usr/local/
mv gradle /usr/local/gradle
4.配置/etc/profile环境变量
vim /etc/profile 添加以下内容
export GRADLE_HOME=/usr/local/gradle
export PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin:${GRADLE_HOME}/bin
安装jdk:
1.下载jdk包
去这里下载需要的tar.gz包:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
2.解压
tar zxvf jdk.tar.gz
3.移动到/usr/local/java
mv jkd /usr/local/java
4.配置/etc/profile环境变量
export JAVA_HOME=/usr/local/java/jdk1.8.0_111
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin
安装android sdk:
1.下载android sdk
下载SDK,下载地址:http://developer.android.com/sdk/index.html
2.因为SDK只有32位的,如果装的是64位系统,则要安装ia32-libs,运行32位程序
yum install glibc.i686
3.下载完成后解压,在终端进入到SDK的根目录,然后执行:tools/android update sdk --no-ui即可
4.配置/etc/profile环境变量
export ANDROID_HOME=/usr/local/android-sdk-linux
export PATH=${ANDROID_HOME}/tools:${PATH}:${ANDROID_HOME}/platform-tools:$PATH
5.在终端输入:android,如果Android SDK Manager窗口出来了,就证明环境配置成功
6.进入$SDK_HOME/toos目录,命令窗口运行:./android avd(可选操作)
2016-12-05添加自动构建脚本
代码思想:
1.记录错误日志,并发送错误信息给相关人员
2.每天定时检测有更新就打包,没有更新就记录日志
3.将打好的apk压缩移动到指定位置
#!/usr/bin/env python
#coding:utf8
import os
import time
import smtplib
from email.mime.text import MIMEText
mailto_list = ['xxoo.qin@fantasee.cn','xx@fantasee.cn','oo@fantasee.cn']
mail_host = "smtp.163.com" # 设置服务器
mail_user = "xianyin0@163.com" # 用户名
mail_pass = "5213344" # 口令
def send_mail(to_list, sub, content):#有错误发送邮件
me='xianyin0@163.com'
msg = MIMEText(content, format, 'utf-8')
msg["Accept-Language"] = "zh-CN"
msg["Accept-Charset"] = "ISO-8859-1,utf-8"
msg = MIMEText(content)
msg['Subject'] = sub
msg['From'] = me
msg['To'] = ",".join(to_list)
try:
server = smtplib.SMTP()
server.connect(mail_host)
server.login(mail_user, mail_pass)
server.sendmail(me, to_list, msg.as_string())
server.close()
except Exception as e:
print(str(e))
def logger(content):#记录日志
date = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime())
with open('/root/log.txt','a') as f:
f.write('[%s]:%s\n'%(date,content))
def yunpos2():#yunpos2打包apk代码
os.chdir(r'/usr/local/yunpos2/pos/yunpos')
content=os.popen('svn up')
data = content.read()
if len(data)>50:
try:
data0=os.popen(r'gradle aR')
os.chdir(r'/usr/local/yunpos2/pos/yunpos/app/build/outputs/apk/')
data2 = os.popen('ls')
for i in data2.readlines():
pass
date2 = i.split('_',4)[0] + '_' + i.split('_',4)[1] + '_' + i.split('_',4)[2] + '_' + i.split('_',4)[3]
os.system(r'zip -r /var/ftp/apk/%s.zip yunpos2*.apk'%date2)
os.system('rm -rf yunpos2*.apk')
except:
logger('yunpos2打包失败')
send_mail(mailto_list, "yunpos2 packaging failure",data)
else:
logger('yunpos2代码没有更新')
def possdk():#possdk打包apk代码
os.chdir(r'/usr/local/yunpos2/pos/possdk')
content=os.popen('svn up')
data = content.read()
if len(data)>50:
try:
os.system(r'gradle aR')
os.chdir(r'/usr/local/yunpos2/pos/possdk/app/build/outputs/apk')
data2 = os.popen('ls')
for i in data2.readlines():
date2 = i.split('_',4)[0] + '_' + i.split('_',4)[1] + '_' + i.split('_',4)[2] + '_' + i.split('_',4)[3]
break
os.system(r'zip -r /var/ftp/apk/%s.zip yunpos*.apk'%date2)
os.system('rm -rf yunpos*.apk')
except:
logger('possdk打包失败')
send_mail(mailto_list, "possdk packaging failure",data)
else:
logger('possdk代码没有更新')
def yunpos():#yunpos打包apk代码
os.chdir(r'/usr/local/yunpos/android/yunpos')
content=os.popen('svn up')
data = content.read()
if len(data)>50:
try:
os.system(r'gradle aR')
os.chdir(r'/usr/local/yunpos/android/yunpos/build/outputs/apk')
data2 = os.popen('ls')
for i in data2.readlines():
date2 = i.split('_',4)[0] + '_' + i.split('_',4)[1] + '_' + i.split('_',4)[2] + '_' + i.split('_',4)[3]
break
os.system(r'zip -r /var/ftp/apk/%s.zip yunpos*.apk'%date2)
os.system('rm -rf yunpos*.apk')
except:
logger('yunpos打包失败')
send_mail(mailto_list, "yunpos packaging failure",data)
else:
logger('yunpos代码没有更新')
if __name__=='__main__':
yunpos2()
possdk()
yunpos()
linux安装配置apk打包程序gradle+jdk+Android_sdk+python自动化编译脚本的更多相关文章
- linux经常使用(一)linux 安装配置 jdk之 找不到安装文件文件夹及source /etc/profile 报unexpected end of file 错误 解决
linux 安装配置 jdk 应该算是一个非常主要的东西.可是我到如今才自己第一次 正式安装.果然出现了问题.. 问题就是 安装之后 找不到 安装路径 ,进而没法配置环境变量. 现象例如以下: 提示 ...
- linux安装nodejs运行vue程序
linux安装nodejs运行vue程序 1.与node官网下载安装包 https://nodejs.org/zh-cn/download/ 6.上传到服务器,并解压 tar -xvf node-v1 ...
- Webpack安装配置及打包详细过程
引言 前端经过漫长的发展,涌现出了很多实践方法来处理复杂的工作流程,让开发变得更加简便,其中,模块化可以使复杂的程序细化成为各个小的文件,而webpack并不强制你使用某种模块化方案,而是通过兼容所有 ...
- Linux安装配置php环境的方法
本文实例讲述了Linux安装配置php环境的方法.分享给大家供大家参考,具体如下: 1.获取安装文件: http://www.php.net/downloads.php php-5.3.8.tar.g ...
- Linux安装配置VPN服务器
一.实验简介 VPN ,中文翻译为虚拟专有网络,英文全称是 Virtual Private Network .现在 VPN 被普遍定义为通过 一个公用互联网络建立一个临时的.安全的连接,是一条穿过混乱 ...
- Linux安装配置apache
Linux安装配置apache 1.获取软件: http://httpd.apache.org/ httpd-2.2.21.tar.gz 2.安装步骤: 解压源文件: 1 tar zvxf ht ...
- Linux安装配置varnish web加速器
Linux安装配置varnish web加速器 Varnish是一款高性能的开源HTTP加速器,它可以来做纯粹的代理服务器,负载均衡,但varnish最主要的功能是缓存加速,也是它最出色的 ...
- Gradle Android最新自动化编译脚本教程
转自:http://blog.csdn.net/changemyself/article/details/39927381 一.前言 Gradle 是以 Groovy 语言为基础,面向Java应用为主 ...
- Gradle Android它自己的编译脚本教程的最新举措(提供demo源代码)
一.前言 Gradle 是以 Groovy 语言为基础,面向Java应用为主.基于DSL(领域特定语言)语法的自己主动化构建工具. 上面这句话我认为写得非常官方,大家仅仅需知道Gradle能够用来an ...
随机推荐
- android 中获取当前焦点所在屏幕中的位置 view.getLocationOnScreen(location)
final int[] location = new int[2]; view.getLocationOnScreen(location); final int[] location = new in ...
- log4net 按时间输出日志
参考:(转)非常完善的Log4net详细说明 log4net 按天与按小时记日志的配置 Log4net 中输出日志到文件,文件名根据日期生成 log4net按日志级别(debug,info,warn, ...
- 使用Canvas绘制背景图
原文 http://www.imququ.com/post/use-canvas-as-background-image.html 最近iCloud Web的Beta版换了UI,整体风格变得和iOS ...
- ElasticSearch基本学习
ES介绍 维基百科使用Elasticsearch来进行全文搜做并高亮显示关键词,以及提供search-as-you-type.did-you-mean等搜索建议功能. 英国卫报使用Elasticsea ...
- Leetcode: Poor Pigs
There are 1000 buckets, one and only one of them contains poison, the rest are filled with water. Th ...
- freemarker配置信息
<!-- <!– freemarker的配置 –> <bean id="freemarkerConfigurer" class="org.spr ...
- mysql 5.0.46安装配置
http://os.chinaunix.net/a2008/0801/986/000000986346.shtml RPM包和源码包存放位置 /usr/local/src 源码包编译安装位置(pref ...
- CDC的StretchBlt函数载入位图时图片失真问题
最近遇到加载的bmp图片出现失真问题,查找得知需要用SetStretchBltMode函数设置拉伸模式. 函数原型:int SetSTretchBltMode(HDC hdc, int iStretc ...
- iOS Bundle display name国际化
iOS app包显示名称可以国际化,具体方法如下: 编辑Info.plist,添加一个新的属性:Application has localized display name,设置该属性的类型为bool ...
- uexQQ插件学习心得
uexQQ插件学习心得 uexQQ插件的作用:通过qq可以分享图文,音乐,应用到相应的qq空间.支持手机客户端分享和手机webQQ分享.下面我们就来看一看他的一些方法. 我们先说一下分享的步骤,这个步 ...