自動化打包的工具網(wǎng)上有很多,例如shenzhen,fastlane,可以直接打包然后上傳到服務(wù)器,很成熟了,他們的使用這里就不重點(diǎn)說了。
這里只介紹一下基本的命令使用,所有的自動化腳本都是基于命令打包的。
第一步:關(guān)于打包方式:
DESCRIPTION
xcodebuild?builds one or more targets contained in an Xcode project, or builds a scheme contained in an? ? Xcode workspace or Xcode project.
兩種方式1.一種是project,另一種是包含多個project(例如用到了pods的工程)。
1.project方式:
xcodebuild -project name.xcodeproj -target targetname -configuration Release -sdk iphoneos build CODE_SIGN_IDENTITY="$(CODE_SIGN_IDENTITY)" PROVISIONING_PROFILE="$(PROVISIONING_PROFILE)"
eg:
CODE_SIGN_IDENTITY ? : ?iPhone Developer: XXX XXX (C2XXXXXS8)
PROVISIONING_PROFILE : XXXXXX-XX-XX-XXXX-XXXX
這里的兩個可以通過keychain-證書-顯示簡介-常用名稱 和本地的~/Library/MobileDevice/Provisioning\ Profiles找到,例如:85477e68-979f-4444-8f5d-XXXXX.mobileprovision,后面的.mobileprovision去掉。
2.workspace方式:
xcodebuild -workspace name.xcworkspace -scheme schemename -configuration Release -sdk iphoneos build CODE_SIGN_IDENTITY="$(CODE_SIGN_IDENTITY)" PROVISIONING_PROFILE="$(PROVISIONING_PROFILE)"
eg:xcodebuild -workspace XXX.xcworkspace -scheme schemename -configuration Release -sdk iphoneos build CODE_SIGN_IDENTITY="iPhone Developer: XXX XXX (C2XXXXXS8)" PROVISIONING_PROFILE="XXXXXX-XX-XX-XXXX-XXXX" CONFIGURATION_BUILD_DIR='工程絕對路徑/build/Release-iphoneos' ONLY_ACTIVE_ARCH=NO
這里注意要加上:CONFIGURATION_BUILD_DIR='工程絕對路徑/build/Release-iphoneos' ONLY_ACTIVE_ARCH=NO。使用CONFIGURATION_BUILD_DIR來顯式指定輸出編譯后的文件路徑。因?yàn)閣orkspace默認(rèn)不會自動創(chuàng)建build路徑。
成功后會出現(xiàn):** BUILD SUCCEEDED **,到此build成功。
第二步:生成ipa包
xcrun -sdk iphoneos -v PackageApplication ./build/Release-iphoneos/XXX.app -o ~/Desktop/XXX.ipa
在打包過程中發(fā)現(xiàn)了一點(diǎn)問題,有時候會有如下錯誤:
ld normal armv7 failed
Ld normal arm64
library not found
可以從幾個方面檢查,1.出現(xiàn)XXXnot found的時候,這個文件如果不存在不需要,打開XXX.xcodeproj查找這個文件是不是在里面出現(xiàn)了,出現(xiàn)了就清理掉。2.library not found,看下是什么庫導(dǎo)致的,在link binary with libraries 中刪除重新添加。