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 


【MVVM】Flow vs LiveData

👉 Using LiveData & Flow in MVVM — Part I - ProAndroidDev 

Kotlin Flow の登場で盛り上がってきました。

どれにします? どの流れにします?

Repository

Result を返す。

Flow<Result>を返す。

ViewModel

Result を受けて、LiveData<Result> を渡す。

Flow<Result> を受けて、LiveData<Result> を渡す。


Fragment

LiveData<Result> を受け取る。

Flow<Result> を受け取る。


override fun onActivityCreated(savedInstanceState: Bundle?) {
  super.onActivityCreated(savedInstanceState)

  viewModel = ViewModelProviders.of(
      this,
      viewModelFactory
  ).get(WeatherForecastDataStreamFlowViewModel::class.java)

  // Consume data when fragment is started
  lifecycleScope.launchWhenStarted {

    // Since collect is a suspend function it needs to be called
    // from a coroutine scope
    viewModel.weatherForecast.collect {
      when (it) {
        Result.Loading -> {
          Toast.makeText(context, "Loading", Toast.LENGTH_SHORT).show()
        }
        is Result.Success -> {
          tvDegree.text = it.data.toString()
        }
        Result.Error -> {
          Toast.makeText(context, "Error", Toast.LENGTH_SHORT).show()
        }
      }
    }
  }
}

WeatherForecastDataStreamFlowFragment #L47-L75

まとめ

とはいえ、今はまだ、完全に LiveData は捨てれんよの。

👉 Kotlin で Result 
👉 Kotlin Flow vs Android LiveData - Stack Overflow 
👉 From RxJava 2 to Kotlin Flow: Threading - ProAndroidDev 

追記: ホットな Flow が登場したので以下。

👉 【MVVM】 Kotlin Flow で使える5つの利用パターン 


IDEA Intellij でファイル単体スクリプトを編集する方法

ツールなどちょっとしたスクリプトをIDEAの持つ機能を利用しながら書きたいときありません?

プロジェクト化して Git に登録とかせずに、ササッと書いて、実行するだけの場合の話。

ファイル指定でコマンドラインから起動すれば良い!!

👉 Opening Files from Command Line - Help | IntelliJ IDEA 

ここに書いてある

Tools | Create Command-line Launcher

からは今は作成できない。

👉 Toolbox App 1.11: What’s New. | JetBrains Blog 

Toolbox 設定で [Generate Shell script] で指定した場所に起動シェルスクリプトが書き出される。

Android Studio で、プロジェクトディレクトリの指定でも開ける。

ただのランチャーとしてもどうぞ。

言語の設定 (Python)

編集したいスクリプトのファイル名を rename_gopro.py とします。

1. idea bin/rename_gopro.py で IDEA を起動する。

2. [File]-[Project Structure] から Project Structure 画面を開く。

3. Platform Settings の [SDKs]-[Python 3.7] を選択する。

4. Project Settings の [Project]-[Project SDk]-[Python 3.7] を選択する。

5. 上部ツールバー内 [Add Configuration...] から Run/Debug Configuration 画面を開く。

6. [+]-[Python] で開いた画面で Script path を入力する。

7. 上部ツールバーから [Run/Debug] する。

ちなみに今回書き出された起動スクリプトは以下。

~/bin/idea


#!/bin/sh
# Generated by JetBrains Toolbox 1.16.1212 at Fri Jan 24 07:08:01 2020

open -a "/Users/maochanz/Library/Application Support/JetBrains/Toolbox/apps/IDEA-U/ch-0/193.1212.39/IntelliJ IDEA.app/Contents/MacOS/idea" "$@"

~/bin/studio


#!/bin/sh
# Generated by JetBrains Toolbox 1.16.1212 at Fri Jan 24 07:08:01 2020

open -a "/Users/maochanz/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/191.1212548/Android Studio.app/Contents/MacOS/studio" "$@"

👉 JetBrains Toolbox で Android Studio の Stable/Beta/Canary が同時に管理できる? 
👉 GoPro 分割された動画ファイルの命名規則