iOS 腳本打包并上傳App Store/Fir/蒲公英

一、前言

在我們App實際開發(fā)過程中,我們的最終目的是打包上傳并發(fā)布App。之前一直手動打包,但是不管是打包效率還是打包時間都不太理想,所以最近搞了個腳本打包,可以一鍵打包上傳 App Store/Fir/蒲公英 。廢話不多說,我們直接開始吧。

二、準備

1、在開發(fā)者中心Identifiers目錄下注冊一個App IDs。

image.png

2、在開發(fā)者中心Provisioning Profiles目錄下注冊配置文件下載并打開。

image.png

image.png

3、安裝Fir.im命令行工具,命令如下:

gem install fir-cli

三、步驟

1、把shell.sh(打包腳本)、exportAppstore.plist(上傳App Store的plist)、exportTest.plist(上傳到蒲公英/Fir平臺)三個文件放到需要自動化打包的工程目錄下。

image.png

2、終端到達工程目錄下,執(zhí)行shell.sh腳本。

cd 項目路徑

執(zhí)行shell腳本

1、寫好自己的腳本,比如aa.sh 
 
2、打開終端 執(zhí)行:
方法一: 輸入命令    ./aa.sh
方法二:直接把 aa.sh 拖入到終端里面。

3、根據(jù)腳本提示選擇不同打包方式,最后選擇上傳到App Store還是Fir/蒲公英

image.png

4、上述步驟操作成功后工程目錄下會生成build文件(編譯后生成)IPADir文件(ipa包存放的目錄)
image.png

四、正文

下面詳細介紹下具體需要修改的地方:

  • exportAppstore.plist

    image.png

  • exportTest.plist

    image.png

  • shell.sh(里面xxx自己替換成自己的)

草圖

image.png

代碼

#使用方法

if [ ! -d ./IPADir ];
    then
        mkdir -p IPADir;
fi

#工程絕對路徑
project_path=$(cd `dirname $0`; pwd)

#工程名 將XXX替換成自己的工程名
project_name=xxx

#scheme名 將XXX替換成自己的scheme名
scheme_name=xxx

#打包模式 Debug/Release
development_mode=Debug

#build文件夾路徑
build_path=${project_path}/build

#plist文件所在路徑
exportOptionsPlistPath=${project_path}/exportTest.plist

#導出.ipa文件所在路徑
exportIpaPath=${project_path}/IPADir/${development_mode}

echo "Place enter the number you want to export ? [ 1:app-store 2:ad-hoc] "

##
read number
    while([[ $number != 1 ]] && [[ $number != 2 ]])
    do
        echo "Error! Should enter 1 or 2"
        echo "Place enter the number you want to export ? [ 1:app-store 2:ad-hoc] "
        read number
    done

if [ $number == 1 ];
    then
    development_mode=Release
    exportOptionsPlistPath=${project_path}/exportAppstore.plist
## 證書名字

    else
    development_mode=Debug
    exportOptionsPlistPath=${project_path}/exportTest.plist

fi


echo '///-----------'
echo '/// 正在清理工程'
echo '///-----------'
xcodebuild \
clean -configuration ${development_mode} -quiet  || exit


echo '///--------'
echo '/// 清理完成'
echo '///--------'
echo ''

echo '///-----------'
echo '/// 正在編譯工程:'${development_mode}
echo '///-----------'

## 注意這里!必看!!!必看!!!必看!!! 78行
## xcodeproj    xcworkspace
## 如果普通工程  78行 第一個xxx替換為project,第二個xxx替換為xcodeproj
## 如果使用CocoaPods  78行 第一個xxx替換為workspace,第二個xxx替換為xcworkspace
## 例如:
## 沒用CocoaPods, archive -project ${project_path}/${project_name}.xcodeproj \
## 用了CocoaPods, archive -workspace ${project_path}/${project_name}.xcworkspace \

xcodebuild \
archive -xxx ${project_path}/${project_name}.xxx \
-scheme ${scheme_name} \
-configuration ${development_mode} \
-archivePath ${build_path}/${project_name}.xcarchive -quiet  || exit

echo '///--------'
echo '/// 編譯完成'
echo '///--------'
echo ''

echo '///----------'
echo '/// 開始ipa打包'
echo '///----------'
xcodebuild -exportArchive -archivePath ${build_path}/${project_name}.xcarchive \
-configuration ${development_mode} \
-exportPath ${exportIpaPath} \
-exportOptionsPlist ${exportOptionsPlistPath} \
-quiet || exit

if [ -e $exportIpaPath/$scheme_name.ipa ];
    then
    echo '///----------'
    echo '/// ipa包已導出'
    echo '///----------'
    open $exportIpaPath
    else
    echo '///-------------'
    echo '/// ipa包導出失敗 '
    echo '///-------------'
fi
echo '///------------'
echo '/// 打包ipa完成  '
echo '///-----------='
echo ''

echo '///-------------'
echo '/// 開始發(fā)布ipa包 '
echo '///-------------'

if [ $number == 1 ];
    then

    echo "Place enter the number you want to export ? [ 1:App Store] "
    ##
    read FILM
        while([ $FILM != 1 ])
        do
            echo "Error! Should enter 1"
            echo "Place enter the number you want to export ? [ 1:App Store] "
            read FILM
        done

            if  [ $FILM == 1 ];
                then
                #驗證并上傳到App Store
                # 將-u 后面的XXX替換成自己的AppleID的賬號,-p后面的XXX替換成自己的密碼
                altoolPath="/Applications/Xcode.app/Contents/Applications/Application Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Versions/A/Support/altool"
                "$altoolPath" --validate-app -f ${exportIpaPath}/${scheme_name}.ipa -u xxx -p xxx -t ios --output-format xml
                "$altoolPath" --upload-app -f ${exportIpaPath}/${scheme_name}.ipa -u  xxx -p xxx -t ios --output-format xml
            else
                echo "false"
            fi

else

    echo "Place enter the number you want to export ? [ 1:fir 2:蒲公英] "
    ##
    read platform
        while([[ $platform != 1 ]] && [[ $platform != 2 ]])
        do
            echo "Error! Should enter 1 or 2"
            echo "Place enter the number you want to export ? [ 1:fir 2:蒲公英] "
            read platform
        done

            if [ $platform == 1 ];
                then
                #上傳到Fir
                # 將XXX替換成自己的Fir平臺的token
                fir login -T xxx
                fir publish $exportIpaPath/$scheme_name.ipa
            else
                echo "開始上傳到蒲公英"
                #上傳到蒲公英
                #蒲公英aipKey
                MY_PGY_API_K=xxx
                #蒲公英uKey
                MY_PGY_UK=xxx

                curl -F "file=@${exportIpaPath}/${scheme_name}.ipa" -F "uKey=${MY_PGY_UK}" -F "_api_key=${MY_PGY_API_K}" https://qiniu-storage.pgyer.com/apiv1/app/upload
            fi
fi
echo "\n\n"
echo "已運行完畢>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
exit 0

五、代碼

https://github.com/GlassOfRedWinemm/PackDemo-master.git

有不明白的隨時問我?。?!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容