自動打包的前提:至少手動打包過一次,因為會關系到第二步(我是這么操作的)
第一步 在項目目錄下創(chuàng)建 自動打包.sh 文件 (自動打包 這個名字可以自己取)
cd *項目文件*
touch 自動打包.sh
復制下面到 自動打包.sh垄分,修改下面的project_name菲宴、scheme导坟、development_mode、uKey、_api_key
特別注意,是否使用了CocoaPods,查看下面的代碼塊中的 特別注意
#使用方法
if [ ! -d ./IPADir ];
then
mkdir -p IPADir;
fi
#工程絕對路徑
project_path=$(cd `dirname $0`; pwd)
#工程名
project_name="******"
#scheme名部宿,同上
scheme_name="*****"
#打包模式 Debug/Release
development_mode= Release
#build文件夾路徑
build_path=${project_path}/build
#plist文件所在路徑
exportOptionsPlistPath=${project_path}/exportTest.plist
#導出.ipa文件所在路徑
exportIpaPath=${project_path}/IPADir/${development_mode}
#應用安裝包文件的路徑
filePath=${project_path}/IPADir/${project_name}.ipa
echo '正在清理工程'
xcodebuild clean -configuration ${development_mode} -quiet || exit
echo '清理完成'
echo '正在編譯工程:'${development_mode}
#### 特別注意
#打包的工程文件分兩種(是否包含cocoapods):project和workspace,如果需要打包的是project,則在archive中將-workspace替換為-project,將.xcworkspace的路徑替換為.xcodeproj的路徑
#archive -workspace ${project_name}.xcworkspace
#archive -project ${project_name}.xcodeproj
xcodebuild archive -archivePath ${build_path}/${project_name}.xcarchive -workspace ${project_name}.xcworkspace -scheme ${scheme_name} -configuration ${development_mode} -quiet || exit
echo '編譯完成'
echo '開始ipa打包'
xcodebuild -exportArchive -archivePath ${build_path}/${project_name}.xcarchive -exportPath ${exportIpaPath} -exportOptionsPlist ${exportOptionsPlistPath} -configuration ${development_mode} -quiet || exit
if [ -e $exportIpaPath/$scheme_name.ipa ]; then
echo 'ipa包已導出'
open $exportIpaPath
else
echo 'ipa包導出失敗 '
fi
echo '打包ipa完成 '
echo '開始上傳到蒲公英'
#https://www.pgyer.com/doc/view/upload_one_command 查找uKey和_api_key
curl -F "file=@$filePath" \
-F "uKey=********" \
-F "_api_key=********" \
https://www.pgyer.com/apiv1/app/upload
echo '上傳完成'
第二步 exportTest.plist 文件
如果打包過理张,在Xcode->Window->organizer->項目->app store / ad-hoc ->下載到本地->打開文件夾->ExportOptions.plist->改名為 exportTest.plist
第三步
1. 把exportTest.plist和自動打包.sh 一起放在項目目錄下
2. cd 項目目錄
3. chmode +x 自動打包.sh
4. ./自動打包.sh
注意:每次重新進行4時赫蛇,在項目目錄下如果有通過 自動打包.sh 創(chuàng)建的build文件夾,要先把的build文件夾刪除
自己遇到的問題
xcodebuild[47029:2402102] [MT] IDEDistribution: -[IDEDistributionLogging _createLoggingBundleAtPath:]: Created bundle at path '/var/folders/vs/n9h9vgh55xq1hmfry3n0_p9c0000gn/T/Chainup_2020-02-16_14-40-08.682.xcdistributionlogs'.
error: exportArchive: The data couldn’t be read because it isn’t in the correct format.
Error Domain=NSCocoaErrorDomain Code=3840 "No value." UserInfo={NSDebugDescription=No value., NSFilePath=/var/folders/vs/n9h9vgh55xq1hmfry3n0_p9c0000gn/T/ipatool-json-filepath-~~~SRY1mT}
** EXPORT FAILED **
解決:
1雾叭、把xcode上的BitCode關閉,設置成No即可悟耘,project和targets里面對應的BitCode都需要關閉,
2织狐、把第二步exportTest.plist中compileBitcode 的value由 true改成 false
如