前言
需要自动发布脚本的同学请移步:自动打包发布到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了。
=============================================
********本文结束!**********