LoginSignup
4
1

More than 3 years have passed since last update.

【Androidアプリ開発者向け】Important reminder about Android targetSdkVersion requirement について調べてみた

Last updated at Posted at 2018-09-12

Googleから送られてきたメール

2011年~2013年ごろにAndroidアプリをいくつか作っていて、2015年1月のアップデートを最後に放置していたのですが、先日(2018年8月2日)、Google Play Teamからこんなメールが送られてきました。

Hello Google Play Developer,

This is a reminder that starting November 1, 2018, updates to apps and games on Google Play will be required to target Android Oreo (API level 26) or higher. After this date, the Play Console will prevent you from submitting new APKs with a targetSdkVersion less than 26.

Configuring your app to target a recent API level ensures that users benefit from significant security and performance improvements, while still allowing your app to run on older Android versions (down to the minSdkVersion).

Action required

Please ensure that your apps are configured to target at least Android 8.0 (API level 26) by November 1, 2018. For technical advice on how to change your app's target API level to meet these requirements, refer to the migration guide.

Affected apps

The apps included below have one or more APKs—in production or testing tracks—that aren't currently targeting API level 26 or higher. Apps are listed with the maximum version code and corresponding targetSdkVersion. If you have more than 20 apps that could be affected in your account, please check the Play Console for a full list.

foo.bals2  6  4
foo.bar  19  4
foo.bar.atm2  5  9
foo.bar.soudan  7  9

英語だったのでまともに読んでなかったのですが、パッケージ名も名指しでAffected appsと書いているので、公開中のアプリにも影響があるのではないかと思って調べてみました。

数字の意味するところは?

foo.bar.atm2  5  9

左から「パッケージ名」「versionCodeの値」「targetSdkVersionの値」になります。
versionCodeはアプリのアップデートごとに整数で増やしていくもので、アプリごとに異なるのであまり関係ないです。
今回のメールは「targetSdkVersion」の扱いが2018年11月1日から変わると言っています。

targetSdkVersionって?

自分のアプリのコードがどうなってたか見てみました。

AndroidManifest.xml
    <uses-sdk
        android:minSdkVersion="9"/>
build.gradle
    defaultConfig {
        minSdkVersion 9
        targetSdkVersion 9
    }

AndroidManifest.xmlでは省略してましたが、build.gradleで勝手に(?)補完されてるようです。
公式ドキュメントによると省略している場合はminSdkVersionに合わせられるとのこと。

android:targetSdkVersion
アプリのターゲットとなる API レベルを指定する整数。設定しない場合、既定値は minSdkVersion で指定した値になります。

minSdkVersionっていうのは「これ以下のバージョンのAndroid端末にはインストールできないよ!」っていうのを指定するパラメータです。
「9」というのは「Android 2.3」を示してます。
まあ、いまどきAndroid 2.3以下を使っている人はほぼいないのでほとんどの機種で使えると考えられます。

targetSdkVersionっていうのは少しややこしいですが、「これより上のバージョンのAndroid端末を使っていても互換性を保ってね!」っていうのを指定するパラメータです。
ここでは「APIレベル9」なので「Android 2.3」の互換性を保ってほしいと言っています。
最近だと、Android 7(APIレベル24)やAndroid 8(APIレベル26)を使っている人が多いと思いますが、それでも「Android 2.3互換で動かしてね!」ってことです。

2018年11月1日から変わること

「targetSdkVersionを26以上(Android 8以上)にしないとダメだよ!」っていうルールになります。
これを守ってないアプリは、アップデートを公開しようとした際にGoogle Playでハネられると考えられます。

自分のアプリを次回アップデートする際は、targetSdkVersionを9(Android 2.3)から26以上(Android 8以上)に変更しなければなりません。見た目や使える機能も変わるのでいろいろとコードの修正が必要そうです。

既に公開中のアプリに影響あるの?

これが自分が一番知りたかったことです。日本語のGoogleの公式ブログをみてみます。

2018 年 11 月: 既存のアプリのアップデートで、ターゲット API レベル 26 以降が必須になります。
この変更はアップデートを行っていない既存のアプリには影響しません。また、デベロッパーが任意の minSdkVersion を使用できる点は変わらないので、古いバージョンの Android 向けにアプリをビルドできる点も変わりません。

「アップデートしないアプリは公開停止しちゃうよ!」とは言っていないので、アップデートせずに放置する分には引き続き公開されたままになります。
これでちょっと安心しました。

さいごに

アップデートを放置している開発者にとって今回のアナウンスはヒヤヒヤしました。
Androidのアプリ開発環境周りも数年前からガラりと変わったようなので、そろそろ技術キャッチアップすべく開発再開も考えてみたいと思います。

参考URL

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1