はじめに

ついに 8/22 日、 Android O が正式にリリースされました。これから少しずつ日本向けの端末にも落ちてくる頃かと思います。

そういう時に気になることと言えば、今作成している or 公開しているアプリへの影響ですよね。
今回はそういうアプリへの影響が大きそうなものについて簡単に説明できればと思います。

バックグラウンド実行制限

まずこのバックグラウンド実行制限には 2 つ範囲があり、それが以下のものになります。

  • すべての API レベルを対象としたアプリ
  • O を対象とするアプリ

これらに関して順に話をしていきたいと思います。

すべての API レベルを対象としたアプリ

O へのアップデートによって変更になる動作は、フォアグラウンドに対象となるアプリのアクティビティやサービスが存在しない場合、そのアプリが保持している wakelock を開放するということです。
これにより何に影響が出るかというと、例えば定期的にアプリが立ち上がりそこで通信などを行うようなアプリの場合、それが上手く動作しない可能性がありうるということです。

この変更に関しては、題にすべてのとあるように O に向けてビルドの設定等を変更していないアプリに関しても影響があります。

O を対象とするアプリ

この項目の変更点は、アプリがバックグラウンドサービスにアクセスできる頻度と時間に制限が設定されたようです。 これによる影響は、頻繁にサービスへアクセスしているアプリに関してその頻度が落ちるため、データの更新間隔が少なくなるため整合性のチェックなどを厳密にやる必要が出てくるのではないかと思います。

また、大半の暗黙的なブロードキャストがアプリでマニフェストを使用して登録することができなくなるようです。

これらの変更に関しては、対象ビルドバージョンを O にした場合に影響をおよぼすものになります。
そのため、既存ですでに公開しているアプリに関しては影響が出ないものになります。

Android ID

Android ID への変更点は、ビルド設定に関わらずすべてのアプリケーションに影響を及ぼします。

元々、 Android ID はユーザ毎に一つの ID を持っているという状況でした。 しかし、 O からはアプリ毎に一つの ID を持つようになります。

これにより、2 つのアプリが同様の ID を持つことはなくなるので、この ID を使用してそれらのアプリを関係づけることはでき無くなるので注意しましょう。 この ID はアプリの署名キーとパッケージ名が同じである限りアンインストール後再インストールを行っても変わることはありません。

また、もしすでに N 以前から利用しているアプリケーションで Android ID を利用していた場合、その時に O へバージョンアップした時には Android ID は元の N 以前のときに使用していた ID と同様になります。 この時、アプリをアンインストールし再インストールした場合にのみ O の仕様にあったアプリ固有の Android ID に変更されます。

これらの変更に関して、例えばこの ID を端末登録等に使用していた場合、上記条件により ID が変更になってしまうかもしれませんので注意しましょう。

ネイティブライブラリ

Android O を対象とするアプリでは、ネイティブライブラリにおいて書き込みと実行の両方が可能なロードセグメントが含まれていた場合、それはロードされなくなります。 これにより不正なロードセグメントを含むライブラリを使用していた場合、アプリケーションが正常に動作しなくなるので確認が必要になります。

基本的に自社開発しているライブラリに関してはこれはあまり関係ない可能性が高いのですが、利用している外部ライブラリがネイティブライブラリを利用していた場合、アプリの動作確認を入念にしておく必要があるということを覚えておいてください。

おわりに

今回ここで説明した部分は、実際の変更点のほんの一部に過ぎません。
ここ以外にも色々と変更点がありますので一度 google の公式ページを確認してください。

Android の新しい OS が発表されてから、日本で積極的に利用が可能になるまでいつも大体半年くらいかかります。 その為十分に準備の時間がありますので今のうちにアプリの動作確認や、仕様の確認を進めておくと良いと思います。

参考サイト

Google Developer 公式