Androidでの新規リリースとアップデート対応
はじめに
この資料では、Androidでの新規リリースやアップデートなどで発生する(発生した)必要な対応の内容をまとめます。
アプリケーションやゲームのコンテンツに対するアップデートだけではストアでリリースできなくなります。
毎年発生する対応(APIレベル)と新しい機能対応(課金など)が必要になります。オフィシャル情報をチェックしてスケジュールに組み込みスムーズにリリースできるようにしましょう。
ターゲットはAndroidネイティブアプリ向けではなくUnityゲーム開発向けになります。[1]
関連
オフィシャル
「今後のAndroidとGoogle Playの期限」を確認すると、いつまでにどんな対応が必要を把握できるようになりました。[2]対応内容は内容により作業量が大きく変わるため、内容を確認して対応スケジュールを決める必要があります。
定期的に「今後のAndroidとGoogle Playの期限」と「Android Developers Blog」を確認して対応項目が増えていないか確認しましょう。
- 今後のAndroidとGoogle Playの期限
- Android Developers Blog(英語)
-
Android Developers Japan Blog(日本語)
- 英語版から翻訳の時間かかり更新が少し後になる
毎年発生する対応
APIレベル
最新OSのメジャーアップデート後に、ひとつ前のOSのAPIレベル対応が必須になります。
たとえば、Android 11(APIレベル30)がリリースされた後に、Android 10(APIレベル29)対応が必須になります。[3]
新しいアプリリリースおよびアプリアップデート共に8月31日に統一されました。アプリアップデートは期限延長をリクエストすることにより11/1まで延期できます。
APIレベルの設定を変えるだけでは対応できません。プライバシーやセキュリティーに対する対応が追加で発生します。
APIレベルをアップデートしないと、新しいAPI(バージョンの)のAndroid端末からアクセスできなくなります。
- Google Play アプリの対象 API レベル要件 - Play Console ヘルプ
-
Google Play の対象 API レベルの要件を満たす
- Android 10(API レベル 29)未満から移行するも合わせて確認しましょう。
27以前
2018年のAndroid 8.0(APIレベル26)から毎年APIレベルを上げる対応が必須になりました。
APIレベルを上げないで回避できていました。必須対応になり、5.0から8.0までの変更点への対応をまとめて行う必要がありました。
- Android 5.0 の変更点: bindService() での暗黙的インテントのサポート終了など
- Android 6.0 の変更点: 実行時パーミッションなど
- Android 7.0 の変更点: 保護された接続において、デフォルトでユーザーが追加したCAを信頼しないなど
- Android 8.0 の変更点: ユーザーが明示的に同意しないと、アプリはユーザー アカウントにアクセスできないなど
また、16:9よりアスペクト比が縦長の18:9などの対応が必要になりました。 (画面サポートの制限の宣言)
APIレベル27はAndroid 8.1のため対応の必要はありませんでした。
参考資料
28対応
Android 9.0(APIレベル28)では、ターゲットAPIレベルを変更なしでも動作が変わるものと、変更すると影響する変更が出てきます。
プライバシーやセキュリティー関連のアクセスが厳格になり始めました。
TLS(HTTPS)のみ通信許可がデフォルトになりました。
29対応
Android 10(APIレベル29)では、GPSや外部ストレージアクセスなどプライバーシー関連対応が増えました。
30対応
Android 11(APIレベル30)では、位置情報、マイク、カメラへの一時的なアクセス権を1回だけアクセス許可や許可のオートリセット。位置情報関係のプライバーシー対応が強化されました。
また、APK署名スキームv2が必須になります。昔から運用しているものだとv1のみの可能性があります。最新のv3まで合わせて対応してしまった方が良いかもしれません。
31対応
Android 12(APIレベル31)では、引き続きプライバシーやセキュリティーに関する部分の対応強化が行われる。
32対応
Android 12L2(APIレベル32)という、大画面のタブレットや折りたたみ式デバイスの対応が追加された。
33対応
Android 13(APIレベル33)では、フォアグラウンドタスクマネージャー、バッテリー リソース運用、通知に関する実行時の権限が大きな変更点になる。
34対応
Android 14(APIレベル34)では、プラットフォームのコア機能アップデートや、セキュリティ・プライバシーにかかわる変更がメイン。
- Android Developers Japan Blog: Android 14 デベロッパー プレビュー 1 リリース : 変更点と新機能のまとめ
- Android 14 | Android Developers
- Android14の重要そうな差分まとめ - Qiita
- 写真や動画選択をPhotoPickerに対応する
- UnityでAndroid13から14へアップデートする際に起きたこととその解決法 #GooglePlayConsole - Qiita
35対応
Android 15(APIレベル35)、メモリの16KBページサイズサポート、ANGLEなどの変更がある。
-
Android 15 | Android Developers
-
動作の変更点: すべてのアプリ | Android Developers
- アプリでネイティブ コードを使用している場合は、16KBデバイスをサポートするようにアプリを再ビルドする必要がある。
- Android 15 のフォアグラウンド サービス タイプの変更 | Android Developers
- 非推奨のサービスと機能 | Android Developers
- Android 15 での非 SDK インターフェースの制限の更新 | Android Developers
-
動作の変更点: すべてのアプリ | Android Developers
-
Android Developers Blog: The Second Beta of Android 15
- Vulkan上でOpenGL ESを実行するためのオプション レイヤーとしてANGLEが搭載される。今後のアップデートではVulkanのみ更新されるようになる。OpenGL ESサポートはANGLEを通じてのみになる。
セキュリティー対策
root化対策、リバースエンジニアリング対策、メモリ改変対策、通信内容改変対策などのセキュリティー対策により新しいOSで動作しなくなることがないか確認する。
新しい機能対応
課金
毎年、Google Play Billing Libraryはアップデートする。
リリース後のサポート期間は2年と設定されています。
アップデートスケジュールに組み込み無理のないタイミングで対応していく必要があります。
-
Android Developers Japan Blog: Google Play Billing Library バージョン 3 のご紹介
- Googleは年1回のアップグレードをオススメしていますが、各メジャー リリースに対しては2年間のサポートを提供します。
- Google Play Billing Library リリースノート | Google Play の課金システム | Android Developers
2021年の新規は8月、既存は11月からBilling Libraryバージョン3対応必須
2021年8月2日より新規リリースのアプリでは最新のBilling Libraryバージョン3への対応が必要になります。2021年11月1日までにすべてのアプリが必須になります。[4]
In-app Billingの時もVersion3へのアップデートが必須対応になり。今後も新たな課金モジュールが出てきたところで入れ替えをする必要が出てくる可能性があります。
2022年の新規は8月、既存は11月からBilling Libraryバージョン4対応必須
注: 2022年8月2日以降、すべての新規アプリではBilling Libraryバージョン4以降を使用する必要があります。また既存のアプリのアップデートについては、2022年11月1日よりBilling Libraryバージョン4以降の使用が必須となります。
Google Play Billing Library のバージョンのサポート終了 | Google Play の課金システム | Android Developers
2023年の新規は8月、既存は11月からBilling Libraryバージョン5対応必須
- 2023年8月2日以降、すべての新規アプリではBilling Libraryバージョン5以降を使用する必要があります。また既存のアプリのアップデートについては、2023年11月1日よりBilling Libraryバージョン5以降の使用が必須となります。詳細。
- Android 14以降をターゲットとするアプリの場合は、PBL 5.2.1またはPBL 6.0.1以降に更新する必要があります。
Google Play Billing Library のバージョンのサポート終了 | Google Play の課金システム | Android Developers
-
UnityIAP Android におけるコンビニ決済への対応方法 - かばちんのエンジニアブログ
- Google Play Billing Library 3.0 からコンビニ決済への対応が必須
-
課金をテストする|株式会社グリモア
- テスト課金設定方法
PUSH通知
Android Cloud to Device Messaging (C2DM) → Google Cloud Messaging (GCM) → Firebase Cloud Messaging(FCM)とシステムが入れ替わっています。
FCM対応が2018年なので直近での変更はないと思います。
- Migrate a GCM Client App for Android to Firebase Cloud Messaging
- おじさんのための2018年スマホPUSH通知事情 - Qiita
- GCMはGCM 3.0を経てFCMへ (Firebase) - Qiita
Android System WebView
WebViewを使用するとクラッシュする問題がありました。修正はGoogleが新しいバージョンをリリースすることを待つ必要がありました。
必ず起動時などにWebViewを開くような実装だとアプリを使用できなくなるため。WebViewを開く前にスキップできる仕組みを入れるなど回避できる仕組みを作っておくと安全です。
アプリの権限を自動リセット
GooglePlay開発者サービスを搭載し、Android 6.0(APIレベル23)以降を実行しているデバイスでアプリの権限を自動リセットが自動的に有効化される。
ストレージアクセス
内部・外部ストレージへアクセスするための方法が、バージョンによってパーミッション取得や挙動変更が行われている。
ACCESSテックブック2の「第3章Androidのファイルストレージに関する仕様の整理」にAndroid4.4から12までの情報がまとまっている。
PC版 Google Play Games
Google Play Gamesはスマホ版のゲームをWindows上で実行するための仕組みです。要件を満たし、審査プロセスを経ることでリリースできます。
- PC 版 Google Play Games(ベータ)のインストールと設定 - Google Play Games on PC ヘルプ
- PC 版 Google Play Games(ベータ)の利用条件を確認する - Google Play Games on PC ヘルプ
- PC 版 Google Play Games | Android game development | Android Developers
Google Play Console
サイト
Play Consoleのデザインが変更されます。機能は残っているが、UIの配置が変わり、どこをどのように操作すれば良いかがわからなくなったりします。
アプリケーションアップデートの間に新しいページで必要な機能がどこにあるか確認しておきましょう。
審査
2019年の8月ごろ?からGoogleの審査が強化されました。アプリを送信後に審査期間が数時間から最長で7日程度かります。(場合によってはもっと長い)
そのため、スケジュールに審査期間を含めて決める必要があります。
ポリシー、ガイドラインを確認して違反がないことをチェックしましょう。
- Google Play のポリシーを理解して適用し、信頼できるアプリを作成する
- 審査のためにアプリを準備する - Play Console ヘルプ
- 管理対象の公開機能を使ってアプリの変更を公開するタイミングを管理する - Play Console ヘルプ
- Androidアプリの審査が長くなった件 - Qiita
位置情報
バックグラウンドでの位置情報の取得は審査が厳しくなっています。対応が必要な内容を把握しておかないとリリースができなくなります。
プライバシー表記
iOSアプリのようにストアへプライバシー関連の表記が追加されます。
2022年2月からGooglePlayに表示されるようになります。
2022年4月から対応が必須になります。
- Android Developers Japan Blog: ユーザーのプライバシーとセキュリティを向上するため、Google Play Console にデータ セーフティ 機能をリリースします
-
Google Play safety requirements for Unity Gaming Services products
- GooglePlayにアプリを提出する際に「どんなデータを収集するのか」について申告する必要があるんですが、Unityのサービス(Unity AnalyticsやUnity Adsなど)を使ってるときにどう回答したらいいの?という疑問に答えるドキュメントが公開されました。(Twitter)
アイコン
新しい使用のアイコンを設定する必要があります。
メタデータ
メタデータのルールが更新されます。導入開始日は2021年中に発表される予定です。
「アプリのタイトルの長さを30文字以内に制限する」、「アイコンやタイトル、デベロッパー名に、Google Playストアでの実績を示唆するキーワードや宣伝を含めることを禁止する」、「ユーザーに誤解を与える可能性があるグラフィック要素をアプリアイコンから排除する」などメタデータポリシーが変わります。
「プレビュー アセットはアプリやゲームを的確に表しているか?」、「プレビュー アセットはユーザーがインストールするかどうか決める際に役立つ十分な情報を提供しているか?」、「プレビュー アセットが適切にPlayストアの地域に合わせて翻訳やローカライズがされており、読みやすくなっているか?」などストアに掲載するプレビュー アセットのガイドラインが変わります。
64bit対応
2019年8月1日以降から64ビットアーキテクチャのサポートが必須になっています。
拡張ファイル
2021年8月月以降にリリースするアプリは、Android App Bundle(AAB)が必須になります。OBB(APK 拡張ファイル)を使用できなくなり、Play Asset Deliveryを使用する必要があります。
まだ、すでにリリースされているアプリのアップデートでは必須となっていません。今後対応が必須になる可能性はあります。事前にPlay Asset Deliveryに関して調査して準備しておきましょう。
OBBではストアインストール時にで2GB×2個のファイルで計4GB使用できました。[5]Play Asset Deliveryでは計2GBは変わりませんが、ストアインストール時に1GB、インストール後にダウンロード512MB、アプリ実行中512MBと取得タイミングや配置などが変わります。
そのため、新たに設計と実装を変更する必要が出てきます。
質の高い広告エクスペリエンス
- 一般にユーザーがなんらかの操作を選択したときに突然表示される、あらゆるフォーマット(動画、GIF、静止画像など)の全画面インタースティシャル広告は認められません。
- ゲームをプレイ中、レベルの冒頭やコンテンツ セグメントの開始中に表示される広告は認められません。
- アプリの読み込み画面(スプラッシュ画面)の前に表示される全画面動画インタースティシャル広告は認められません。
- 15秒経過後に閉じることができない全画面インタースティシャル広告は認められません。オプトインの全画面インタースティシャル、またはユーザーのアクションを妨げない全画面インタースティシャル(ゲームアプリのスコア画面の後に表示される場合など)は、15 秒以上表示することが可能です。
このポリシーは、ユーザーが明示的にオプトインするリワード広告(例: 広告を視聴したユーザーには特定のゲーム内機能やコンテンツを提供することをデベロッパーが明示している広告)には適用されません。また、通常のアプリの使用やゲームのプレイを妨げない収益化要素や広告(動画コンテンツに組み込まれた広告、全画面表示ではないバナー広告など)にも適用されません。
アプリケーションの移行
別デベロッパーへアプリケーションの移行することが可能です。
アプリケーションの所有権を移行することができ情報を残すことが可能です。[6]
アプリアカウントの削除
下記の要件を満たす必要がある。
- アプリ アカウントと関連データを削除するアプリ内パスをユーザーに提供する。
- ユーザーがアプリ アカウントの削除と関連データの削除をリクエストできるウェブリンクリソースを提供する。また、他のデータも削除する選択肢を表示できる。
2024年5月31日以降にこのポリシーに準拠していないアプリは、将来的に違反に対する追加措置(Google Playからのアプリのストア掲載情報の削除など)の対象となる可能性がある。
詳細は「Google Play のアプリ アカウントの削除要件について - Play Console ヘルプ」を参照してください。
デベロッパーの本人確認とお支払い情報の確認
デベロッパーの本人確認とお支払い情報の確認を行います。
組織用として新規にGoogle Play Consoleにてデベロッパー アカウントを作成する場合、D-U-N-Sナンバーの提供が必須になりました。
新規Google Play Consoleデベロッパー アカウントの作成要件は、2023年8月31日より始まります。
2023 年 10 月には、既存アカウントの更新や検証の方法について、既存のデベロッパーの皆さんに詳しくお知らせする予定です。
Android Developers Japan Blog: Google Play の信頼性と透明性を向上させるための新たなポリシー アップデート
EU ユーザーの同意ポリシー
EUユーザーの同意ポリシーに基づき、Cookieなどのローカル ストレージを使用すること、および広告のパーソナライズを目的として個人データを収集、共有、使用することについて、それらのユーザーの同意を得る必要がある。
プライバシー サンドボックス
広告IDなど複数アプリ共通識別子を使用することなくユーザーのプライバシー保護をする仕組み。
-
ネイティブアプリでもそこまで大きく変わりませんが ↩︎
-
昔はGoogle I/OやDevelopers Blogを細かくチェックしないといけなかった。 ↩︎
-
当初はAIDLやPlay Billing Library 1.xは2021年5月1日までに、Play Billing Library 2の対応必須だった。Google Play Billing: Required updates and new functionality (Android Dev Summit '19) - YouTube(Play Billing Library 2.x Mandatory by May 2021 : androiddevより) ↩︎
-
Unityでは標準で2GBx1個のみサポート。手を加えると2個使用できた ↩︎
-
何が移行できるか、移行できないかはよく確認しましょう ↩︎
Discussion