iOS 2017 自动打包(python脚本)

前言

需要自动发布脚本的同学请移步:自动打包发布到App Store

打包,是每个app开发人员必须做得的一件枯燥无味且相当浪费时间的事情,于是,万能的开发者们学会了利用脚本来解放双手,这就是我接下来要讲的--自动打包.

正文

闲话少说,直入主题,不过在入主题之前先做准备工作:

先安装fir,fir是比较好用的第三方内测托管网站之一,下面实现命令安装

$  gem install fir-cli

详情请:

https://github.com/FIRHQ/fir-cli/blob/master/doc/install.md

此时我遇到了下面的错误:

ERROR: SSL verification error at depth 1: unable to get local issuer certificate (20)

ERROR: You must add /C=IL/O=StartCom Ltd./OU=Secure Digital Certificate

Signing/CN=StartCom Certification Authority to your local trusted store

ERROR:  While executing gem ... (Gem::FilePermissionError)

You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.

这时真是无语啊,就不能顺利点吗?

解决问题吧,还能怎样....

一个一个来:

首先第一个肯定是ssl证书问题,方法:

1.$ cd$rvm_path/usr/ssl

2.$ sudo curl-O http://curl.haxx.se/ca/cacert.pem

3.$ sudo mv cacert.pem cert.pem

第二个error是ruby的问题,我以为是ruby的环境问题,毕竟淘宝不能用了嘛,不管,换成最新的:

$gem sources --remove  https://ruby.taobao.org/

$gem sources --add https://gem.ruby-china.com

再试..还是报错,好吧,那就是ruby版本的问题咯,好吧,继续解决问题:

1.先安装Homebre ,终端输入这条命令即可:

$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

2. 安装rvm$ curl -L get.rvm.io | bash -s stable

3.装载rvm$ source ~/.rvm/scripts/rvm

4.安装2.3.0版本ruby$ rvm install 2.3.0

5.将2.3.0设为默认$ rvm use 2.3.0 --default

第三个貌似是权限问题,不管 sudo 他:

$ sudo gem install fir-cli

OK啦!!!!!

然后,去fir 注册一个账号再创建一个应用先放着

=====准备工作告一段落=====

正题终于来了,先声明我的思路,写程序思路很重要,这是真理:

一    创建和管理build文件夹

二    用xcodebuild编译出.app文件

三    把.app文件打包成IPA文件

四    上传到fir

五     发邮件通知给测试人员

o了!!!!!

然后一步步实现---

不想多说怎么办?----

直接上代码,这些代码是经过本人亲自测试过的,没毛病,可直接使用,没办法,哥就是这么霸气!!!

/*********************代码开始********************/

# -*- coding: utf-8 -*-

import os

import sys

import time

import hashlib

from email import encoders

from email.header import Header

from email.mime.text import MIMEText

from email.utils import parseaddr, formataddr

import smtplib

# 项目根目录

project_path = "/Users/xxxxx"

# 编译成功后.app所在目录

app_path = "/Users/xxx/Desktop/xxxx/build/xxxx-iphoneos/xxx.app"

# 指定项目下编译目录

build_path = "build"

# 打包后ipa存储目录

targerIPA_parth = "/Users/xxxx/Desktop"

fir_URL = "http://fir.im/xxxx"

# fir的api token

fir_api_token = "xxxxx"

from_addr = "[email protected]"

#注意是授权密码不是登录密码

password = "xxxx"

smtp_server = "smtp.163.com"

to_addr = '[email protected],[email protected]'

# 清理项目 创建build目录

def clean_project_mkdir_build():

os.system('cd %s;xcodebuild clean' % project_path) # clean 项目

os.system('cd %s;mkdir build' % project_path)

def build_project():

print("build release start")

os.system ('xcodebuild -list')

os.system("cd %s;xcodebuild -configuration xxx -target xxx"%(project_path))

# 打包ipa 并且保存在桌面

def build_ipa():

global ipa_filename

ipa_filename = time.strftime('xxx_%Y-%m-%d-%H-%M-%S.ipa',time.localtime(time.time()))

os.system ('xcrun -sdk iphoneos PackageApplication -v %s -o %s/%s'%(app_path,targerIPA_parth,ipa_filename))

#上传

def upload_fir():

if os.path.exists("%s/%s" % (targerIPA_parth,ipa_filename)):

print('watting...')

# 直接使用fir也可

ret = os.system("/usr/local/bin/fir p '%s/%s' -T '%s'" % (targerIPA_parth,ipa_filename,fir_api_token))

else:

print("没有找到ipa文件")

def _format_addr(s):

name, addr = parseaddr(s)

return formataddr((Header(name, 'utf-8').encode(), addr))

# 发邮件

def sendEmail():

msg = MIMEText('iOS测试项目已经打包完毕,请前往:%s 扫一扫即可下载测试'%fir_URL,'plain','utf-8')

msg['to'] = _format_addr('xx <%s>' % to_addr)

msg['from'] = _format_addr('自动打包 <%s>' % from_addr)

msg['subject'] = '新的iOS测试包已上传'

try:

server = smtplib.SMTP()

server.set_debuglevel(1)

server.connect(smtp_server)

server.login(from_addr,password)

server.sendmail(msg['from'], msg['to'],msg.as_string())

server.quit()

print '发送成功'

except Exception, e:

print str(e)

return

def main():

# 清理并创建build目录

clean_project_mkdir_build()

# 编译coocaPods项目文件并 执行编译目录

build_project()

# 打包ipa 并制定到桌面

build_ipa()

# 上传fir

upload_fir()

# 发邮件

sendEmail()

# 执行

main()

/***************************代码结束*******************/

执行python脚本:

cd  xx路径

python  xx.py

PS:  fir 的路径是绝对路径,需要用which fir 获取下,特别是当你换了电脑时。

再PS:如果发生xcrun: error: unable to find utility "PackageApplication", not a developer tool or in PATH的问题,是Xcode8.2没有PackageApplication的原因,可以在网上下载,然后

右键 Xcode.app -> 显示包内容 -> Contents -> Developer -> platforms -> iPhoneOS.platform -> Developer -> usr -> bin,进入这个目录之后,将下载的PackageApplication复制到这个目录,然后执行:chmod +x PackageApplication。

或者sudo xcode-select -switch/Applications/Xcode.app/Contents/Developer/chmod +x/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/PackageApplication,就OK了。

=============================================

********本文结束!**********

你可能感兴趣的:(iOS 2017 自动打包(python脚本))