質問: OS : Windows 10 Home 64bit JDK : 1.8.0_261 IDE : Android Studio 4.1 上記の環境で新規プロジェクトを作成しようとしますと、「Your app will run on approximatery 60.8% of device」のような表示が出まして、これは現在の私の環境でAndroidアプリを作成しても、世のAndroidデバイスの6割ぐらいでしか動作しないものしか作れませんよという解釈で受け取ってよろしいのでしょうか。 あるいは、Kotlinで開発しようとしているのですが、JDKをもっと最新のものにするとか、環境構築に必要なものたちのバージョンのバランスが取れていないせいで、最新技術を100%利用することはできなませんよみたいなことを示しているのでしょうか。 ちなみにアプリをインストールする対象の実機はAndroidバージョンが8.0.0でして、Studio側ではAPIレベル26で開発しようとしています。 警告を無視してプロジェクトを作成し、実機に繋いでちゃんと「Hello, world」は出ているのですが、このまま使用していても問題ありませんか。 カメラ機能などは入れるつもりはありません。 「どんなアプリをどのくらいのレベルの機能を使って、どんな端末で実行したいのか」で色々と設定すべき内容は変わってくるとは思うのですが、ひとまず前述のあのメッセージの意味が気になります。 かなり久しぶりに作るので、以前家計簿アプリみたいな野良アプリを作ったときは「こんなこと言われてたっけな〜?」みたいな感覚になり、何となく気持ち悪いため質問させて頂きました。
回答: おそらく「minSdkVersion」を指定する場所で出ているメッセージだと思いますが、もし`minSdkVersion`が26に指定されていれば、android8.0より古いOSの端末にはインストールできません。 ですので、「(Android8.0以上の端末のシェアはおおよそ60.8%なので)Your app will run on approximatery 60.8% of device」と言っているのだと思います。 androidのリファレンスを見ると、クラスやメソッドなどの説明の右上に「Added in API level *n*」と書かれているものがあります。 このクラス・メソッド等を使用した場合、「*n*」より低いバージョンのOSで実行すると、例外が発生します。 ですので、使用しているクラス・メソッド等の「*n*」以上のバージョンを`minSdkVersion`に指定します。 かといって、あまりむやみに新しいと上記のようにシェアが少なくなりますので、そこは開発者の検討次第です。 * 一例: Androidアプリ の minSdkVersion を21にした話 ちなみに、`compileSdkVersion`(ビルド時に使用するSDKPlatformsのバージョン)、`targetSdkVersion`(メインの動作環境とするOSのバージョン)はまた別の話です。