2020年のAndroidアプリ開発を振り返ろう

2020 年の Android 開発に関するあれこれを覚えている範囲でまとめてみようと思います。
(間違っている箇所やこれもあったよというのがあればコメントお願いします :pray: )

## Kotlin と Coroutines

#### Kotlin 1.4 
パフォーマンスの改善や型推論のアルゴリズムの変更や interface の SAM 変換などが盛り込まれています。

- https://github.com/JetBrains/kotlin/releases/tag/v1.4.0
- https://blog.jetbrains.com/kotlin/2020/08/kotlin-1-4-released-with-a-focus-on-quality-and-performance/

#### Coroutines 1.4
`StateFlow` と `SharedFlow` が登場しました。

- https://github.com/Kotlin/kotlinx.coroutines/releases/tag/1.4.0
- https://blog.jetbrains.com/kotlin/2020/10/kotlinx-coroutines-1-4-0-introducing-stateflow-and-sharedflow/

#### kotlinx.serialization 1.0
stable になりました。

- https://blog.jetbrains.com/kotlin/2020/10/kotlinx-serialization-1-0-released/
- https://github.com/Kotlin/kotlinx.serialization/releases/tag/v1.0.0

#### Kotlin Android Extensions の Deprecated
Kotlin Plugin 1.4.20 で Kotlin Android Extensions が Deprecated になり、ViewBinding への移行と `kotlin-parcelize` のプラグインへの置き換えがアナウンスされています。

- https://github.com/JetBrains/kotlin/releases/tag/v1.4.20
- https://android-developers.googleblog.com/2020/11/the-future-of-kotlin-android-extensions.html

## SDK & IDE
#### Android Studio 3.6
このバージョンから ViewBinding が使えるようになりました。
ResourceManager もここで登場しています。

- https://developer.android.com/studio/releases/#3-6-0

#### Android Studio 4.0
待ちに待った MotionEditor や Layout Validation 、Build Analyzer の登場、LayoutInspector の改善など開発環境の大きな改善がされました。

- https://developer.android.com/studio/releases/#4-0-0

#### Android Studio 4.1
Database Inspector や Dagger の依存関係を簡単に確認できるツールが使えるようになったり、 エミュレータが Android Studio 内で動かせるようになりました。

- https://developer.android.com/studio/releases/#4-1-0

#### Android Studio 4.2 
Instrumentation test の改善や System Trace の改善が含まれており、2020/12/25 現在 Beta2 となっています。

- https://developer.android.com/studio/preview/features#4.2


#### Android Studio Arctic Fox 
今後バージョンがこれまでとは異なり、IntelliJ IDEA と同じような年ベースのバージョンになったり、動物の名前のコードネームがつけられるようになります。
このバージョンでは Wireless ADB がしやすくなる機能が実装される予定です。

- https://android-developers.googleblog.com/2020/12/announcing-android-studio-arctic-fox.html
- https://developer.android.com/studio/preview/features#2020.3.1

#### Android 11
WindowInset 周りが改善されて IME のアニメーションが実装できるようになったり、Scoped storage の対応が必須になりました。
また Bubbles も正式にリリースされたのも Android 11 からです。
`AsyncTask` もここで deprecated になりましたね。

- https://developer.android.com/about/versions/11
- https://android-developers.googleblog.com/2020/09/android11-final-release.html

## Jetpack 関連

#### Activity Result の登場と onActivityResult の deprecated
[Activity 1.2.0-alpha2](https://developer.android.com/jetpack/androidx/releases/activity?hl=en#1.2.0-alpha02) から ActivityResult が登場し、それに合わせて onActivityResult が deprecated になる予定です。

- https://developer.android.com/training/basics/intents/result

#### RecyclerView に ConcatAdapter の登場
[RecyclerView 1.2.0-alpha02](https://developer.android.com/jetpack/androidx/releases/recyclerview#recyclerview-1.2.0-alpha02) で複数の Adapter を扱える [ConcatAdapter](https://developer.android.com/reference/androidx/recyclerview/widget/ConcatAdapter) が追加されました。

#### ConstraintLayout 2.0.0 の stable と 2.1.0 alpha の登場
MotionLayout や Flow が追加された ConstraintLayout 2.0.0 がようやく stable になりました。
`MotionLayout` に Carousel が追加された 2.1.0 の alpha も開発されています。
また、ConstraintLayout のソースコードが GitHub へ移行されています。

- https://androidstudio.googleblog.com/2020/08/constraintlayout-200.html
- https://androidstudio.googleblog.com/2020/11/constraintlayout-210-alpha-1.html
- https://github.com/AndroidX/constraintlayout

#### Jetpack DataStore の登場
SharedPreference の置き換えを目的とした DataStore が登場しました。

- https://android-developers.googleblog.com/2020/09/prefer-storing-data-with-jetpack.html


#### App Startup の登場
単一の `ContentProvider` を共有することで個別に初期化することがなくなりアプリの起動速度を改善できるライブラリが登場しました。

- https://developer.android.com/topic/libraries/app-startup

#### Paging3
coroutines に対応した Paging3 が開発中です。
Paging2 で使いにくかった部分が改善されています。

- https://developer.android.com/topic/libraries/architecture/paging/v3-overview


#### Jetpack Compose の alpha がリリース
来年には stable になると言われていますが、今年に alpha になりました。
alpha になった今でも破壊的変更は行われていたりします。

- https://developer.android.com/jetpack/compose
- https://android-developers.googleblog.com/2020/08/announcing-jetpack-compose-alpha.html

## Dagger

#### Hilt の alpha がリリース
Android Dev Summit 2019 で Dagger の改善が発表され、Hilt が誕生し alpha がリリースされました。
それに合わせて AndroidX の [Hilt サポート](https://developer.android.com/jetpack/androidx/releases/hilt)も出てきています。

- https://dagger.dev/hilt/
- https://developer.android.com/training/dependency-injection/hilt-android
 

## Material Component
### 1.1.0
MaterialTheming や DarkTheme がサポートされました。
この更新でデザインが大きく崩れたという話がよく出てきましたね。

- https://github.com/material-components/material-components-android/releases/tag/1.1.0

### 1.2.0
Motion system の追加やいくつかの Component の追加などなどがされました。 

- https://github.com/material-components/material-components-android/releases/tag/1.2.0

## そのほか

#### 11 weeks of android
今年は Google I/O が中止になった代わりに 11 週に渡り様々な情報が公開されました。

- https://developer.android.com/11weeksofandroid

#### RxJava 3.0
coroutines の方がよく話題に出てくるようになりましたが RxJava 3.0 がリリースされました。

- https://github.com/ReactiveX/RxJava/releases/tag/v3.0.0
- https://github.com/ReactiveX/RxJava/wiki/What's-different-in-3.0

#### Billing Library v3
Billing Library も TargetSDK 同様に毎年更新する必要があり、新しくリリースされるアプリは 2021/8/2 以降、既存のアプリは 2021/11/1 以降で Billing Library v3 以降に対応する必要があります。

- https://android-developers.googleblog.com/2020/06/meet-google-play-billing-library.html

#### Account Hold 対応
Google Play の定期購入で Account Hold と Restore の機能が 2020/11/1 から有効にすることが必須になったり、Paused Subscription と Resubscribe の機能がデフォルトで有効になりました
( @syarihu さん、コメントありがとうございました :pray: )

- https://android-developers.googleblog.com/2020/06/new-features-to-acquire-and-retain-subscribers.html

#### In-App Review API の登場
Play Core Library にアプリ内レビューの仕組みが登場しました。

- https://android-developers.googleblog.com/2020/08/in-app-review-api.html
- https://developer.android.com/guide/playcore/in-app-review

#### Play Console のデザインリニューアル
Play Console のデザインが 2020/11/2 から全開発者に適用されました。

- https://android-developers.googleblog.com/2020/09/all-developers-will-get-new-google-play.html

#### Jetpack Compose for Desktop
Jetpack Compose をベースにした Desktop ツールキットが登場しました。

- https://blog.jetbrains.com/cross-post/jetpack-compose-for-desktop-milestone-1-released/

#### coil 1.0
coil もとうとう stable になりました。

- https://github.com/coil-kt/coil/blob/master/CHANGELOG.md#100---october-22-2020
- https://tech.instacart.com/announcing-coil-1-0-5d57b608dc93

#### AppBundle 必須のアナウンス
新規アプリは 2021/8 より AppBundle への対応が必須になります。

- https://android-developers.googleblog.com/2020/11/new-android-app-bundle-and-target-api.html



色々目立つものをピックアップしてみましたが、今年もかなりいろんな変更があった 1 年でした。
来年には Jetpack Compose が控えていたり、今 alpha のライブラリが stable になったりしそうですね。
来年もキャッチアップしていきましょう :muscle: