前言
从入职就一直想实现全自动操作,缘由是我们SDK构成复杂,包括依赖的c++库,接入需要配置很多项,最开始要求是导入依赖的库实现脚本配置,(最开始没有用CocoaPods,需要手动添加依赖),简单做了了解之后,没有发现好的方式。就一直搁浅了,最近重构支持pod方式,解决了依赖库的添加问题,但还是手动添加我们自己库的配置。在做了一番调研后,发现Xcodeproj这个gem可以完美解决我们的问题,遂引入工程。在做完自动配置后,就想把所有的步骤都脚本化,这才有了这篇记录。
1、添加依赖的gem
sudo gem install fir-cli
sudo gem install xcodeproj
sudo gem install plist
sudo gem install mysql2 -- --with-cflags=\"-I/usr/local/opt/openssl/include\" --with-ldflags=\"-L/usr/local/opt/openssl/lib\"
2、clone Vigame模块
模块包含sdk、自动化脚本、plist文件等。
注:需cd到工程目录,记录ruby执行shell命令
cmd = "git clone https://github.com/hohua88/Vigame.git"
system (cmd)
cd /Users/xxxx/xxx
git clone https://github.com/hohua88/Vigame.git
3、修改工程配置
使用Xcodeproj实现的,参考Xcodeproj工程配置脚本化
根据服务器数据修改plist及生成Podfile
修改plist
生成Podfile根据数据库的配置信息,生成对应的命令,我的根据服务器返回写了一个hash,具体如下
as_hash = {"headlineId" => "pod 'KTMSDK/Analysis/ByteDance',sdkVersion\n", "ReYunAppKey" => "pod 'KTMSDK/Analysis/TrackingIO',sdkVersion\n", "umengId" => "pod 'KTMSDK/Analysis/Umeng',sdkVersion\n"}
#生成Podfile
def create_podfile (var)
var.concat(["end"])
puts var
aFile=File.new('Podfile','w')
var.each do |i|
aFile.write(i)
end
aFile.close
end
生成Podfile之后可以直接执行
pod install
4、 检测使用SDK版本
require 'Plist'
require 'net/https'
require 'uri'
require 'json'
#获取本地配置
path = File.join(File.dirname(__FILE__), "VigameLibrary.plist")
result = Plist.parse_xml(path)
version = result["KTMSDK_Version"]
puts version
#读取服务器配置
url = "http://gui.vigame.cn/plugin/files/Versions_iOS.json"
uri = URI.parse(url)
res = Net::HTTP.get_response(uri)
resbody = JSON.parse(res.body)
sever_version = resbody["KTMSDK_Version"]["version"]
if sever_version == version
print ( "已是最新版本 #{version}\n")
else
raise "请升级到最新版本 #{sever_version}"
cmd = "exit 1"
system (cmd)
end
5、添加p12及mobileprovision
#添加证书和描述文件
security import "./Vigame/证书-密码123456/dis.p12" -k ~/Library/Keychains/login.keychain-db -P "123456" -A
security import "./Vigame/证书-密码123456/dev.p12" -k ~/Library/Keychains/login.keychain-db -P "123456" -A
open ./Vigame/证书-密码123456/gzsj2_20191102_adhoc.mobileprovision
open ./Vigame/证书-密码123456/gzsj2_20191102_dev.mobileprovision
6、打包脚本
如果需要上传服务器/提审可以扩展实现
xcodebuild clean -workspace Unity-iPhone.xcworkspace -scheme Unity-iPhone -configuration enterprise
xcodebuild archive -workspace Unity-iPhone.xcworkspace -scheme Unity-iPhone -archivePath Unity-iPhone.xcarchive
xcodebuild -exportArchive -archivePath "Unity-iPhone.xcarchive" -exportPath ipa -exportOptionsPlist "Vigame/ExportOptions.plist"
7、上传fir.im
登录fir.im,在个人账号下API Token中获取自己的api_token
echo "遍历文件,找到xxxx.ipa"
for file in $(ls *)
do
strB=".ipa"
if [[ $file == *$strB* ]] ; then
fir publish ./ipa/${file} -T “your-apitoken” -Q
fi
done
8、打开打包文件夹
里面有下载二维码图片,可以直接把图片给到测试进行下载测试,如果要打上传appstore的包,可以自己手动打包。
open ./ipa