前言
從入職就一直想實現(xiàn)全自動操作,緣由是我們SDK構成復雜慨仿,包括依賴的c++庫浴井,接入需要配置很多項晒骇,最開始要求是導入依賴的庫實現(xiàn)腳本配置,(最開始沒有用CocoaPods,需要手動添加依賴)滋饲,簡單做了了解之后厉碟,沒有發(fā)現(xiàn)好的方式喊巍。就一直擱淺了屠缭,最近重構支持pod方式,解決了依賴庫的添加問題崭参,但還是手動添加我們自己庫的配置呵曹。在做了一番調研后,發(fā)現(xiàn)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執(zhí)行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實現(xiàn)的,參考Xcodeproj工程配置腳本化
根據(jù)服務器數(shù)據(jù)修改plist及生成Podfile
修改plist
生成Podfile根據(jù)數(shù)據(jù)庫的配置信息浮入,生成對應的命令龙优,我的根據(jù)服務器返回寫了一個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之后可以直接執(zhí)行
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野舶、打包腳本
如果需要上傳服務器/提審可以擴展實現(xiàn)
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