Photo by Jamie Street on Unsplash去年に引き続き、2020年1月におけるAndroid開発状況を個人的な観点からまとめたいと思います。 Kotlin今とはなってはKotlin Firstと言われていて、Androidのドキュメントやサンプルも基本はKotlinベースになってきます。 Javaのサンプルはベストエフォートのため、Javaのコードが無いものも出てきています。
Jetpack Navigationをカスタマイズする方法です。 この記事を参考に、Fragmentでの画面遷移ではなく、Viewの切り替えによる画面遷移をやってみました。 Navigationのカスタマイズは、 Navigator と NavHost を実装する必要があります。 build.gradlektx使ってます。 NavHost実装NavHostはカスタムViewとして作成し、 NavController を管理します。 次のようなことを行います。 Navigation.setViewNavController を使ってViewのタグにNavControllerをセット。NavControllerの navigatorProvider にカスタマイズしたNavigator(後述)を追加。XMLの属性からNavigation設定を取得して、NavControllerに設定。NavC
Today, we launch an early preview of the new Android extension libraries (AndroidX) which represents a new era for the… で、ここから色々試したメモです。 Gradleプラグイン先程のAndroid Developers Blogに書いてる通り、androidxへの変換はAndroid Gradle Plugin 3.2.0-alpha14がやってくれてます。 Refactor to AndroidX... をすると、 gradle.properties に以下の2行が追加されます。 android.enableJetifier=true android.useAndroidX=trueコードが無いので推測ですが、このプロパティを見てGradleプラグインが変換しているよう
Dagger is a fully static, compile-time dependency injection framework for both Java and Android. It is developed by the… Android拡張とは今までのやり方だと、コピペのコードが多かったり、Injectを行うクラスが依存解決する方法を知ってるとか、なんとか…っていう問題があるので、なんとかしようってことです。 ぼくの理解としては AndroidInjection.inject でシンプルに依存性の注入をやっていこうっていう雑な解釈でいます。そのための準備がだいぶ複雑ですが。 なので、 AndroidInjection.inject でちゃんと依存性の注入ができるようにするためにどう定義していくかということになります。
判断迷ってます。何か間違ってたら教えてください。 ライブラリにKotlinを使ってる場合、アプリ側に多少デメリットがあります。 アプリサイズKotlinを使ったライブラリを依存関係に追加すると、こんな感じにKotlinのランタイムのライブラリも入ってきます。 \--- project :libkotlin \--- org.jetbrains.kotlin:kotlin-stdlib-jre7:1.2.21 \--- org.jetbrains.kotlin:kotlin-stdlib:1.2.21 \--- org.jetbrains:annotations:13.0アプリ側がJavaの場合は、その分、単純にアプリサイズが増加します。 とは言え、ライブラリ自体そんなに大きくないので、すごく増えるということはなさそうです。 ココに書いてる通り、全部で約934KBで、Proguardを使うと
kotlinでDataBindingを使う場合、Javaの時とは異なり、kaptでcomplierを指定する必要があったと思います。 kapt 'com.android.databinding:compiler:x.x.x'それが、AndroidStudio3.1 Canary8 から、これを書かなくても大丈夫になりました。 ただ、 apply plugin: 'kotlin-kapt' は必要です。 実はこれと同じことをするパッチ投げてたんですが、ちょっと放置されてる間に実装しちゃったみたいで。 https://android-review.googlesource.com/c/platform/tools/base/+/542002#message-a1d7b57c31a80c86c346c897e794e4f2332eb05b ぼくの実装と違うらしいので、コードが気になります。
apkanalyzerコマンドの使い方簡単な使い方をいくつか紹介したいと思います。 実行ファイルは <android_sdk_path>/tools/bin/apkanalyzer にあります。 APKファイルサイズを取得$ apkanalyzer -h apk file-size <apk_file_path> 455.9KB-h をつけると人が読みやすい感じに出力してくれます。 Permissionの一覧を取得する$ apkanalyzer manifest permissions <apk_file_path> android.permission.ACCESS_FINE_LOCATION android.permission.ACCESS_NETWORK_STATEライブラリが追加してるPermission含まれるので、自分で追加してないものも確認できます。 メソッドリファレンス数
AndroidでKotlinのCoroutineを使うときの注意です。CoroutineDispatcherの選択を誤ると意図しない結果になります。 環境はkotlinx-coroutines-android:0.16になります。 非同期処理をCoroutineで実現する場合、以下のようなCommonPoolを使ったサンプルが多いと思いますが、これではジョブをキャンセルした場合にasync内の処理がキャンセルされません。 では、違う方法にします。先程CommpnPoolを渡してた場所をcontextを渡すようにします。contextを指定し場合は親のジョブの子のような扱いになり、ジョブをキャンセルしたときに子もキャンセルされます。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く