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

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

トラブルシューティング

Jetpack Compose:TopAppBarとPullToRefreshContainerがうまく連動しない

課題 androidx.compose.material3:material3 を 1.2.0 にしたところ、TopAppBarとPullRefreshがうまく連動して動作しなくなった(TopAppBarDefaults.exitUntilCollapsedScrollBehaviorの場合に下にスクロールしてもTopAppBarが降りてこない)。どうすればよ…

Duplicate class対応:Google Play Coreライブラリの分割

内容 androidx.navigation関連のライブラリを2.6.0にあげたところDuplicate classエラーが発生した。 > A failure occurred while executing com.android.build.gradle.internal.tasks.CheckDuplicatesRunnable > Duplicate class com.google.android.play.c…

BuildConfigが生成されない

内容 Android Gradle Pluginを8.0.0にアップデートとしたところ、BuildConfigの部分がコンパイルエラーになった。 コンパイル時にBuildConfigが生成してくれていないようである。 原因 BuildFeatures.ktを見るとbuildConfigのデフォルト値がfalseになってい…

Jetpack Compose:LazyColumnのスクロール位置が先頭に戻ってしまう

内容 Paging3とLazyColmnを使用して一覧を表示しているが、画面遷移して戻るとスクロール位置が先頭に戻ってしまう。どうすれば良いか 補足 以前同じ問題を対処するため以下の記事を書いたが、不完全だったのと個人的により良い方法が見つかったため改めて。…

Android: Fragment内のComposeでスクロール位置を復元する

追記 新しい記事を書いたのでこちらをご参考ください。 takerpg.hatenablog.jp 内容 Fragment内に ComposeVIew を作成し、LazyColumn でリストを表示したが、画面遷移から戻るとスクロール位置が元に戻ってしまう。 どうすればよいか。 TODO まず、ComposeVi…

Android: Twitterアプリ経由でログインできない(解決済み)

内容 Twitterアカウントでのログインを可能にしているアプリで、Twitterアプリのバージョンを 9.54.0-release.0 の場合に 認証トークンを取得できずにログインできなくなる。 対応 Twitterアプリのバージョンを 9.54.1-release.0 にアップデートする。 感想 …

Android: LazyVerticalGridでPaging3を使えるようにする

追記 https://developer.android.com/jetpack/androidx/releases/paging#1.0.0-alpha19 1.0.0-alpha19ですべてのLazyLayoutに対して利用可能な低レベルの拡張メソッドが提供されるようになっため、以下の対応はすでに不要となっている。 内容 LazyVerticalGr…

Android:desugar_jdk_libsを1.2.0に更新する

内容 com.android.tools:desugar_jdk_libsを1.2.0に更新したところ、以下のエラーに遭遇した。どうすればよいか。 Unsupported desugared library configuration version, please upgrade the D8/R8 compiler 対応 Android Gradle Pluginのバージョンを上げ…

Android:okhttp3で画像データ取得時にエラーが発生する

内容 Coilのバージョンを 1.4.0 から 2.1.0 に上げたところ、一部のバナー画像が表示されなくなった。 調査 エラーは以下のようなもので、レスポンスヘッダーのcontent-disposition に無効なキャラクタが含まれているようだ。filenameの「バナー」の部分だろ…

Jetpack Compose : TextFieldにdisabledTextColorを適用するには

内容 TextFieldをdisabledな状態にしたい。どうすればよいか。 対応 enabledパラメータをfalseにする。基本はこれだけで、フォーカスが当たらなくなり、編集不可になる。 // 抜粋 TextField( enabled = false ) 色が変わるようにする enabled=falseになった…

twitter-kit-androidを使ってツイートしようとするとDM送信画面が起動する

内容 アプリからのツイートをtwitter-kit-androidライブラリを使って行っているが、最近TwitterアプリのDM送信画面が起動するようになったので調査する。 調査 TwitterアプリのIntentFilterを確認する ツイートにはIntent.ACTION_SENDを使用しているので、本…

Android StudioでViewBindingがRun App後にエラー表示される件

課題 アプリ開発でViewBindingを使っているが、Run Appしてアプリを実行したあとでエディタのViewBindingに関する部分がコンパイルエラー扱いになる場合がある。どうすればよいか。 対応 対応というか解決してないんだけど、とりあえずGradleと同期するとコ…

Android:Jetpack ComposeでNoto Sans JPフォントを使えるようにする

追記 Issueが解決され、記事になっていた。今後は includeFontPadding=falseがデフォルトで適用されるようになるため 本記事の問題は影響しなくなるだろう。 medium.com 課題 これまでアプリでGoogle FontsからNotoフォントをダウンロードして使っていたが、…

M1 MacでRoomがビルドエラーになる

内容 M1 MaxなMacBook Proが我が家に届いた!ということで早速セットアップを行ったところ、プロジェクトがKaptのところでビルドエラーになる。 対応 参考URLによると、Roomのところでエラーになるらしい。ということでRoomのバージョンを最新の 2.4.0-beta0…

Android:Jetpack Navigationでボトムナビのタブ切り替えでハマる

課題 Jetpack NavigationがBottomNavigationのMultiple BackStackに対応したとのことで喜んで実装してみたところ、 ボトムナビを切り替えてまた元の画面に戻った場合の挙動がおかしくなった。 原因 Jetpack Navigationでボトムナビの実装を行うと、ボトムナ…

Android:ComposeのDeploy PreviewでPreviewActivity is not an Activity subclass or aliasになる

課題 Jetpack Composeの実装中、Deploy Preview で端末に特定のComposeをデプロイしようとしたところ、以下のエラーが発生してデプロイできない。 androidx.compose.ui.tooling.PreviewActivity is not an Activity subclass or alias ArcticFox 2020.3.1 Co…

Android:BottomNavigationViewに独自の画像をセットする

課題 マテリアルコンポーネントのBottomNavigationViewを使いたいが、一部のアイコンだけログインユーザーの画像にしたところ、すべてのタブに自動的にColorListが適用されてしまい画像が表示されない。どうすればよいか。 対応 BottomNavigationViewはタブ…

Android:既存アプリにMaterial Components Themeを段階的に適用する

課題 既存アプリでMaterial Components 対応をするため、テーマを適用してみた。 <style name="AppTheme" parent="Theme.MaterialComponents.Light" /> <style name="AppTheme.NoActionBar" parent="Theme.MaterialComponents.Light.NoActionBar" /> すると、ボタンやテキストボックスの色がまとめて違うものになってしまった。 全部を個別に対応するのは大変なので段階的に対応したい。どうすればよいか。 対応 Theme.Mate…

Android Studio:Bumblebee 2021.1.1 Canary 5 アップデートメモ

やったこと android gradle pluginを 7.1.0-alpha05 に更新 Hilt関連を 2.38.1 に更新 compileSdk,targetSdk を31に変更 課題 Bunblebee Canary 5にしたところ以下の問題が発生。 command+マウスクリックで宣言先に遷移できない コードアシストが発動しない …

Android Studio:Bumblebee Canary 4:バグ:変更が反映されない

問題 Run App でAndroid Studioからアプリ起動後、コードを修正して Run App しても内容が反映されない。 対応 Android Studioのバグ。 Canary3も動作がおかしいのでCanary2 まで戻して修正待ち。またはArctic FoxのRC1を使う 参考 https://issuetracker.goo…

Android:Android Gradle pluginを7.0.0-beta03にしたら同期エラーになった

課題 Android Gradle pluginのバージョンを 7.0.0-beta03 にあげたところ、Gradle project sysnc faildが発生した。 エラーメッセージは以下のとおり Unable to find method ''void com.android.build.api.extension.AndroidComponentsExtension$DefaultImpl…

Android: Intent.ACTION_MY_PACKAGE_REPLACEDを過信するべからず

課題 Room採用のためRealmDBからSQLiteにDBを移行するにあたり、BroadcastReceiverでIntent.ACTION_MY_PACKAGE_REPLACED イベントを受取って、そのタイミングでデータ移行プログラムを実行させるようにしたところ、一部の端末でデータが消えたとの報告があっ…

ViewPager2で操作性が悪化した件(その2)

内容 ViewPager2を導入したら子FragmentのSwipeRefreshLayoutによる縦スワイプ中にグラグラと横スワイプが発生するようになった。 対策 SwipeRefreshLayout自身のイベントリスナーなどを探すと存在せず、無駄に時間を浪費することになる。 正解(?)はSwipe…

IllegalStateExceptionが増えた件

内容 最近リリースしたアプリのFirebase Crashlyticsをみると IllegalStateException が妙に増加していた。 メッセージをみると XXXFragment not associated with a fragment manager が書いてあるんだけど、 なんでこのタイミングで起こるの?という感じの…

ViewPager2で操作性が悪化した件

FragmentStatePagerAdapterがdeprecatedになったのでViewPager2に移行作業中。 新しいFragmentStateAdapterからRecyclerView.Adapterを継承するようになったのだけど、 そのせいかPageコンテンツである子Fragmentの縦スクロール中に横スワイプが反応しやすく…

Jetpack Compose: Buttonを表示しようとすると落ちる

課題 Jetpack Composeでボタンを表示しようとしたが以下のエラーになってしまい表示できない。 NoSuchMethodError: No static method clickable Stacktraceはコピーするの忘れたのでありません。 対応 composeのバージョンが古い場合に発生。 自分の場合、1.…

Android Studioでjlinkが見つからない件

課題 Android StudioのCanary版でJetpack composeを実装してビルドしようとしたところ以下のエラーに遭遇。 jlnkファイルがないと言われている。見ると確かに存在しない。 /Users/xxx/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-…

Android constraintlayout.widget.GroupのメンバーViewに個別のvisibilityが効かない

課題 Viewの表示・非表示を一括で管理するために androidx.constraintlayout.widget.Group でVIewをまとめたところ、そのGroup内のViewに対して 個別のVisibilityを設定しても反映されなくなった。 対応 Groupを使うのを諦め、ViewGroupで囲んでしまうのが無…

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.Applicatio…

Android:Email送信時にEXTRA_SUBJECT、EXTRA_TEXTが反映されない

課題 これまで以下のような感じでメールを送信していたが、いつ頃からか'EXTRA_SUBJECT', 'EXTRA_TEXT'がGmailにセットされなくなった。 /** * メール送信用Intentを生成する */ fun getMailIntent(mailTo: String, subject: String, body: String): Intent …