上圖的三個(gè)文件是打包腳本中要用的,百度自動(dòng)打包就會(huì)找到
# !/bin/bash## 聯(lián)系方式 :# BY# wy800820@163.com?
## =============================== 該腳本在最新的 Ruby 2.4.0 下運(yùn)行會(huì)出錯(cuò) ====================# =============================== 使用前請先切換舊的 Ruby 版本 =============================#開始執(zhí)行此打包腳本# ===============================項(xiàng)目自定義部分(自定義好下列參數(shù)后再執(zhí)行該腳本)============================= ## 計(jì)時(shí)SECONDS=0# 是否編譯工作空間 (例:若是用Cocopods管理的.xcworkspace項(xiàng)目,賦值true;用Xcode默認(rèn)創(chuàng)建的.xcodeproj,賦值false)is_workspace="false"# 指定項(xiàng)目的scheme名稱# (注意: 因?yàn)閟hell定義變量時(shí),=號(hào)兩邊不能留空格,若scheme_name與info_plist_name有空格,腳本運(yùn)行會(huì)失敗,暫時(shí)還沒有解決方法,知道的還請指教!)scheme_name="WyStudyDemo"# 工程中Target對(duì)應(yīng)的配置plist文件名稱, Xcode默認(rèn)的配置文件為Info.plistinfo_plist_name="Info"# 指定要打包編譯的方式 : Release,Debug,或者自定義的編譯方式build_configuration="Release"# ===============================項(xiàng)目上傳部分============================= ## 上傳到蒲公英
# gem install fir-cli
# 是否上傳到蒲公英,是true 否false
is_fir="true"
# 在 fir 上的API Token
fir_token="602671819a74b03a745eb577e97a1781"
# ===============================自動(dòng)打包部分(無特殊情況不用修改)============================= #
# 導(dǎo)出ipa所需要的plist文件路徑 (默認(rèn)為AdHocExportOptionsPlist.plist)
ExportOptionsPlistPath="./iOSAutoArchiveScript/EnterpriseExportOptionsPlist.plist"
# 返回上一級(jí)目錄,進(jìn)入項(xiàng)目工程目錄
#cd ..
# 獲取項(xiàng)目名稱
project_name=`find . -name *.xcodeproj | awk -F "[/.]" '{print $(NF-1)}'`
# 獲取版本號(hào),內(nèi)部版本號(hào),bundleID
InfoPlistPath="$project_name/$info_plist_name.plist"
bundle_version=`/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" $InfoPlistPath`
bundle_build_version=`/usr/libexec/PlistBuddy -c "Print CFBundleIdentifier" $InfoPlistPath`
bundle_identifier=`/usr/libexec/PlistBuddy -c "Print CFBundleVersion" $InfoPlistPath`
# 刪除舊.xcarchive文件
rm -rf ~/AutoArchive/$scheme_name-IPA/$scheme_name.xcarchive
# 指定輸出ipa路徑
export_path=~/AutoArchive/$scheme_name-IPA
# 指定輸出歸檔文件地址
export_archive_path="$export_path/$scheme_name.xcarchive"
# 指定輸出ipa地址
export_ipa_path="$export_path"
# 指定輸出ipa名稱 : scheme_name + bundle_version
ipa_name="$scheme_name-v$bundle_version"
# AdHoc,AppStore,Enterprise三種打包方式的區(qū)別: http://blog.csdn.net/lwjok2007/article/details/46379945
echo "================請選擇打包方式(輸入序號(hào),按回車即可)================"
echo "? ? ? ? ? ? ? ? 1 AdHoc? ? ? 內(nèi)測? ? ? ? "
echo "? ? ? ? ? ? ? ? 2 AppStore? ? 上架? ? ? ? "
echo "? ? ? ? ? ? ? ? 3 Enterprise? 企業(yè)? ? ? ? "
echo "? ? ? ? ? ? ? ? 4 Exit? ? ? ? 退出? ? ? ? "
echo "================請選擇打包方式(輸入序號(hào),按回車即可)================"
# 讀取用戶輸入并存到變量里? Jenkins 不能寫輸入變量
# read parameter
# sleep 0.5
# method="$parameter"
method="3"
# 判讀用戶是否有輸入
if [ -n "$method" ]
then
? ? if [ "$method" = "1" ] ; then
? ? ExportOptionsPlistPath="./iOSAutoArchiveScript/AdHocExportOptionsPlist.plist"
? ? elif [ "$method" = "2" ] ; then
? ? ExportOptionsPlistPath="./iOSAutoArchiveScript/AppStoreExportOptionsPlist.plist"
? ? elif [ "$method" = "3" ] ; then
? ? ExportOptionsPlistPath="./iOSAutoArchiveScript/EnterpriseExportOptionsPlist.plist"
? ? elif [ "$method" = "4" ] ; then
? ? echo "退出!"
? ? exit 1
? ? else
? ? echo "輸入的參數(shù)無效,請重新選擇!!!"
? ? exit 1
? ? fi
fi
echo "**************************開始編譯代碼...*********************************"
# 指定輸出文件目錄不存在則創(chuàng)建
if [ -d "$export_path" ] ; then
echo $export_path
else
mkdir -pv $export_path
fi
# 判斷編譯的項(xiàng)目類型是workspace還是project
if $is_workspace ; then
# 編譯前清理工程
xcodebuild clean -workspace ${project_name}.xcworkspace \
? ? ? ? ? ? ? ? -scheme ${scheme_name} \
? ? ? ? ? ? ? ? -configuration ${build_configuration}
xcodebuild archive -workspace ${project_name}.xcworkspace \
? ? ? ? ? ? ? ? ? -scheme ${scheme_name} \
? ? ? ? ? ? ? ? ? -configuration ${build_configuration} \
? ? ? ? ? ? ? ? ? -archivePath ${export_archive_path}
else
# 編譯前清理工程
xcodebuild clean -project ${project_name}.xcodeproj \
? ? ? ? ? ? ? ? -scheme ${scheme_name} \
? ? ? ? ? ? ? ? -configuration ${build_configuration}
xcodebuild archive -project ${project_name}.xcodeproj \
? ? ? ? ? ? ? ? ? -scheme ${scheme_name} \
? ? ? ? ? ? ? ? ? -configuration ${build_configuration} \
? ? ? ? ? ? ? ? ? -archivePath ${export_archive_path}
fi
#? 檢查是否構(gòu)建成功
#? xcarchive 實(shí)際是一個(gè)文件夾不是一個(gè)文件所以使用 -d 判斷
if [ -d "$export_archive_path" ] ; then
echo " ?? ?? ?? ?? ?? ?? 編譯成功? ?? ?? ?? ?? ?? ?? "
else
echo " ?? ?? ?? ?? ?? ?? 編譯失敗? ?? ?? ?? ?? ?? ?? "
exit 1
fi
echo "**************************開始導(dǎo)出ipa文件....*********************************"
# Xcode9需要加上 -allowProvisioningUpdates
# 詳情看:https://github.com/fastlane/fastlane/issues/9589
xcodebuild? -exportArchive \
? ? ? ? ? ? -archivePath ${export_archive_path} \
? ? ? ? ? ? -exportPath ${export_ipa_path} \
? ? ? ? ? ? -exportOptionsPlist ${ExportOptionsPlistPath} \
? ? ? ? ? ? -allowProvisioningUpdates
# 修改ipa文件名稱
mv $export_ipa_path/$scheme_name.ipa $export_ipa_path/$ipa_name.ipa
# 檢查文件是否存在
if [ -f "$export_ipa_path/$ipa_name.ipa" ] ; then
echo "??? ??? ??? ??? ??? ??? ${ipa_name} 打包成功! ??? ??? ??? ??? ??? ??? "
# 打開文件ipa 目錄
#open $export_path
else
echo "?? ?? ?? ?? ?? ?? ${ipa_name} 打包失敗! ?? ?? ?? ?? ?? ?? "
exit 1
fi
# 輸出打包總用時(shí)
echo "打包總用時(shí): ${SECONDS}s ~~~~~~~~~~~~~~~~"
# 上傳
#if $is_fir ; then
echo "**************************開始上傳ipa文件....*********************************"
#fir publish "$export_ipa_path/$ipa_name.ipa" -T ${fir_token}
? #? curl -F "file=@$export_ipa_path/$ipa_name.ipa" \
? #? -F "uKey=6625d15d4223aa7ff15f332325fc430f"? ? \
? #? -F "_api_key=602671819a74b03a745eb577e97a1781" \
? #? https://qiniu-storage.pgyer.com/apiv1/app/upload
? #? if [ $? = 0 ]
? #? then
? #? echo "~~~~~~~~~~~~~~~~上傳蒲公英成功~~~~~~~~~~~~~~~~~~~"
? #? else
? #? echo "~~~~~~~~~~~~~~~~上傳蒲公英失敗~~~~~~~~~~~~~~~~~~~"
? #? fi
#echo "fir publish "$export_ipa_path/$ipa_name.ipa" -T ${fir_token}"
echo "總計(jì)用時(shí):${SECONDS}"
#else
#exit 1
#fi