上篇先說一下打包的周邊問題(也能夠先跳過),下篇再聚焦於打包自己。markdown
因爲是在其餘機器上打包,因此須要:app
系統偏好設置
-> 共享
中打開遠程登陸、屏幕共享、文件共享三個權限而後平時打包就是經過 訪達->共享屏幕
去訪問,或者說 ssh(遠程登陸)
連接上去。若是須要遠程在家的話,能夠考慮掛一個 TeamViewer
ssh
若是是經過 ssh方式
遠程登陸到其餘macOS機器上,直接打包可能因爲 Keychain
未解鎖的問題致使打包失敗。oop
解決辦法是在遠程機器桌面建立一個登陸密碼文件,假如當前登陸密碼爲 12345678
:spa
// 也能夠手動建立一份文件,注意文件名須要和後邊的匹配
echo 12345678 > ~/.keychain_pass_file
複製代碼
而後在腳本最前面,加上:code
注意:腳本第一行會打印密碼出來。若是對這有顧慮的能夠研究換一種方法orm
# 解鎖遠程機器上的鑰匙串
keychain_pass = sh("cat ~/.keychain_pass_file")
sh "security unlock-keychain -p #{keychain_pass}"
unlock_keychain(path: "~/Library/Keychains/login.keychain", password: "$(cat ~/.keychain_pass_file)")
複製代碼
因爲有多個馬甲包,且可能由不一樣人負責的,且打包腳本也有可能更新,如何讓他們共用同一份Fastfile呢。get
稍微查了下資料後,發現有一個 環境變量(env)
和 遠程文件
,徹底知足這個需求。it
環境變量: - 相似於 xcconfig
,配置鍵值對,而後在 Fastfile
中經過 ENV["Key"]
來獲取不一樣值 - 在打包時,執行 fastlane fir --env weixin
, 其中 weixin
必須和 env
文件名一致,如: .env.weixin
遠程文件: 能夠導入遠程文件,來實現始終爲最新版本的打包腳本io
初次打包時,可能會詢問密碼,這個時候,能夠用這一行命令來解決
security set-key-partition-list -S apple-tool:,apple: -k "$(cat ~/.keychain_pass_file)" ~/Library/Keychains/login.keychain
複製代碼
也能夠到鑰匙串裏,設置證書的訪問控制權限來達到目的。