在Xcode 11之前 ,我使用了一個腳本來讀取當(dāng)前應(yīng)用程序版本(適用于AppStore)并幫助我更改LaunchScreen,動態(tài)獲取版本號:
#用腳本獲取info.plist里面的版本字段
versionNumber=$(/usr/libexec/PlistBuddy -c "Print :CFBundleShortVersionString" "./目錄/info.plist");
#我在LaunchScreen.storyboard里面拖了一個UILabel進(jìn)去,取名為AppVersion
sed -i bak -e "/userLabel=\"AppVersion\"/s/text=\"[^\"]*\"/text=\" $versionNumber\"/" ./目錄/LaunchScreen.storyboard;
但是在Xcode 11中 ,項目的構(gòu)建設(shè)置中有一個新的部分稱為Versioning
并且CFBundleShortVersionString自動更改為$(MARKETING_VERSION) 。 Xcode會自動處理該問題, 我不想手動將其更改為靜態(tài)數(shù)字 ,而是讓Xcode進(jìn)行處理。
經(jīng)過一番探索發(fā)現(xiàn),可以像使用其他任何項目變量一樣使用它:
sourceFilePath="$PROJECT_DIR/$PROJECT_NAME/App/Base.lproj/LaunchScreen.storyboard"
versionNumber="$MARKETING_VERSION"
buildNumber="$CURRENT_PROJECT_VERSION"
sed -i .bak -e "/userLabel=\"APP_VERSION_LABEL\"/s/text=\"[^\"]*\"/text=\"v$versionNumber\"/" "$PROJECT_DIR/$PROJECT_NAME/App/Base.lproj/LaunchScreen.storyboard"