iOS 如何利用指令碼編寫icon角標區分APP版本+環境
引子
上篇文章解決了如何快速科學的區分APP環境。緊隨著又出現這個需求。
當APP存在多個環境的時候,如何快速的區分不同的版本+環境,如果能直觀的通過角標來完成這樣一個區分就太棒了。
本文目的
- 解決如何通過角標區分環境 。
- 打包build++。
展示效果
這是在fir上面打包出來的效果。
如何實現
首先花幾分鐘安裝Homebrew + Ghostscript外掛,很簡單
安裝教程
需要說的是上面這個連結簡書的作者不是原創,最早是一個外國的開發者開發的,中國有人進行了翻譯,然後這篇部落格也被抄來抄去,但是並不影響我們使用。
1. 安裝好了上面的兩個外掛之後,在專案包下面新增角標圖片,名字別修改了,因為指令碼里面找的路徑關聯圖片名稱
2. 建立指令碼。
注意這裡指令碼的順序不要亂,就加在最後面,因為這裡的指令碼會按照先後順序進行編譯。如果把角標指令碼放到臺前面,會出問題。
3. 指令碼編寫。
(下面會給出demo,這個指令碼根據不同的判斷條件用來繪製角標。挺複雜的,但是並不需要弄懂才能使用,使用的時候更改環境,和對應的圖片就能得到你想要的效果)
指令碼最終的位置
指令碼檔案
IFS=$'\n'
//獲取build,需要畫到圖示上面去
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${INFOPLIST_FILE}")
//獲取版本號,需要畫到圖示上面去
versionNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" "${INFOPLIST_FILE}")
//獲取bundleID, 需要進行環境的判斷
bundleIdentifier=${PRODUCT_BUNDLE_IDENTIFIER}
PATH=${PATH}:/usr/local/bin
echo "this is PR Environment" //列印現在這個環境是PR環境
function generateIcon () {
BASE_IMAGE_NAME=$1
TARGET_PATH="${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/${BASE_IMAGE_NAME}"
echo "this line is target path"
echo $TARGET_PATH
echo $SRCROOT
echo $(find ${SRCROOT} -name "AppIcon60x60@2x.png")
BASE_IMAGE_PATH=$(find ${SRCROOT} -name ${BASE_IMAGE_NAME})
//進行寬高的計算
WIDTH=$(identify -format %w ${BASE_IMAGE_PATH})
FONT_SIZE=$(echo "$WIDTH * .15" | bc -l)
echo "font size $FONT_SIZE"
//最後需要被繪製到icon上面的角標
iconbadgeDebug="${SRCROOT}/iconbadge/debugRibbon.png"
iconbadgeRelease="${SRCROOT}/iconbadge/prbetaRibbon.png"
resizedIconBadge="${SRCROOT}/iconbadge/resizedRibbon.png"
echo "iconbadge is $iconbadge"
//根據不同環境進行繪製
if [ "${CONFIGURATION}" == "Debug" ]; then
convert ${iconbadgeDebug} -resize ${WIDTH}x${WIDTH} ${resizedIconBadge}
convert ${BASE_IMAGE_PATH} -fill white -font Times-Bold -pointsize ${FONT_SIZE} -gravity south -annotate 0 "$versionNumber.$buildNumber" - | composite ${resizedIconBadge} - ${TARGET_PATH}
fi
if [ "${CONFIGURATION}" == "Release" ]; then
convert ${iconbadgeRelease} -resize ${WIDTH}x${WIDTH} ${resizedIconBadge}
convert ${BASE_IMAGE_PATH} -fill white -font Times-Boldr -pointsize ${FONT_SIZE} -gravity south -annotate 0 "$versionNumber.$buildNumber" - | composite ${resizedIconBadge} - ${TARGET_PATH}
fi
}
generateIcon "AppIcon20x20@2x.png"
generateIcon "AppIcon20x20@3x.png"
generateIcon "AppIcon29x29@2x.png"
generateIcon "AppIcon29x29@3x.png"
generateIcon "AppIcon40x40@2x.png"
generateIcon "AppIcon40x40@3x.png"
generateIcon "AppIcon60x60@2x.png"
generateIcon "AppIcon60x60@3x.png"
直接去demo裡面複製檔案,然後更改這個地方圖片的路徑+Debug/Realse,最終選擇使用哪個角標進行繪製
注意這裡是會針對Target進行建立指令碼
a. APPStore不要這個指令碼
b. Debug模式下面對應Debug角標
c. 開發環境對應的角標是Bete角標
d. Pr環境對應的是Pr角標
這是我們公司的規則,當然你也可以根據你們公司的業務進行整理
demo裡面為了在debug展示不同的效果,對圖片的路徑進行了更改,下面就是指令碼的效果
補充:因為我們公司的專案全部在fir上面進行分發,為了記錄次數以及辨認版本,我們進行了每次打包的時候build+1的指令碼,也附在demo裡面去了,這裡就不展開了。
如果你覺得我的文章+demo對你有幫助,歡迎給github上面留下你的star,不勝感激。
文章demo
相關文章
- LLIconVersioning-一個可以建立app版本資訊icon的指令碼APP指令碼
- IOS製作全套ICON的PHP指令碼iOSPHP指令碼
- 如何編寫高效的 Shell 指令碼指令碼
- 如何使用zx編寫shell指令碼指令碼
- 利用 Powershell 編寫簡單的瀏覽器指令碼瀏覽器指令碼
- shell 指令碼如何編寫-致初學者指令碼
- Linux之rsync同步分發指令碼編寫.Linux指令碼
- gdb指令碼編寫指令碼
- Shell 指令碼編寫指令碼
- Mac寫入環境變數指令Mac變數
- 如何編寫冪等的 Bash 指令碼?- Arslan指令碼
- 如何用 JMeter 編寫效能測試指令碼?JMeter指令碼
- iOS中如何使用多個Target去管理你的專案環境版本(測試環境與線上環境)iOS
- 如何編寫 iOS PatchiOS
- 油猴指令碼編寫指令碼
- 編寫git指令碼.shGit指令碼
- 每日同步環境SHELL指令碼指令碼
- 快速編寫Dockerfile----php環境DockerPHP
- maven更改編譯環境的java版本Maven編譯Java
- PYTHON教程中“編寫一個Python指令碼”版本一的windows版本Python指令碼Windows
- 使用漢語環境時,grep命令竟然不區分大小寫
- 用 Spring 區分開發環境、測試環境、生產環境Spring開發環境
- Xamarin ios C#蘋果應用開發第二講配置環境和編寫程式碼iOSC#蘋果
- 配置變數區分不同環境變數
- 從頭編寫指令碼: 為 IBM WebSphere Application Server 建立 Jython 管理指令碼指令碼IBMWebAPPServer
- 編碼風格:Mvc模式下SSM環境,程式碼分層管理MVC模式SSM
- 用Node寫一條配置環境的指令
- EA指令碼編寫要點指令碼
- 編寫執行R指令碼指令碼
- 編譯FFMPEG原始碼的指令碼編寫案例編譯原始碼指令碼
- 一鍵RAC環境配置指令碼指令碼
- 編寫開發環境很難嗎開發環境
- VS Code + PlantUML搭建UML編寫環境
- 如何編寫測試團隊通用的Jmeter指令碼JMeter指令碼
- iOS程式碼編寫利器AppCode 2022iOSAPP
- Android app相容低版本Java環境AndroidAPPJava
- 如何區分資料和指令
- iOS app icon 通用設計規則iOSAPP