前人未踏の領域へ Androidアプリ開発編

Androidアプリ開発に関する調査メモ置き場。古い記事にはアプリ以外も含まれます。

Android Studio 4.1 Beta 1に上げる際にビルドできなくなる

課題

Android Studio 4.1 Beta 1がリリースされたため早速ダウンロードして起動してみたところ、 以下のエラーが出てビルドできなくなった。

Gradle sync failed: No such property: scope for class: com.android.build.gradle.internal.variant.ApplicationVariantData

対応

直接の原因が何かは分からないが、Fabricを外すとビルドが通った。 Fabricはクラッシュログを取るのに必要なものだったが、すでにサポート終了で Firebase Crashlyticsへの移行が求められている状況だったため、このタイミングで移行することに。

Firebase Crashlyticsへの移行自体は変更量は多いものの、使用メソッドごとに代替メソッドに 一括置換すればほぼOKだったのでそこまで時間はかからなかった。

ググってもあまり情報が出たこなかったので、もしかしたらFabricが原因かもよ、と記しておく。

Android: LiveDataでオブジェクトのプロパティの変更を監視する

課題

UserをViewModelにLiveDataとして設定したが、Userオブジェクトのプロパティの変更を知りたい。どうすればよいか。

対応

LiveDataはvalueに値が代入されたタイミングでないとObserverに伝えてくれない。
参考サイトにはいくつかの対応案があるが、LiveDataクラスにmutationメソッドを追加する方法を採用

// 適当な場所に LiveDataExtentions.kt というファイルを作成(ファイル名はお好みで)

import androidx.lifecycle.MutableLiveData

/**
 * LiveDataでオブジェクトのプロパティ変更を検知するための関数
 */
fun <T> MutableLiveData<T>.mutation(actions: (MutableLiveData<T>) -> Unit) {
    actions(this)
    this.value = this.value
}
viewModel.user.mutation {
    it.value?.name = binding.name.text.toString()
    it.value?.email = binding.email.text.toString()
}

参考

stackoverflow.com

Android JetBrains Toolbox Appのススメ

Toolbox Appとは

ご存知の方も多いかもしれないが、Android StudioはJetBrainsの製品をベースに開発されている。
そのJetBransには多くの言語をサポートするためのそれぞれのIDE製品を提供しており、それらのIDEを管理するために Toolbox Appというものも出している。

www.jetbrains.com

これをインストールするとPCにインストールしたJetBrails製品が把握され、 アプリの起動、アップデートのお知らせやダウングレードなどもいい感じにしてくれるようになる。

で、このアプリはAndroid Studioにも使える。

f:id:takeR:20200408085834p:plainf:id:takeR:20200408085014p:plain

Android Studioしか使ってないと以外と知らないかもと思ったので記事書いてみた。

自分の場合はJetBrails Ultimateを購入していてRubyMineやWebStormなどの他製品も使っているので大変お世話になっている。 Toolbox Appだけなら多分無料で使えるのでおすすめ。