内容 アプリからのツイートをtwitter-kit-androidライブラリを使って行っているが、最近TwitterアプリのDM送信画面が起動するようになったので調査する。 調査 TwitterアプリのIntentFilterを確認する ツイートにはIntent.ACTION_SENDを使用しているので、本…
内容 少し前からGradle 7.1.1にアップデートしろとの案内が出ていたが、対応できずにいたものをまとめて対応。 同じようなタイミングでターゲットSDKも変えたのでもしかしたらそちらの影響もあるかも。 基本的にはUpgrade Assittantが勝手にやってくれるが、…
Android 9.0 (Pie)以降、SDK Platformに名前がついていなかったが(あったのかもしれないが)Tで復活したようだ。 Tiramisuだそうな。勝手な予想だけど誰かの強い意志が働いてそうな気がするw ちなみにAndroid Studioにもアルファベット順にコードネームが…
課題 アプリ開発でViewBindingを使っているが、Run Appしてアプリを実行したあとでエディタのViewBindingに関する部分がコンパイルエラー扱いになる場合がある。どうすればよいか。 対応 対応というか解決してないんだけど、とりあえずGradleと同期するとコ…
課題 RecyclerView.ViewHolderのgetAdapterPositionがdeprecatedになったので、getBindingAdapterPositionかgetAbsoluteAdapterPositionのどちらかに変更する必要がある。どちらを選択すればよいか。 結論 bindingAdapterPositionはadapterごとの位置情報を…
追記 Issueが解決され、記事になっていた。今後は includeFontPadding=falseがデフォルトで適用されるようになるため 本記事の問題は影響しなくなるだろう。 medium.com 課題 これまでアプリでGoogle FontsからNotoフォントをダウンロードして使っていたが、…
課題 Apple Silicon版のMacBook Proの購入に伴い、Android StudioもApple Silicon版にしたいが、 できればJetBrainsのToolbox App経由で使いたい。どうすれば良いか。 対応 JetBrains Toolbox AppをApple Silicon版にする Toolbox上のAndroid Studioをアンイ…
内容 M1 MaxなMacBook Proが我が家に届いた!ということで早速セットアップを行ったところ、プロジェクトがKaptのところでビルドエラーになる。 対応 参考URLによると、Roomのところでエラーになるらしい。ということでRoomのバージョンを最新の 2.4.0-beta0…
内容 先日サポートしているアプリにお問い合わせがあり、内容とは別にそのユーザーの端末のビルド番号が 機種ID.バージョン test-keys となっていた。機種名は一応伏せるがGoogleのPixel端末などではなくいわゆる中華端末である。 気になった点 署名 ビルド…
追記 HiltViewModelを使うとActivity起動時に使われるIntentパラメータの値も下記記事と同様に ViewModelのSavedStateHandleにセットされていることを確認。 内容 Fragment 1.2.0 以降で利用可能になった SavedStateHandle を試しに書いてみたら いつもFragm…
内容 LiveDataやFlowを使って値の変更をwatchするようになり、Fragmentのライフサイクルに対してどのタイミングで発動するのかが気になったので調べてみた。 結果 イベント タイプ onCreate Fragment launchWhenCreated Flow onCreateView Fragment onViewCr…
AndroidStudioでリファクタリングのアシストが表示された。 文字列がblankの場合に特定の値を設定したい場合に param.q = if (query.isNotBlank()) { query } else { "hoge" } ifBlank()を使えば対象の文字列を代入しつつ、nullまたは空の場合にだけ代替の値…
課題 Jetpack NavigationがBottomNavigationのMultiple BackStackに対応したとのことで喜んで実装してみたところ、 ボトムナビを切り替えてまた元の画面に戻った場合の挙動がおかしくなった。 原因 Jetpack Navigationでボトムナビの実装を行うと、ボトムナ…
内容 ベクター画像をデザイナーさんからもらって使っているけれど、ちょっとしたものは自分で書いて済ませてしまいたい。そんな時に。 四角形 <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> </vector>
課題 Jetpack Composeの実装中、Deploy Preview で端末に特定のComposeをデプロイしようとしたところ、以下のエラーが発生してデプロイできない。 androidx.compose.ui.tooling.PreviewActivity is not an Activity subclass or alias ArcticFox 2020.3.1 Co…
課題 マテリアルコンポーネントのBottomNavigationViewを使いたいが、一部のアイコンだけログインユーザーの画像にしたところ、すべてのタブに自動的にColorListが適用されてしまい画像が表示されない。どうすればよいか。 対応 BottomNavigationViewはタブ…
課題 既存アプリでMaterial Components 対応をするため、テーマを適用してみた。 <style name="AppTheme" parent="Theme.MaterialComponents.Light" /> <style name="AppTheme.NoActionBar" parent="Theme.MaterialComponents.Light.NoActionBar" /> すると、ボタンやテキストボックスの色がまとめて違うものになってしまった。 全部を個別に対応するのは大変なので段階的に対応したい。どうすればよいか。 対応 Theme.Mate…
内容 Bumblebee 2021.1.1 Canary 6 がリリースされたのでアップデートしてみた。 変更したこと 各バージョンを更新(主要なもののみ記載) compileSdk => 31 targetSdk => 31 composeVersion => 1.0.1 kotlinVersion => 1.5.21 // compose-1.0.1のターゲット…
やったこと android gradle pluginを 7.1.0-alpha05 に更新 Hilt関連を 2.38.1 に更新 compileSdk,targetSdk を31に変更 課題 Bunblebee Canary 5にしたところ以下の問題が発生。 command+マウスクリックで宣言先に遷移できない コードアシストが発動しない …
問題 Run App でAndroid Studioからアプリ起動後、コードを修正して Run App しても内容が反映されない。 対応 Android Studioのバグ。 Canary3も動作がおかしいのでCanary2 まで戻して修正待ち。またはArctic FoxのRC1を使う 参考 https://issuetracker.goo…
課題 Android Studioでコード補完(Code Completion)する際に大文字小文字が一致していないと補完してくれなくなった。どうすればよいか。 対応 Preferences -> Editor -> General -> Code completion -> Match Case をオフにする Match caseのチェックを外…
内容 Android開発時にFragmentにHiltの @AndroidEntryPoint アノテーションを付けてインジェクションを行った際、requireContextを呼んだ場合など context の中身が ViewComponentManager.FragmentContextWrapper になる。 これの何が問題かというと、これま…
内容 Jetpack Composeはこれまで Kotlin 1.4.32が対応バージョンとなっていたが、1.0.0-beta09からKotlinの1.5.10に対応となったようだ。 android { buildFeatures { compose = true } composeOptions { kotlinCompilerVersion = "1.5.10" kotlinCompilerExt…
課題 Android Gradle pluginのバージョンを 7.0.0-beta03 にあげたところ、Gradle project sysnc faildが発生した。 エラーメッセージは以下のとおり Unable to find method ''void com.android.build.api.extension.AndroidComponentsExtension$DefaultImpl…
課題 Paging3でデータをセットしたはいいが空にしたいときにはどうすればいいか。 データを空にする PagingData.empty() をsubmitDataに渡してあげればよい。 adapter?.submitData(lifecycle, PagingData.empty()) 参考 stackoverflow.com
課題 APIのレスポンスを処理する際にkotlin.runCatchingを用いて結果をLiveData<Result>に格納しているが、まれにkotlin.runCatchingのブロック内で戻り値とは別にLiveDataにResultをセットすることがあった。 private val _hoge: MutableLiveData<Result<Hoge>> by lazy { Mutabl</result<hoge></result>…
課題 Room採用のためRealmDBからSQLiteにDBを移行するにあたり、BroadcastReceiverでIntent.ACTION_MY_PACKAGE_REPLACED イベントを受取って、そのタイミングでデータ移行プログラムを実行させるようにしたところ、一部の端末でデータが消えたとの報告があっ…
内容 ViewPager2を導入したら子FragmentのSwipeRefreshLayoutによる縦スワイプ中にグラグラと横スワイプが発生するようになった。 対策 SwipeRefreshLayout自身のイベントリスナーなどを探すと存在せず、無駄に時間を浪費することになる。 正解(?)はSwipe…
内容 最近リリースしたアプリのFirebase Crashlyticsをみると IllegalStateException が妙に増加していた。 メッセージをみると XXXFragment not associated with a fragment manager が書いてあるんだけど、 なんでこのタイミングで起こるの?という感じの…
FragmentStatePagerAdapterがdeprecatedになったのでViewPager2に移行作業中。 新しいFragmentStateAdapterからRecyclerView.Adapterを継承するようになったのだけど、 そのせいかPageコンテンツである子Fragmentの縦スクロール中に横スワイプが反応しやすく…