無奈使用了fastlane鹦肿,現(xiàn)在Xcode可以自動管理證書了廉嚼,所以應聲而出就是不用繁瑣簽名打包的工具玫镐,說到工具,fastlane不得不說怠噪,簡直就是一系列工具恐似,提供打包、上傳App Store傍念,甚至可以自動生成屏幕截圖蹂喻,針對多語言支持的應用簡直就是福利,多得不說了捂寿,來理一理坑口四。
1:首先要說的就是權限,當fastlane打包過程中出現(xiàn)Permission denied?
的時候秦陋,就需要注意了蔓彩,jenkins屬于系統(tǒng)的一個子賬號,所以權限大受限制驳概。
&(JENKINS_HOME)/workspace/
下所有文件需要掛在讀寫權限赤嚼,
將所有用戶設定為讀與寫。
不要忘了設置下目錄下所有文件都同時更新全新:
2:另外就是涉及到一個執(zhí)行最后的時候顺又,出現(xiàn)code sign失敗導致archive失敗更卒,這個需要在jenkins Excuse Shell 開始加入解鎖keychain的命令,不然默認jenkins會打不開鑰匙串也拿不到證書稚照,這個錯誤就特別的簡單蹂空,簡單的無理取鬧俯萌!
security unlock-keychain -p 系統(tǒng)密碼 $HOME/Library/Keychains/login.keychain
3:如果涉及到字符集錯誤,需要在jenkins Excuse Shell 開始設定命令行字符集命令:
export LANG="en_US.UTF-8"</code>
給個示例:
cd ${JENKINS_HOME}/workspace/
security unlock-keychain -p wuqiong $HOME/Library/Keychains/login.keychain
export LANG="en_US.UTF-8"
fastlane adhoc_build
以上是我們項目構建的時候必要的命令上枕,另外貼上fastfile內容咐熙,給你們做個參考:
# 定義fastlane版本號
fastlane_version “2.46.1”
# 定義打包平臺
default_platform :ios
def updateProjectBuildNumber
currentTime = Time.new.strftime("%Y%m%d")
build = get_build_number()
if build.include?"#{currentTime}."
# => 為當天版本 計算迭代版本號
lastStr = build[build.length-2..build.length-1]
lastNum = lastStr.to_i
lastNum = lastNum + 1
lastStr = lastNum.to_s
if lastNum < 10
lastStr = lastStr.insert(0,"0")
end
build = "#{currentTime}.#{lastStr}"
else
# => 非當天版本 build 號重置
build = "#{currentTime}.01"
end
puts("*************| 更新build #{build} |*************")
# => 更改項目 build 號
increment_build_number(
build_number: "#{build}"
)
end
def upload_pgyer
pgyer(api_key: “1dfa01bc013314b3d0e790e52e3f529f”, user_key: “bf680401a152800709dec9beb1437f93”)
end
#指定項目的scheme名稱
scheme=“ZIM2”
# 任務腳本
platform :ios do
lane :development_build do|options|
branch = options[:branch]
puts “開始打development ipa”
updateProjectBuildNumber #更改項目build號
# 開始打包
gym(
#輸出的ipa名稱
output_name:”#{scheme}”,
# 是否清空以前的編譯信息 true:是
clean:true,
# 指定打包方式,Release 或者 Debug
configuration:"Release",
# 指定打包所使用的輸出方式辨萍,目前支持app-store, package, ad-hoc, enterprise, development
export_method:"development",
# 指定輸出文件夾
output_directory:"./fastlane/build",
)
puts "開始上傳蒲公英"
# 開始上傳蒲公英
upload_pgyer
end
lane :adhoc_build do|options|
branch = options[:branch]
puts “開始打adhoc ipa”
updateProjectBuildNumber #更改項目build號
# 開始打包
gym(
#輸出的ipa名稱
output_name:”#{scheme}”,
# 是否清空以前的編譯信息 true:
clean:true,
# 指定打包方式棋恼,Release 或者 Debug
configuration:"Release",
# 指定打包所使用的輸出方式,目前支持app-store, package, ad-hoc, enterprise, development
export_method:"ad-hoc",
# 指定輸出文件夾
output_directory:"./fastlane/build",
)
puts "開始上傳蒲公英"
# 開始上傳蒲公英
upload_pgyer
end
end
在這個基礎上可以繼續(xù)加入一鍵構建上傳App Store的功能锈玉,可以打出不同環(huán)境的包爪飘,可以打出不同證書的ipa和修改info.plist文件做到渠道包一鍵制作,沒做深究拉背,下次有需求在琢磨师崎。