老人家的 app 有置入 AdMob 播放廣告,但 Google 要求 app 開發、測試期間,app 內的廣告要採用測試廣告,且抓得頗嚴,所以覺得蠻麻煩的。有時候,app 上架了才發現沒有換回正式廣告,就得再更正後再重上架...😒
偶然間,發現可以【設定建構變化版本】,這功能超好用的!
AdMob 的每種類型廣告都有個廣告 ID,在開發、測試期間要使用測試 ID,debug 時播放的廣告就會是測試廣告,要設定廣告,須在 /res/values/strings.xml 指定該類型廣告的 ID
<resources> ... ... <!-- 上架前要 mark 起來 --> <!-- adMob app id 測試 --> <string name="admob_app">ca-app-pub-3940256099942544~3347511713</string> <!-- 橫幅 測試 --> <string name="admob_banner">ca-app-pub-3940256099942544/6300978111</string> <!-- 插頁 測試 --> <string name="admob_interstitial">ca-app-pub-3940256099942544/8691691433</string> <!-- 影片 測試 --> <string name="admob_video">ca-app-pub-3940256099942544/5224354917</string> <!-- 開發時期先 mark 起來,等要上架前再恢復 --> <!-- adMob app id 正式 --> <!-- <string name="admob_app">ca-app-pub-blablaXXXXXXXXXX~XXXXXXXXXX</string> --> <!-- AdMob 橫幅 正式 --> <!-- <string name="admob_banner">ca-app-pub-blablaXXXXXXXXXX/aaaaaaaaaa</string> --> <!-- AdMob 插頁 正式 --> <!-- <string name="admob_interstitial">ca-app-pub-blablaXXXXXXXXXX/bbbbbbbbbb</string> --> <!-- AdMob 影片 正式 --> <!-- <string name="admob_video">ca-app-pub-blablaXXXXXXXXXX/cccccccccc</string> --> ... ... </resources>
現在,改在 app 層級的 build.gradle 設定
android { ... ... buildTypes { debug { // 開發、測試期 applicationId "com.example.dev" resValue 'string', 'app_name', '測試版 app' // adMob app id resValue "string", "admob_app_id", "ca-app-pub-3940256099942544~3347511713" // 橫幅 測試 resValue "string", "banner_id", "ca-app-pub-3940256099942544/6300978111" // 插頁 測試 resValue "string", "interstitial_id", "ca-app-pub-3940256099942544/8691691433" } release { // 正式 applicationId "com.example.prod" resValue 'string', 'app_name', '正式版 app' minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' // adMob app id resValue "string", "admob_app_id", "ca-app-pub-blablaXXXXXXXXXX~XXXXXXXXXX" // 橫幅 正式 resValue "string", "banner_id", "ca-app-pub-blablaXXXXXXXXXX/aaaaaaaaaa" // 插頁 正式 resValue "string", "interstitial_id", "ca-app-pub-blablaXXXXXXXXXX/bbbbbbbbbb" } } ... ... }
功能表選擇 Build → Select Build Variant,會看到可編譯的版本的選項。
另有一個常見的情況:
某個特定的 API 在某版本起被棄用,Google 強制規定要改用新的 API(Google 還蠻常做這事的...所以要配合 Google,大約每半年要檢視自己的 app 是否能在各 Android 版本上正常運行);例如:
app 原本在 API SDK30 前都可正常運行,但自 SDK31 起須改變程式寫法,在 build.gradle 設定 minSdkVersion 31,程式改好後,可將新版的 apk 取不同的檔名,上架到 PlayStore,如此,就分出新舊版本了,手機中的 PlayStore app 會自動判別,挑選最適合手機的版本 -- 手機版本在 SDK30 前的 user 會下載安裝舊版的 app,而手機版本在 SDK31 後的 user 則會下載新版的 app,不會因為 app 改版而放棄舊版本手機的 user。
沒有留言:
張貼留言