自動(dòng)打包的前提:至少手動(dòng)打包過一次,因?yàn)闀?huì)關(guān)系到第二步(我是這么操作的)
第一步 在項(xiàng)目目錄下創(chuàng)建 自動(dòng)打包.sh 文件 (自動(dòng)打包 這個(gè)名字可以自己取)
cd *項(xiàng)目文件*
touch 自動(dòng)打包.sh
復(fù)制下面到 自動(dòng)打包.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
#導(dǎo)出.ipa文件所在路徑
exportIpaPath=${project_path}/IPADir/${development_mode}
#應(yīng)用安裝包文件的路徑
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包已導(dǎo)出'
open $exportIpaPath
else
echo 'ipa包導(dǎo)出失敗 '
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->項(xiàng)目->app store / ad-hoc ->下載到本地->打開文件夾->ExportOptions.plist->改名為 exportTest.plist
第三步
1. 把exportTest.plist和自動(dòng)打包.sh 一起放在項(xiàng)目目錄下
2. cd 項(xiàng)目目錄
3. chmode +x 自動(dòng)打包.sh
4. ./自動(dòng)打包.sh
注意:每次重新進(jìn)行4時(shí),在項(xiàng)目目錄下如果有通過 自動(dòng)打包.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關(guān)閉,設(shè)置成No即可,project和targets里面對應(yīng)的BitCode都需要關(guān)閉,
2、把第二步exportTest.plist中compileBitcode 的value由 true改成 false
如

第一步