iOS-打包ipa兼容CocoaPods管理的項目

iOS通itms-services://協(xié)議安裝ipa,省去https環(huán)境的搭建

腳本如下

  • 首先在Xcode配置好相應的證書和描述文件
  • copy如下腳本新建一個shell文件如pkg.sh放在項目根目錄
    然后在終端執(zhí)行sh pkg.sh 輸入必要的參數(shù)開始打包
例如:sh pkg.sh Debug 

Shell Code

#!/bin/bash
#自動化編譯打包腳本
#相關設置 1.PROJECT->Info->Configuations 點擊加號添加自己需要的環(huán)境名
# 2.PROJECT->Build Settings->Basic->Preprocessor Macros 設置對應環(huán)境的鍵值
# 步驟3可選,如果是swift開發(fā)或者混編需要設置
# 3..PROJECT->Build Settings->Basic-> Swift compiler - Custom Flags -> Active Comilation Conditions  對應環(huán)境的鍵值
#Config  表示服務器環(huán)境 Dubug:開發(fā) Qa:測試 Release:生產(chǎn)
# `pwd` 表示當前路徑
#Project_Name 根據(jù)工程的名字作修改

# 獲取當前目錄
currentDir=`pwd`

#用/分割路徑
OLD_IFS="$IFS"
IFS="/"
dirNames=($currentDir)
IFS="$OLD_IFS"

#獲取數(shù)組長度
length=${#dirNames[@]}
echo "分割結果:"${dirNames[@]}
projectName=${dirNames[$length-1]}
echo "項目名稱:"$projectName

scheme=$projectName
echo "ppp-"$scheme
#選擇環(huán)境
choose=0;

if [[ $1 == 'Debug' ]]; then
    choose=1
fi

if [[ $1 == 'Qa' ]]; then
    choose=1
fi
if [[ $1 == 'Release' ]]; then
    choose=1
fi

#獲取命令行參數(shù)
# $0 是指令文件
# $1 第一個參數(shù)
# $2 第二個參數(shù),依此類推

echo '環(huán)境:'$1
if [[ $choose == 0 ]]; then
    echo '注意選擇環(huán)境,用法如下:'
    echo 'sh package.sh  Debug|Qa|Release'
    echo '0表示沒有使用workspace管理,1表示使用workspace管理(當使用pod管理第三方庫時)'
    echo ''
    exit
fi
echo '開始打包。。。'

# 導出plist的文件格式,建議首先使用Xcode 對項目 archive 后導出查看格式,并補充對應值
# 因為這個格式會隨著Xcode的版本變化二變化
pkg_plist="pkg.plist"
if [ ! -f $pkg_plist ]
then
    /usr/libexec/PlistBuddy -c "print" pkg.plist
    /usr/libexec/PlistBuddy -c "Add :bundle-identifier string ${projectName}" $pkg_plist
    /usr/libexec/PlistBuddy -c "Add :bundle-version string 1.0.0" $pkg_plist
    /usr/libexec/PlistBuddy -c "Add :kind string software" $pkg_plist
    /usr/libexec/PlistBuddy -c "Add :title string ${projectName}" $pkg_plist
fi


config=$1 #項目模式Debug/Release等
archivePath= build/$projectName.xcarchive

#判斷當前目錄是否有 *.xcworkspace的目錄
isPod=0
if [[  -d $projectName.xcworkspace ]]; then
    isPod=1
fi

if [ ${isPod} == 1 ]
then
echo 'pod----------------'
xcodebuild archive \
-workspace $projectName.xcworkspace \
-archivePath $projectName \
-scheme $projectName \
-configuration $config
else
echo 'nopod---------'
xcodebuild archive \
-project $projectName.xcodeproj \
-archivePath $projectName \
-scheme $projectName \
-configuration $config
fi


#打包
exportPath="./ipa/" #archive導出目錄(ipa包)
if [ ! -d $exportPath ]
then
  mkdir $exportPath
fi
xcodebuild -exportArchive -archivePath ./$projectName.xcarchive \
-exportPath $exportPath \
-exportOptionsPlist ./$pkg_plist


#打開ipa目錄
open -R $exportPath

iOS通itms-services://協(xié)議安裝ipa,省去https環(huán)境的搭建

配置的無法傳遞到Pod的處理


# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'

target 'VGBaseKitDemo' do
# Comment the next line if you don't want to use dynamic frameworks
use_frameworks!

# Pods for VGBaseKitDemo
  pod 'SnapKit'

end

post_install do |installer|
    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
        config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '13.0'
        # 根據(jù)自己配置修改
        if config.name == 'Qa'
            config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= ['$(inherited)', 'Qa=1']
            config.build_settings['OTHER_SWIFT_FLAGS'] ||= ['$(inherited)', '-DQa']
        end
        # 根據(jù)自己配置修改
        if config.name == 'UAT'
            config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= ['$(inherited)', 'UAT=1']
            config.build_settings['OTHER_SWIFT_FLAGS'] ||= ['$(inherited)', '-DUAT']
        end
        # 適配Xcode14打包證書問題
#        config.build_settings['EXPANDED_CODE_SIGN_IDENTITY'] = ""
#        config.build_settings['CODE_SIGNING_REQUIRED'] = "NO"
#        config.build_settings['CODE_SIGNING_ALLOWED'] = "NO"
#        config.build_settings['ENABLE_BITCODE'] = 'NO'
        end
    end
end
    


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

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

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