nashcft's blog

時々何か書く。

Android

Android 15 で edge-to-edge が強制されるかもという話のメモ

何のこと? どこだったかで Android 15 になったら edge-to-edge 強制になるかもって話を聞いたがこれのことか / Android 15 might force more apps to take up 100% of your screen https://t.co/3SPJRg3UVb— nash (@nashcft) March 29, 2024 www.androidaut…

Android 13 で getSerializable/getParcelable の API 置き換えが発生して、でも getParcelable にはバグがあって、その後

Android 13 のリリースに関して以下のような Serializable / Parcelable の扱いがしんどいという話があった。この記事ではその後どうなったかについて簡単に記録しておこうと思う。 speakerdeck.com 先に結論を書いておくと、 AndroidX Core に compatible A…

READ_MEDIA_IMAGES と READ_MEDIA_VIDEO の使用に制限がつくらしい

API level 33 からアプリ外のメディアファイルへのアクセスに必要な permission として READ_MEDIA_IMAGES, READ_MEDIA_VIDEO, READ_MEDIA_AUDIO が追加された*1が、これらの内 READ_MEDIA_IMAGES と READ_MEDIA_VIDEO の使用に関するポリシーの追加が 2023-…

Kover 触ったメモ

DroidKaigi 2023 公式アプリなどで触ったので所感などを書き残しておく。この記事の内容は Kover 0.7.3 時点の機能に基づいている。 書いてたら思ったより長くなったので先に結論を書いておくと「簡単なので使う場合は各自でいい感じにやっといてください」…

Jetpack DataStore で保存する値はキャッシュされている

タイトルの通りで、実用性を考えたらそれはそうでしょというものなんだけど、確認のために実装を読んだのでそのメモ。というのをしばらく放置していたら実装がガッと書き換えられてしまったので書き換え以前 (= 1.1.0-alpha01 時点) と書き換え後両方の実装…

Android project で Gradle 8.0 に更新するために Java toolchain の設定をする

ある日 Android project の Gradle を 7.6 から 8.0 (この記事を書いている時点での最新は 8.0.1) に更新したところ以下のようなエラーと共にビルドに失敗した: 'compile{Variant}JavaWithJavac' task (current target is 1.8) and 'kaptGenerateStubs{Varia…

Android 13 から導入された per-app language preferences について

文脈 github.com 触ったのでついでに調べてまとめることにした。 Per-app language preferences って何 端末全体の言語設定とは別にアプリ毎の言語設定を system 側で管理してくれる機能。 developer.android.com System settings から設定できるようにする …

Android/Kotlin で GraphQL バックエンドと会話する時に嬉しくないと思ってることメモ

ダラーっと tweet してたもののまとめ Android で native = Apollo Kotlin を client library として使う想定で書いている。他の cross-platform な開発環境 (React Native とか Flutter) だと事情は異なる、はず (経験ないので)。 Android アプリでバックエ…

最近触った Gradle 関連の機能

備忘録のようなもの。 Gradle Version catalogs docs.gradle.org Project root の build.gradle で ext に生やしたり buildSrc や composite build 用 module 内に object declaration で定義されたりするような慣習のあった依存ライブラリの定義用の機能。 …

AGP 4.0.0 以降で発生する local aar 起因のビルドエラーについて

起こってること AGP 4.0.0 から local aar に依存している library module をビルドすると失敗するようになった。 Local aar というのは libs/ 以下に .aar が置いてあって以下のように依存してるみたいなやつ。 dependendencies { implementation(files("li…

JitPack で AGP 7.0 以上の Android project を扱う時の注意点

さっき投稿した記事でエラーの原因を調査していたときに JitPack の document を読んでて気づいたのだけど、 JitPack の build 環境では JDK はデフォルトで 1.8 となっているようだ。 https://jitpack.io/docs/ANDROID/ Builds are run with Java 8 by defa…

Android project を Gradle 7.0 にしたら JitPack で publish できなくなった

tl;dr maven plugin を使ってない Android project で Gradle 7.0 を使うと JitPack で publish できなくなる Maven Publish Plugin で publication の設定を自分で書こう この辺読んでね https://developer.android.com/studio/build/maven-publish-plugin …

Jetpack ViewModel はいつ clear されるか

tl;dr onPause ↓ onStop ↓ (onDestroyView) ↓ onCleared ↓ onDestroy Jetpack ViewModel のドキュメント には Activity と紐つけた際の owner の lifecycle event と ViewModel の生存期間の関係についての図が載っている。 https://developer.android.com/t…

InstantTaskExecutorRule がやってること

社で何これって聞かれてした説明を見えるところに文章で残しておこうと思ったもの。 👀 ドキュメント: https://developer.android.com/reference/androidx/arch/core/executor/testing/InstantTaskExecutorRule コード: https://cs.android.com/androidx/platf…

Material Components for Android: ボタンテキストの色

前提として以下の記事がある: y-anz-m.blogspot.com 大雑把にまとめると Material Components for Android を 1.0.0 から 1.1.0 に上げたら AlertDialog のナビゲーションボタンの文字色が変わってて、コードを比較したらデフォルトカラーの参照先が colorAc…

Cast SDK の KTX ライブラリを作っている

github.com 夏頃から社のアプリの Cast 機能まわりを触り始めてて、しばらくして本格的に機能開発に関わるようになったところで一旦きちんとAPIさらっておくかーと思ったのと、ついでに Kotlin サポート欲しいけどすぐ出てこなそうだから自分で作るかーって…

Android Studio 4.2 から組み込まれる JDK のバージョンが 11 になるっぽい

現在最新の 4.2 Canary 13 で以下のようになっている。 Android Studio 4.2 Canary 13 の "About Android Studio" のキャプチャ 前回書いた記事では当時の最新バージョンに組み込まれていたのが JDK 8 だったっぽいのと、手元にある記録からすると Canary 8 …

CircleCI の Android Docker Image でJDKが11にアップデートされた件のまとめ

私は今回の件より前から CircleCI を使っておらず、最近は主に GitHub Actions でCIを構築していてこの件で被害は被っていないのだけど、軽く調べてみたところ Android project を JDK 9+ でビルドすることに強い興味をを持っている自分には結構興味深いこと…

Android Gradle Plugin 4.1.0 から library module の BuildConfig に VERSION_CODE と VERSION_NAME が生えなくなりそう (なった)

Android Gradle Plugin 4.0.0 までは library module にも生えていた BuildConfig.VERSION_CODE と BuildConfig.VERSION_NAME が 4.1.0-alpha05 から生えなくなってた issuetracker: https://issuetracker.google.com/issues/154275579 Library module にと…

Groupie に View Binding サポートが追加された

先月出してた groupie-viewbinding を追加する pull request が今日 merge された。 github.com 早速これの入った v2.8.0 のリリースもされた模様。 Release v2.8.0 · lisawray/groupie · GitHub ものとしては groupie-databinding ほとんどそのままという感…

Android: Data Binding 3.6.0 から ViewDataBinding の定義が変わった

今日 Android Studio 3.6.0 stable がリリースされた。 android-developers.googleblog.com 3.6 から導入された機能の一つに view binding という、data binding の layout 中の要素にアクセスする機能だけを抜き出したようなものがある。 developer.android…

DroidKaigi 2020 アプリ開発 contribute の思い出

私が Android アプリ開発に携わるようになったのが2017年後半からで、それから迎えた DroidKaigi は 2018, 2019, 2020 と今年で3度目になる。今年は残念ながら中止になってしまった*1けど、自分にとっては公式アプリに初めて contribute した年でもあるので…

Android: アプリからメールアプリを開く時の Intent の設定とメールアプリの挙動について

以下の tweet に関する話。 アプリからメール作成しようとした時に URI 指定すると Gmail では件名と本文が消えてしまう?— nash (@nashcft) December 26, 2019 ACTION_SENDTO の Intent の食べ方が Gmail と Outlook で違うのなんなの...— nash (@nashcft) D…

Bitrise で Android instrumentation test を実行させるための調査メモ

最近 Android アプリの instrumentation test を実行する workflow を構築する機会があったので、そのために当たった情報やついでに気になって調べたことなどを覚書も兼ねて記事にすることにした。 目次 Steps Virtual Device Testing for Android で instru…

Bitrise Test Reports について調べてみた記録

先週 Bitrise の build log に "Test Reports" って項目が増えてて、JUnit とかのテスト結果をアップロードしたらGUIでいい感じにみられるようにしてくれる機能が追加されたことを知った。公式のドキュメントを読んだ感じだと Bitrise から提供されてるいく…

Android で unidirectional data flow で設計することについてのメモ

Android と Flux とか unidirectional data flow とよばれるものの関係についてかんがえていることのメモ書きのために自分の過去の tweet をまとめる場所 “UseCase: similar to a Redux reducer, it creates a new state (or one or more actions to create …

DroidKaigi 2019 感想

DroidKaigi 2019 に参加してきた。 droidkaigi.jp セッションのノートとかは Scrapbox にまとめてある。これを書いている時点でまとめきれていないものがあって #WIP ってついてるのがそれ。 scrapbox.io 感想 聴いたセッションで特に印象的だったもの Deep …

Kotlin Android Extensions の view binding に関する知識の整理

Kotlin Android Extensions の解説記事、Kotlin のリファレンスとか英語ソースだったらよくまとまってるのがあるけど日本語ソースだとあんまりいい感じのないなーという印象なので自分でまとめてみる。ただし view binding の方だけ。英語が読めるなら以下の…

Binder transaction buffer は1MBとは限らないかもしれない話

今開発しているアプリで特定の端末・条件でとある画面への遷移時に画面が真っ暗になって操作を受け付けなくなったり、該当する中で古い端末だとアプリが強制終了したりしてしまうという現象に出くわして、ログを眺めてみたら以下の例外が出続けていた: Excep…

日記的な

風邪治った 昨日今日でタスク1個こなして、あと Effective Java の読書会したりコードレビューしたりした。最近読書が疎かになりつつあるのでよくない。 今日のタスクでは ViewHolder まわりをいじっていたのだけど、 RecyclerView における ViewHolder とそ…