IOS 打包證書籤名 shell指令碼
shell 指令碼:
#!/bin/bash
#
#--------------------------------------------
# 功能:
# 作者:
# 建立日期:
#--------------------------------------------
#上傳伺服器配置
appId="0001"
versionId="1.0.0"
uploadUrl="http://*********/test/upload.json"
#證書及描述檔案
CODE_SIGN_IDENTITY="iPhone Distribution: *** Appliance Co., Ltd."
DEVELOPMENT_TEAM="5E2PGY2377***"
PROVISIONING_PROFILE_SPECIFIER="****Enterprise"
#打包環境檢測
if [ $1 != "sit" -a $1 != "pre" -a $1 != "Pre" -a $1 != "pre2" -a $1 != "Pre2" -a $1 != "pre3" -a $1 != "Pre3" -a $1 != "prd" ]; then
echo "請輸入正確的構建環境:[sit | pre | Pre | pre2 | Pre2 | pre3 | Pre3 | prd]"
exit 1
else
build_env=$(echo $1 | perl -pe 's/.*/\u$&/')
fi
#工程路徑讀取
workspace_path="$(cd "$(dirname $0)" && pwd)"
cd ${workspace_path}
workspace_name=$(ls | grep xcworkspace)
project_dir="epa_project_ios"
project_path=${workspace_path}/${project_dir}
project_name=$(ls ${project_dir} | grep xcodeproj | awk -F.xcodeproj '{print $1}')
target_name=${project_name}
info_plist=${project_path}/Project/${project_name}-Info.plist
result_path=${workspace_path}/build/${build_env}_$(date +%Y-%m-%d_%H_%M)
#工程程式碼更新
echo "======開始更新程式碼======"
cd ${project_path}
git stash
git pull --rebase
cd ${workspace_path}
pod update --no-repo-update --verbose
if [ $? != 0 ]; then
echo "======程式碼更新失敗======"
exit 1
else
echo "======完成程式碼更新======"
fi
#修改版本號
if [ -n "$2" ]; then
bundleShortVersion=$(echo $2 | perl -pe 's/.*/\u$&/')
/usr/libexec/PlistBuddy -c "Set :CFBundleShortVersionString ${bundleShortVersion}" ${info_plist}
else
#主版本號讀取
bundleShortVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleShortVersionString" ${info_plist})
fi
#應用標識及名稱修改
case "$1" in
sit|pre|pre2|pre3)
bundle_identifier=com.suning.${build_env}
bundle_name=${build_env}${bundleShortVersion}
;;
Sit|Pre|Pre2|Pre3|Prd|prd)
bundle_identifier=com.suning.SuningEfubao
bundle_name="****test"
;;
esac
/usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier ${bundle_identifier}" ${info_plist}
/usr/libexec/PlistBuddy -c "Set :CFBundleDisplayName ${bundle_name}" ${info_plist}
#Today Extension
te_info_plist=${project_path}/NotificationBarForYiFuBao/Info.plist
if [ -f ${nse_info_plist} ]; then
te_bundle_identifier=${bundle_identifier}.NSExtension
/usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier ${te_bundle_identifier}" ${te_info_plist}
fi
#Notification Service Extension
nse_info_plist=${project_path}/NotificationServiceExtension/Info.plist
if [ -f ${nse_info_plist} ]; then
nse_bundle_identifier=${bundle_identifier}.NotificationServiceExtension
/usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier ${nse_bundle_identifier}" ${nse_info_plist}
fi
#打包環境修改
config_file=${project_path}/Project/Src/Constants/BuildConfig.h
if [ -f ${config_file} ]; then
upper_env=$(echo ${build_env} | tr '[a-z]' '[A-Z]')
echo "======修改環境配置======"
sed -i '' "/TARGET_ENV_/ s/1/0/" ${config_file}
sed -i '' "/TARGET_ENV_${upper_env}/ s/0/1/" ${config_file}
sed -i '' "/DEBUG_ENABLE/ s/1/0/" ${config_file}
fi
#構建路徑設定
mkdir -p "${result_path}"
setting_out=${result_path}/build_setting.txt
xcodebuild -showBuildSettings -workspace "${workspace_name}" -scheme "${target_name}" -configuration Release > ${setting_out}
build_path=`echo $(grep -w "CONFIGURATION_BUILD_DIR" ${setting_out} | awk -F= '{print $2}')`
echo "======build_path: ${build_path}======"
archive_path=${build_path}/${target_name}.xcarchive
#清除舊包
rm -rf ${archive_path}
#歸檔打包
echo "======開始構建======"
xcodebuild clean archive -workspace "${workspace_name}" \
-scheme "${target_name}" \
-archivePath ${archive_path} \
-configuration Release \
CODE_SIGN_IDENTITY="${CODE_SIGN_IDENTITY}" \
DEVELOPMENT_TEAM="${DEVELOPMENT_TEAM}" \
PROVISIONING_PROFILE_SPECIFIER="${PROVISIONING_PROFILE_SPECIFIER}"
echo "======檢查是否構建成功======"
if [ -d "${archive_path}" ]; then
echo "構建成功......"
else
echo -e "\033[31m 構建失敗,請修正後重新執行! \033[0m"
rm -rf ${result_path}
exit 1
fi
cd ${project_path}
git checkout -- ${config_file}
git checkout -- ${info_plist}
git checkout -- SNYifubao.xcodeproj/project.pbxproj
ipa_name=${target_name}_${bundleShortVersion}.ipa
ipa_path=${result_path}
ExportOptionsPlist=${project_path}/ExportOptions.plist
#XCODE8 需要使用系統的ruby
which rvm > /dev/null
if [[ $? -eq 0 ]]; then
echo "RVM detected, forcing to use system ruby"
[ -s "$HOME/.rvm/scripts/rvm" ] && . "$HOME/.rvm/scripts/rvm"
rvm use system
fi
#匯出ipa
xcodebuild -exportArchive \
-archivePath ${archive_path} \
-exportOptionsPlist ${ExportOptionsPlist} \
-exportPath ${ipa_path}
echo "======檢查是否成功匯出ipa======"
ipa_temp_path=${ipa_path}/${target_name}.ipa
if [ -f "${ipa_temp_path}" ]; then
echo "匯出ipa成功......"
#ipa重新命名
mv "${ipa_temp_path}" "${ipa_path}/${ipa_name}"
else
echo -e "\033[31m 匯出ipa失敗...... \033[0m"
exit 1
fi
#備份dSYM
dsym_path=${archive_path}/dSYMs/${target_name}.app.dSYM/Contents/Resources/DWARF/${target_name}
cp -R "${dsym_path}" "${result_path}/${target_name}.dSYM"
#info名稱
ipa_info=${target_name}_${bundleShortVersion}.info
echo ${target_name} ${bundleShortVersion} $1"($(date "+%Y-%m-%d %H:%M"))" > ${result_path}/${ipa_info}
ipaDesc="****test"$1
echo "======result_path: ${result_path}======"
###########################################檔案上傳###########################################
echo "======開始上傳測試包======"
case "$build_env" in
Pre|Pre2|Pre3)
build_env="Pre";;
esac
cd ${result_path}
#curl -T "{${ipa_name},${ipa_info}}" -u epp:ios ftp://*********/${build_env}/ipa/
curl -F "appId=${appId}" -F "versionId=${versionId}" -F "bundleId=${bundle_identifier}" -F "ipaDesc=${ipaDesc}" -F " [email protected]${ipa_path}/${ipa_name}" ${uploadUrl}
echo "======共耗時${SECONDS}秒======"
相關推薦
IOS 打包證書籤名 shell指令碼
shell 指令碼:#!/bin/bash # #-------------------------------------------- # 功能: # 作者: # 建立日期: #--------------------------------------------
Hbuilder 打包、證書籤名問題
可能iOS下各種證書(點選這裡)的繁雜,所以官方只給出了iOS系統下證書的生成說明,Android證書的生成的確很簡單,我簡單說明一下: 1、安裝JDK 2、在cmd下,進入到JDK的bin目錄,輸入: keytool -genkey -alias yourapp -keyalg RS
使用Let's Encrypt證書籤名服務建立Java Keystore(.jks)
安裝certbot sudo apt-get install software-properties-common sudo add-apt-repository ppa:certbot/certbot sudo apt-get update sudo apt-get install
openssl和cfssl證書籤名請求一點記錄
基本概念: X509 證書標準,定義證書內容 openssl:一套開源軟體,SSL密碼庫工具,提供了一個通用、健壯、功能完備的工具套件,用以支援SSL/TLS 協議的實現。 CFSSL: CFSSL是CloudFlare的PKI / TLS瑞士×××。它既是命令列工具,也是用於簽名,驗證和捆綁
AndroidStudio配置數字證書籤名及切換debug和release(包含使用adb命令對apk進行簽名)
使用adb命令對apk進行簽名: jarsigner -verbose -keystore keystore.jks -signedjar signed.apk unsigned.apk alias_
OpenSSL生成並使用CA根證書籤名Keytool生成的證書請求
生成私鑰[帶密碼] [root@node00 security]# openssl genrsa [-des3] -out ca.key 2048 Generating RSA private key, 2048 bit long modulus ...............
騰訊雲免費SSL證書如何生成證書籤名請求CSR?
騰訊雲免費SSL證書基本上可以滿足我們小網站的需求,大家可以參考這篇:騰訊雲免費SSL證書申請地址 申請到證書即可。但是問 題來了,騰訊雲免費SSL證書生成的SSL證書只提供,KEY+CRT,缺少證書籤名請求CSR,應該如何搞?比如我們使用某些虛擬主 機(諸如糖果主機)
IOS8與9配置企業證書籤名的應用
ios8出來的時候,使用企業證書打出的包不能夠下載,後來網上提供了一定的解決,在plist中的bundle id後面加上ios8fix,如下: <key>bundle-identifier</key> <string>com.ah
蘋果證書籤名機制
原文地址:http://www.mamicode.com/info-detail-1155997.html 非對稱加密和摘要 非對稱加密的特性和用法 非對稱加密演算法可能是世界上最重要的演算法,它是當今電子商務等領域的基石。簡而言之,非對稱加密就是指加密金鑰和解密金
iOS利用(Shell指令碼)自動打包專案工程生成ipa
剛剛進入一家遊戲公司,今天在研究iOS利用指令碼打包專案工程。用xcode打包速度慢而且繁瑣,所以選擇指令碼來做,在這裡分享一下。 打包方法 一.通過Xcode 其實當我們Xcode點選了build或者執行comand+R之後,Xcode自己執行的
詳解Shell指令碼實現iOS自動化編譯打包提交
目錄 前言Shell指令碼涉及的工具 xcodebuild和xcrunaltoolfir-cliPlistBuddy一些概念的區別具體實現 xcodebuild和xcrun準備Plist檔案獲取命令列引數清理構建目錄編譯打包成Archive將Archive匯出上傳到Fir
ios xcodebuild命令列自動打包 shell指令碼
#################################### 使用規則: 1.cd到工程目錄,再執行該sh指令碼檔案 2.該工程如果存在xcworkspace檔案,那麼WORKSPACE_NAME必須要指定名稱,PROJECT_NAME也
iOS工程自動打包 (Shell指令碼打包)
1 #!/bin/bash 2 3 #-------------------------------------------- 4 # 功能:編譯xcode專案並打ipa包 5 # 使用說明: 6 # 編譯project 7 # ipa-b
升級到xcode9 shell指令碼自動打包失敗
http://blog.csdn.net/kongdeqin/article/details/78050599 升級到xcode9 shell指令碼自動打包失敗 升級完xcode9 自動打包報: xcrun: error: unable to find utility “Pac
Shell指令碼構建Docker 半自動化編譯打包釋出應用
Docker 釋出的方式為實現DevOps(自動化運維,需要配置 程式碼管理工具如Git的hook來實現提交編譯、打包、釋出等一系列事件控制)提供了諸多方便,輔助於Shell指令碼可以很好的配合起來。Docker映象可以通過自動化編譯,也可以通過匯入映象的方式來獲得。本文的題目叫:Shell指令
【福利乾貨】Maven 自動打包編譯的shell指令碼
以下內容純屬瞎琢磨,希望對大家有用,廢話不多說直接上程式碼 #!/bin/bash echo ================================= echo 自動化部署指令碼啟動 echo 自動化部署指令碼啟動 echo ==============================
iOS音視訊—Shell指令碼語言(第一個指令碼應用)
Shell指令碼語言 簡介 一、Android開發:動態庫編譯(.so檔案) iOS開發:靜態庫(.a檔案) Shell編譯 掌握基本Shell使用->修改和應用Shell 二、什麼是Shell
iOS音視訊—Shell指令碼語言(語法-字串)
In every walk with nature one receives far more than he seeks. 每一次和自然同行,都會有意外的收貨。 Shell指令碼語言(語法-字串)
Maven 自動打包編譯的shell指令碼
#!/bin/bash echo ================================= echo 自動化部署指令碼啟動 echo 自動化部署指令碼啟動 echo ================================= echo 進入/data/vhome cd
ubuntu16.04通過Jenkins+shell指令碼打包docker映象並推送到映象
實驗環境 系統版本:16.04-4.4.0-21-generic Jenkins版本:v2.140 Docker版本:18.09.0 Harbor版本:v1.5.3(centos7-3.10) 注:由於Harbor是基於Docker Registry V2版本,所以就要求Docker版本不小於1.1