アダプティブ バナー(Adaptive Banner) の width | SDK v20 の準備

スマートバナーてなくなるんですね!

全幅表示のバナーを引き続き使用したい場合は、以下のコード スニペットに示されるようにアダプティブ バナーを使用してください。

👉 SDK v20 の準備  |  Android  |  Google Developers 

サンプルコードのここら。


 // Determine the screen width (less decorations) to use for the ad width.
 // If the ad hasn't been laid out, default to the full screen width.
 private val adSize: AdSize
   get() {
     val display = windowManager.defaultDisplay
     val outMetrics = DisplayMetrics()
     display.getMetrics(outMetrics)

     val density = outMetrics.density

     var adWidthPixels = ad_view_container.width.toFloat()
     if (adWidthPixels == 0f) {
       adWidthPixels = outMetrics.widthPixels.toFloat()
     }

     val adWidth = (adWidthPixels / density).toInt()
     return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, adWidth)
   }

👉 アダプティブ バナー |  Google Developers 

コメントにも書かれてるけど、ほぼ無意味な


var adWidthPixels = ad_view_container.width.toFloat()
if (adWidthPixels == 0f) {
      adWidthPixels = outMetrics.widthPixels.toFloat()
    }

通常の利用するタイミングを考えるとほぼ常に「0f」 でしょうか。

他の公式サンプルを見てみます。


   // Since we're loading the banner based on the adContainerView size, we need to wait until this
   // view is laid out before we can get the width.
   ad_view_container.viewTreeObserver.addOnGlobalLayoutListener {
     if (!initialLayoutComplete) {
       initialLayoutComplete = true
       loadBanner()
     }
   }

👉 googleads-mobile-android-examples/MyActivity.kt  

ad_view_container のレイアウトが完了するまで待ってから、loadBanner() → ad_view_container.width と処理が進んで前述分岐の意味が発生。

、、、

うん、

やっぱ、最近の公式サンプルコードやべーわ!

View サイズの取得のタイミングについては以下で🙆

👉 java - View's getWidth() and getHeight() returns 0 - Stack Overflow 


Android OS バージョンのシェア 2020-12

minSdkVersion をいくつにするか。

直近から80%までをカバーすることにして公式で確認してみましょう。

👉 配信ダッシュボード  |  Android デベロッパー  |  Android Developers 

今ではもう公式からのデータ公開などありません。

プラットフォームのバージョン
プラットフォームのバージョン情報については、Android Studio の [Create New Project] ウィザードでご確認ください。

 

Android Studio

確認してみます、2020-12-01現在。

Android 6.0 (API 23) 以降をカバーすれば、84.9%となり、8割をカバーすることができることになりますね。

これだけでは、あやしいのでネット上を定番サイトを巡回していきます。

 

AppBrain

AppBrain で確認してみます。


👉 Android OS version market share over time | AppBrain 

計算しやすいように順番に並び替えます。

OS Share (%) Sum (%)
6 7.6 90.6
7.0-7.1 9.8 83.0
8.0-8.1 17.8 73.2
9 24.1 55.4
10 31.1 31.3
11 0.2 0.2

Android7.0 (API24) 以降で、83%をカバーします。

 

StatCounter Global Stats

👉 Mobile & Tablet Android Version Market Share Worldwide | StatCounter Global Stats 

日本では Android8.0 (API26) 以降で 80.42%、世界では Android7.1 (API25) 以降で 81.86%をカバーします。

 

Google Play コンソール

先述の、公式ページに書いていたもう一つの関連メッセージ。


👉 配信ダッシュボード  |  Android デベロッパー  |  Android Developers 

信頼性の高いデータを使ってアプリのターゲティングを管理し、ユーザーのデバイスの特性を把握できるようにするには、Play Console で入手できるアプリの統計情報を活用することをおすすめします。

アプリ開発者向けのサイトになりますが、利用者数が多いアプリを公開していれば、最もリアルな生データになります。

しかし、そのアプリの特性も織り込まれます。

わたしらの公開しているアプリで見てみましょう。

OS Share (%) Sum (%)
7.1 2.02 88.12
8.0 10.35 86.10
8.1 2.09 75.75
9 25.31 73.66
10 46.99 48.35
11 1.36 1.36

Android8.0 (API26) 以降で 86.10% をカバーします。 アプリのユーザーは7割が日本国内を占めます。

 

まとめ

Android端末の国内発売当初から、バージョンシェアを眺めてきていますが、公式のAndroidDeveloperサイトのプラットフォームダッシュボードや、AndroidStudio内のウィザードの情報はこれまでも、かなり古い古すぎでした。

よって、今現在8割超えの minSdkVersion は「26」と決めつけちゃえ。

ちなみに以下も死んでます。

👉 minSdkVersion(@minSdkVersion)さんの返信があるツイート / Twitter 

ちなみに8年前。なつい。


👉 #androidファッション通信 | Facebook 


「Generate Signed Bundle or APK」ダイアログの混乱

このダイアログ。

「アップロード鍵」と「アプリ署名鍵」を同じもので行う場合は、一括で実行できますが、別のもので行う場合は混乱します。

処理自体は以下の3つですが、出力ファイルを考えながら、個別にも実行するのがいいのかもしれません。


A. 「アップロード鍵」または「アプリ署名鍵」を作成する。(.jks)

B. 「アプリ署名鍵」をエクスポートして暗号化する。(.pepk)

C. 「アップロード鍵」で署名した.aab をビルドする。(.aab)

 () : 出力ファイル形式

 

🔑 A. 「アップロード鍵」または「アプリ署名鍵」を作成する。(.jks)

 

🔑 B. 「アプリ署名鍵」をエクスポートして暗号化する。(.pepk)

 

🔑 C. 「アップロード鍵」で署名した.aab をビルドする。(.aab)

 

🔑 まとめ

「アップロードから公開まで一つの署名鍵で署名で行う。」という作業の敷居を下げたユーザー画面設計がここにきて混乱を生んでいるのだろう思います。

なので、

「一つの署名鍵でアップロード・アプリ署名鍵兼用」の場合は、


キーストアや鍵の追加 (.jks) → Android Studio

アプリ署名鍵の暗号化 (.pepk) → Android Studio

.aab ビルドとアップロード鍵署名 (.abb) → Android Studio

.pepk/.abb のアップロード → Play コンソール

というかんじでやって、

「アップロード鍵とアプリ署名鍵を別物にする」場合は、


キーストアや鍵たちの追加や編集 (.jks) → keytool コマンド

アップロード証明書作成 (.pem) → keytool コマンド

アプリ署名鍵の暗号化 (.pepk) → PEPK ツールコマンド

.aab ビルドとアップロード鍵署名 (.abb) → Android Studio

.pepk/.pem/.abb のアップロード → Play コンソール

でやると、よりきめ細かく自在に管理ができそうです。

てか、ややこしいわw

👉 【コピペ用】Android「Google アプリ署名」コマンドまとめ 
👉 はじめての Android App Bundle 
👉 【keytool】「キーストア(keystore)」と「エイリアス(alias)」の関係