LoginSignup
3
3

More than 3 years have passed since last update.

Android Q・GoogleI/O発表でアプリに影響されると思われるところ

Last updated at Posted at 2019-07-01

Androidエンジニアの備えが必要そうなところをが話題です。

Android Q Betaが3月だったのに今更ですがね!

セキュリティー

Scoped storage

https://developer.android.com/preview/privacy/scoped-storage
アプリターゲットAPIがAndroid Qであればダウンロード、または各メディアフォルダー(音楽、写真など)を接近するための新規パーミッション、APIが追加されます。それ以外の共有フォルダーには接近不可能になります。アプリは独立されたストレージを使わないとダメですね。

More user control over location permissions

https://developer.android.com/preview/privacy/device-location
Android Qの環境で動くデバイスで、アプリがフォアグラウンド状態の時だけ位置情報を確認できるパーミッションが追加されます。バックグラウンドでも位置情報を確認したい場合はユーザーに許可を求めるUXが必要になります。

Background activity starts

https://developer.android.com/preview/privacy/background-activity-starts
Android Qの環境で動くデバイスで、バックグランド状態のアプリは新しいActivityの生成ができません。これはフォアグラウンドサービスでも同じです。
必ずバックグラウンドActivityを生成する場合、FullScreenIntentNotificationを使えばいいです。

Non-resettable hardware identifiers

https://developer.android.com/preview/privacy/data-identifiers#device-identifiers
Android Qはユーザーがリセットできない識別子を提供しません。Android Q環境で識別子を確認する場合nullunknownが取れます。
対案としては広告ID、InstanceID、SSAIDがあります。

Permission for wireless scanning

https://developer.android.com/preview/privacy/camera-connectivity#fine-location-telephony-wifi-bt
アプリターゲットAPIがAndroid Qであれば、Wi-Fi、Bluetoothなどユーザーの位置を確認するAPIを使うにはACCESS_FINE_LOCATIONパーミッションが必要になります。

ダークモード

https://developer.android.com/preview/features/darktheme
Android Qのシステム設定でDark themeを選択すれば、DayNight Styleで作られたアプリも自動的にダークモードになります。要するに、Android Qのダークモード設定に合わせたいのであればDayNight Style(またはDayNight継承Style)を使う必要があります。

強制・推奨アップデート

https://developer.android.com/guide/app-bundle/in-app-updates
API21以上、Play Core library1.5.0以上ならばサーポートする強制・推奨アップデート機能です。もうバージョンチェックのために別途のシステムが必要なく、アプリ実装で終わること人なりました!888888
App Bundleはアップデートサイズに150MBの制限があって、obbファイルみたいなAPK拡張ファイルは対応しません。

ジェスチャー導入

https://developer.android.com/preview/features/gesturalnav
画面スワイプによって以前の画面に行ったり、ホームに戻ったり、マルチタスクをしたりできます。それで下のボタンがなくなるのではありません。ユーザーはOSの設定でジェスチャー、2ボタン方式、3ボタン方式を切り替えることができます。
そしてもしアプリに必要があって画面端っこからスワイプを定義したら以下のように回避が必要です。

    //rectはジェスチャーの動きから除外する領域
    var exclusionRects = listOf(rect1, rect2, rect3)

    fun onLayout(
            changedCanvas: Boolean, left: Int, top: Int, right: Int, bottom: Int) {
      // Update rect bounds and the exclusionRects list
      setSystemGestureExclusionRects(exclusionRects)
    }

    fun onDraw(canvas: Canvas) {
      // Update rect bounds and the exclusionRects list
      setSystemGestureExclusionRects(exclusionRects)
    }

そしてホーム画面、クィックスウィッチのジェスチャーである下端っこからのジェスチャーは衝突対応ができなく、Window.setSystemGestureExclusionRects()を使って問題をちょっと緩和するくらいらしい。

その他

Bubble

https://developer.android.com/preview/features/bubbles
Android QはSYSTEM_ALERT_WINDOWの許可を出しません。対案としてBubblesというAPIが追加されました。

Android Studio 3.5

Live Class Generationが可能になり、rebuildしなくてもData bindingした変数が確認できます。
そしてdata bindingのrefactoringもサーポートし、
ついにdata bindingのcompile errorが確認できます。

JetPack、AndroidX、そしてKotlin

CameraXのJetPack参加、7年ぶりのViewPagerのアップデートであるViewPager2アルファバージョンはAndroidXが必要です。既存のアプリはそろそろJetPackとAndroidXにマイグレーションする準備が必要があるのかな。
そして今年もKotlin推しは相変わらず。Kotlin関連ライブラリはKTXだけではなく、APIデザインもKotlinにすると発表しました。

3
3
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
3
3