Upgrade to Pro — share decks privately, control downloads, hide ads and more …

今のうちからできる_Android_14準備

verno3632
March 07, 2023
750

 今のうちからできる_Android_14準備

verno3632

March 07, 2023
Tweet

Transcript

  1. 2 自己紹介 • ピクシブ株式会社 / pixiv • Android • 趣味

    : レンタカー借りてドライブ (ペーパー10 年目) verno3632
  2. 7 新OSの端末で既存アプリが動くようにする • targetSdkVersionは変えない • Android 14 で動くすべてのアプリに影響 の箇所を考慮 ◦

    https://developer.android.com/about/versions/14/behavior-changes-all • OSが最終リリースするまでにやっておくべきこと
  3. 8 新OS向けにビルドする • targetSdkVersionを変える • Android 14 をターゲットとするアプリに影響 の箇所を考慮 ◦

    https://developer.android.com/about/versions/14/behavior-changes-14 • OSが最終リリース後対応完了し次第アプリをリリースする
  4. 10 例: Android 13 通知権限 • アプリが通知を送信するのに、ユーザーによる権限許可が必要になった • 最終リリース ◦

    以前からアプリを使っていてAndroid 13にアップデートすると権限が自動的に付与さ れる仕様 • Developer Preview ◦ 一時的な通知権限が付与される ◦ その間はユーザーによる権限許可を求めるダイアログが出続ける
  5. 13 Developer Preview で動かしてみる • Android 14端末を用意 ◦ PixelにAndroid 14をダウンロードする

    ◦ エミュレータを使う • 既存のアプリをインストール・動作確認 • 新OSの最終リリースまで仕様が確定しない
  6. 21 SCHEDULE_EXACT_ALARM権限: 対応 • 実は正確な時刻は必要ない場合 ◦ WorkManager ▪ アプリのアップデートやログのアップデート等のバックグラウンド処理 ◦

    .set() .setAndAllowWhileIdle() .setWindow() といったメソッド ▪ おおよその時間でアラームを出す・アクションを起こす
  7. 22 SCHEDULE_EXACT_ALARM権限: 対応 • アラームやカレンダーアプリなど典型的なユースケースの場合 ◦ USE_EXACT_ALARM権限を使う ▪ Android 13から導入

    ▪ ユーザーが設定する必要がない ◦ Play Storeでの審査が存在する ▪ ユーザー向けのコア機能で利用していると認められる
  8. 25 Android 14をターゲットとするアプリに影響 • Foreground Service に typeが必要 • 暗黙的・pending

    intentに対する制限 • コンテキスト登録されたブロードキャストレシーバーに exportが必要 • Dynamic Code Loadingで読むファイルを読み取り専用に
  9. 26 Android 14をターゲットとするアプリに影響 • Foreground Service に typeが必要 • 暗黙的・pending

    intentに対する制限 • コンテキスト登録されたブロードキャストレシーバーに exportが必要 • Dynamic Code Loadingで読むファイルを読み取り専用に
  10. 28 Foreground Service Type: typeを指定 • Android 10で定義 ◦ dataSync,

    connectedDevice, location, mediaPlayback, mediaProjection • Android 11で定義 ◦ camera, microphone
  11. 29 Foreground Service Type: WorkManagerを 使う • typeに当てはまるものがない場合、可能なら WorkManagerに移行 •

    それ以外はAndroid 14で導入されるものに移行 ◦ 新type ▪ fileManagement, health, phoneCall, remoteMessaging, shortService ◦ user-initiated data transfer jobs ▪ 長時間かかるユーザー初期化時のデータダウンロードなどに使える ▪ JobInfoの設定が増える
  12. 35 まとめ • Android 14端末を用意しなくてもできる準備がある ◦ SCHEDULE_EXACT_ALARMをやめる ◦ ForegroundService にtypeをつける

    ◦ exporedにしたコンポーネントにのみ暗黙的な intentを投げる ◦ コンテキスト登録されたブロードキャストレシーバーに exportをつける ◦ Dynamic Code Loadingをやめる/ReadOnlyにする