Appearance
xcode 打包脚本
json
#工程绝对路径
project_path=~/.jenkins/workspace/kikitrade_ios_beta
#工程名 将XXX替换成自己的工程名
project_name=kikitrade
#scheme名 将aaa替换成自己的sheme名
scheme_name=kikitrade
#打包模式 Debug/Release
development_mode=Release
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
rm -rf .env
echo API_ENV=$env >> .env
echo BUGSNAG_KEY=b4401ea0bd0baf6ff5d4d6f1d584b690 >> .env
#
git fetch -a
#git merge origin/feature-opentracing
#curl -o klog.patch https://gitlab.com/vincent.yang1/gitpatch/-/raw/main/klog.patch
#git apply klog.patch
WeekDay=$(date +%u)
DayHour=$(date +%H)
if [ "$WeekDay" == "6" ] && [ "$DayHour" == "10" ]
then
rm -rf $project_path/node_modules
rm -rf $project_path/ios/Pods/
echo 'delete node_modules ios/Pods'
fi
/usr/local/bin/npm install
cd ~/.jenkins/workspace/kikitrade_ios_beta
echo "increment ios build number"
cd ios/
CONFIG_FILE="AppCenter-Config.plist"
SOURCEMAP_IOS=$project_path/sourcemap_ios.sh
APPCENTER_CONFIG_JSON_FILE=$project_path/ios/$CONFIG_FILE
plutil -replace AppSecret -string $APPCENTER_APP_SECRET $APPCENTER_CONFIG_JSON_FILE
echo "File $CONFIG_FILE content:"
cat $APPCENTER_CONFIG_JSON_FILE
agvtool new-version -all ${BUILD_NUMBER}
INFO_PLIST_FILE=${project_path}/ios/${project_name}/Info.plist
echo $env
echo "Updating appName to ${project_name}-$env in Info.plist"
plutil -replace CFBundleDisplayName -string Kikitrade-$env ${INFO_PLIST_FILE}
plutil -replace CFBundleShortVersionString -string $version $INFO_PLIST_FILE
plutil -replace FacebookAppID -string 1052114598639186 ${INFO_PLIST_FILE}
plutil -replace FacebookDisplayName -string kikitrade-beta ${INFO_PLIST_FILE}
sed -i '' 's/fb1052114598639186/fb1052114598639186/' ${INFO_PLIST_FILE}
sed -i '' 's/fb4082693721745670/fb1052114598639186/' ${INFO_PLIST_FILE}
sed -i '' 's/fb219948165709979/fb1052114598639186/' ${INFO_PLIST_FILE}
sed -i '' 's/com.googleusercontent.apps.311695539840-86t92kk23d4nf32an8o2p7vdt9kp2lat/com.googleusercontent.apps.983830855482-7srttj39aub02lvko5jnjnkr3lsm8372/g' $INFO_PLIST_FILE
cat $INFO_PLIST_FILE
sed -i '' 's/szAtEKkR19t5Exyjg-Qow-2ls6n2sDyU1jCov/dMz8lkmSrlmyIycmF9KrjhUgB5_DTEwz-pXiW/' ${project_path}/ios/kikitrade.xcodeproj/project.pbxproj
sed -i '' 's/org.evg.kikitrade/com.kktd.kikitrade/' ${project_path}/ios/kikitrade.xcodeproj/project.pbxproj
sed -i '' 's/ENV=dev/ENV='$env'/' ${project_path}/ios/kikitrade.xcodeproj/project.pbxproj
sed -i '' 's/ENV=pro/ENV='$env'/' ${project_path}/ios/kikitrade.xcodeproj/project.pbxproj
sed -i '' 's/ENV=prod/ENV='$env'/' ${project_path}/ios/kikitrade.xcodeproj/project.pbxproj
echo "Updating version code to $BUILD_NUMBER in sourcemap.sh"
sed -i '' 's/--app-version [0-9.]*/--app-version '$version'/' $SOURCEMAP_IOS
sed -i '' 's/--app-bundle-version [0-9.]*/--app-bundle-version '$BUILD_NUMBER'/' $SOURCEMAP_IOS
cat ${project_path}/ios/kikitrade.xcodeproj/project.pbxproj
#rm -rf Podfile.lock
#/usr/local/bin/pod install --repo-update
arch -arch x86_64 /usr/local/bin/pod install
#arch -arch x86_64 /usr/local/bin/pod install --repo-update
#xxx是工程名
if [ ! -d ./IPADir ];
then
mkdir -p IPADir;
fi
security unlock-keychain -p "longmao" ~/Library/Keychains/login.keychain
#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
echo '///-----------'
echo '/// 正在清理工程'
echo '///-----------'
#xcodebuild \
#clean -configuration ${development_mode} -quiet || exit
xcodebuild -workspace ${project_path}/ios/${project_name}.xcworkspace -scheme ${scheme_name} -configuration ${development_mode}
echo '///--------'
echo '/// 清理完成'
echo '///--------'
echo ''
echo '///-----------'
echo '/// 正在编译工程:'${development_mode}
echo '///-----------'
xcodebuild \
archive -workspace ${project_path}/ios/${project_name}.xcworkspace \
-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 "开始上传到appcenter"
#上传到蒲公英
#蒲公英aipKey
#MY_PGY_API_K=1675322c9c2c06fd5b17f9aa4f4e5f6a
#蒲公英uKey
#MY_PGY_UK=f272f68503bd4d39bd1217dd050429be
#curl -F "file=@${exportIpaPath}/${scheme_name}.ipa" -F "uKey=${MY_PGY_UK}" -F "_api_key=${MY_PGY_API_K}" https://www.pgyer.com/apiv2/app/upload
# echo "蒲公英上传成功,请到https://www.pgyer.com/fR8O安装试用"
#MESSAGE="kikitrade_$env ios包,上传蒲公英成功,请到https://www.pgyer.com/oivF 安装试用"
#DINGTALKTOKEN="c0871f81bcadafccd3bce65a74cdfb11d9ae5be4c919e6bfa363a779aceb4316"
cd ..
appcenter distribute release --app KIKITrade_IOS/Kikitrade_IOS_Beta --file ./IPADir/Release/Kikitrade.ipa --group pgyer
bash ./sourcemap_ios.sh
rm -rf ios-release*shell
# echo "Archiving the project"
# xcodebuild clean archive -workspace ios/${PROJECT_NAME}.xcworkspace -scheme $IOS_SCHEME -configuration $IOS_CONFIGURATION -archivePath ios/build/${PROJECT_NAME}.xcarchive
# use project to build
# xcodebuild clean archive -project $cur_dir/../../ios/${PROJECT_NAME}.xcodeproj -scheme $IOS_SCHEME -configuration $IOS_CONFIGURATION -derivedDataPath $cur_dir/../../ios/build -archivePath $cur_dir/../../ios/build/Products/${PROJECT_NAME}.xcarchive
# xcodebuild -workspace vibra.xcworkspace -configuration Beta -scheme vibra
# use xcworkspace to build
# xcodebuild clean archive PRODUCT_BUNDLE_IDENTIFIER=${IOS_APP_ID} -workspace $cur_dir/../../ios/${PROJECT_NAME}.xcworkspace -scheme $IOS_SCHEME -configuration $IOS_CONFIGURATION -derivedDataPath $cur_dir/../../ios/build -archivePath $cur_dir/../../ios/build/Products/${PROJECT_NAME}.xcarchive
# echo "Export archive to create IPA file using $IOS_EXPORT_OPTIONS_PLIST"
# xcodebuild -exportArchive -archivePath $cur_dir/../../ios/build/Products/${PROJECT_NAME}.xcarchive -exportPath $cur_dir/../../ios/build/Products/IPA
# echo "IPA will be found at $cur_dir/../../ios/build/Products/IPA/$IOS_SCHEME.ipa"更新: 2023-03-24 14:21:26
原文: https://www.yuque.com/u3641/dxlfpu/zp4vfq