Android TVアプリについて雑に調べた
Kotlin Multiplatform MobileでFirebaseを使いたい
最近はKMMに夢中
最近はすっかりKotlin Multiplatform Mobileにお熱である。
個人アプリをKMM化したのだが、Firebase Realtime DatabaseがKMMに対応してるんだろうか?
どこかで「JavaコードはKMMの共通では使えない」と見たので、たぶん使えないはず。
調べると、redditで公式アカウントが「対応する予定もない」との回答を見つけた。
しかし、回答のなかに公式から「非公式だけどこんなのあるよ」と紹介されてたのがこれ
この非公式SDKはJavaコードであるFirebaseをKotlinでラップしてるようで、KMMに対応しているらしい。
実際に使ってみた結果
KMMの共通コード内でFirebase Realtime Databaseの値が取得できた!
なので、当分はこのSDKを使っていこうと思う。
Unable to determine application id: xxx com.android.tools.idea.run.ApkProvisionException: No outputs for the main artifact of variant: xxxx
現象
さっきまでビルドしていたAndroid Studioのプロジェクトがビルドエラーとなった。
Unable to determine application id: xxx com.android.tools.idea.run.ApkProvisionException: No outputs for the main artifact of variant: xxxx
解決方法
Invalidate Caches > Reset で直った。
ビルドも問題なし
いったいなんだったんだろう...
Android公式の oss-licenses-plugin を試してみた
Androidアプリのライブラリを表示するためのGoogle公式 Gradle Pluginがあると聞いて、さっそく試してみた。
GitHub code
screen shot
感想
導入:とっても簡単
表示:とてもシンプルすぎて味気ない感じ
懸念:TensorFlowやOpenCVなど使ってないライブラリも表示されてる?(FirebaseのMLKitがこれらを含んでると予想)
Document link
公式リンク
developers.google.com
No such property: scope for class: com.android.build.gradle.internal.variant.ApplicationVariantData
現象
Android Studioを4.1にupdateしてビルドするとエラーが出た。
A problem occurred configuring project ':app'. > groovy.lang.MissingPropertyException: No such property: scope for class: com.android.build.gradle.internal.variant.ApplicationVariantData
com.android.build.gradle.internal.variant.ApplicationVariantData
というプロパティが見つからないようだ。
なんだそれは... 聞き覚えがない名前だ
原因
Fabric SDKのpluginやLibraryが使えなくなったため、取得に失敗?していたらしい
解決策
Fabric plugin, library, codeを全て削除して、Firebase Crashlyticsに移行するとエラーが直った。
Androidカメラであつ森のカブ価を認識したい - チャレンジ編
KotlinのifEmptyとifBrank
空白チェックを行う場合、if elseでもいいが、ifEmptyやifBlankでも便利にできる。
if elseの場合
val result = if (dummyText.isEmpty()) "hello" else "" println(result) // hello
ifEmpty だとスッキリする
val result = dummyText.ifEmpty { "hello" } println(result) // hello
ifBlank はnullも扱える
val result: String? = dummyText?.ifBlank { "hello" } ?: "null" println(result) // hello