📅
iOS/Android のバージョンに環境と日付を加える
背景と目的
アプリのベータ配信を運用していると、QAフェーズにおけるバグ報告などで開発チームとやり取りを行う際に「どのバージョンのアプリを使っているか?」が明確に特定できていないと齟齬が起きたりします。
そこでバージョンを明確に特定するために環境と日付を入れると良いでしょう。
iOS の場合
Run Script Phase に以下を加えます。これは Configuration に Integration
や Staging
を増やしている場合の例です。
if [ "${CONFIGURATION}" != "Release" ]; then
FORMAT_DATE=$(date "+%Y-%m-%d-%H-%M")
if [ "${CONFIGURATION}" == "Development" ]; then
ENV="dev"
elif [ "${CONFIGURATION}" == "Integration" ]; then
ENV="itg"
elif [ "${CONFIGURATION}" == "Staging" ]; then
ENV="stg"
else
ENV="dev"
fi
export VERSION_SUFFIX="-${ENV}-${FORMAT_DATE}"
/usr/libexec/PlistBuddy -c "Set :CFBundleShortVersionString ${MARKETING_VERSION}${VERSION_SUFFIX}" "${TEMP_DIR}/Preprocessed-Info.plist"
fi
一時的に出力される Preprocessed-Info.plist
を変更しているので、元の CFBundleShortVersionString
には影響はありません。Preprocessed-Info.plist
えを利用するためには Build Settings の Preprocess Info.plist File を Yes に変更する必要があります。
また Run Script の InputFiles にも加えておく必要があります。
Androidの場合
Android の場合は、iOSと比較するともっとシンプルに実現できます。build.gradle
に加えるだけです。以下では日付文字列を整形する処理を関数にしています。
android {
buildTypes {
debug {
versionNameSuffix "-dev" + "-" + getDate()
}
integration {
versionNameSuffix "-itg" + "-" + getDate()
}
staging {
versionNameSuffix "-stg" + "-" + getDate()
}
}
}
static def getDate() {
return new Date().format('yyyy-MM-dd-HH-mm')
}
Discussion