Diary

Diary

日々学んだことをアウトプットする場として初めてみました

Android

Jetpack Compose で横画面に対応する!

『Jetpack Compose で横画面を検知しレイアウトを変更する』ことをやってみたいと思います。 環境 - build:gradle:7.0.4 - compose_version = '1.0.1' レイアウト 次のように、横画面か縦画面かを判断しレイアウトを変更できるようにことがこの記事のゴール…

Jetpack Compose で3点ボタンのドロップダウンメニュー

成果物 今回は、Jetpack Compose で以下のようなものを作りたいと思います。 縦に3つ点の並んだアイコンを表示 MoreVert と言うらしいです More read, vertical ?? クリック時にそこからメニューを表示させる 写真 クリック時の挙動 環境 - build:gradle:7.…

android でメモリーリークを調べてみた

メモリーリークとは Java のランタイムの文脈においてメモリーリークとは、ガベージコレクション (GC) と強く関連しています。具体的には、必要無くなったオブジェクトの参照を持ち続け、GC が削除をいつまでも行わないことを指します。 すぐにバグを引き起…

android studio のメソッドが真っ赤になった!

android studio のメソッドが真っ赤になった! テストメソッドのほとんどのファイルで、多くのメソッドが真っ赤になる現象が発生しました。 import 文を見て、赤文字の対象となっていたものには以下のようなものがありました。 androidx.test.xxx org.junit.…

Jetpack Compose でタイマー処理を実装する

タイマーを Android で作りたいことがあり、その際 Jetpack Compose で定期ループみたいなもの実装しました。 Kotlin で実装を行うには Timer や Runnable を用いることが多いそうですが、Jetpack compose では以下のようにLaunchedEffect と delay を用いて…

androidTest が表示されなくなった!

android でリリースに向けて色々といじってた際、左上のタブでAndroidを選択している状態で androidTest が表示されなくなりました。 Android Studio の再起動や、『File > Invalidate Cache / Restart』をやってみても解決しませんでした。 最終的にはこち…

Android における Process Death

Process Death とは アプリがバックグラウンドで動いている場合などに、リソースの都合で Android システムがアプリを停止させること。 Android Studio で Process Death 実行 Android Studio で Process Death と同等のことをするには、Logcat 画面の端に存…

Jetpack Glance で遊んでみた

前回の記事では Jetpack Glance を使って Widget を実際に表示させるところまで行いました。 今回はGlanceAppWidgetを継承させたクラスをいじって、色々と表示を変えて遊んでみようと思います! [目次] 環境 サイズによって内容を変更する exact Responsive …

Jetpack で Widget を作成

「Jetpack Glance が α 版になったらしい」という記事を見て早速遊んでみました。 予想以上に文章が長くなってしまったので、色々といじってみるのは次回にし、今回は『widget を表示させるところまで』をゴールにします。 [目次] 環境 Widget 作成手順 1. …

m1 mac で Execution failed for task ':app:kaptDebugKotlin'.

m1 mac で、今まで通ってたビルドが通らない現象が発生しました。 その際のエラーメッセージと解決策をメモしておきます。 エラー内容 Execution failed for task ':app:kaptDebugKotlin'. > A failure occurred while executing org.jetbrains.kotlin.gradl…

Android で署名付きビルド+ハマったこと

Android で apk ファイルの署名付きビルドを行ったのですが、その際に少しハマった(gradle.properties & github actions)のでその点についてメモしておこうと思います [目次] アプリレベルの build.gradle の記述 ハマったこと gradle.properties の記述は '…

Jetpack Compose で正しい R の import がされない!

環境 - compose_version = '1.0.1' - targetSdk 26 - kotlinCompilerVersion '1.5.21' 問題点 以下のように composable 関数の中で string リソースファイルの文言を使いたいケースを考えます。 Text( text = stringResource(id = R.string.your_feet) ) こ…

jetpack compose の alertDialog でボタンをいい感じに配置する

今回は、jetpack compose の alertDialog を使って、以下のようにボタンを中央から均等に配置させる方法について紹介したいと思います。 環境 - compose_version = '1.0.1' - targetSdk 26 - kotlinCompilerVersion '1.5.21' 実装方法 「compose alertDialog…

Text ではなく TextButton に testTag をつける

今回は compose のテストに使用する testTag のつける場所についてハマった話をしようと思います。 環境 - compose_version = '1.0.1' - targetSdk 26 - kotlinCompilerVersion '1.5.21' Text に testTag をつけたら失敗した話 TextButton を使って compose …

adb コマンドのみで画面のスクロールを行う

adb コマンドのみで画面のスクロールを行ったので、今回はその方法についてメモしておこうと思います。 スクロール方法 現在の端末のディスプレイサイズを取得する adb shell wm size Physical size: 1080x2160 adb コマンドで swipe のイベントを送る adb s…

adb コマンドを使ってデフォルトのランチャーアプリを設定する

adb コマンドを使ってデフォルトのランチャーアプリを設定する方法のメモです。 デフォルトアプリの設定方法 adb shell cmd package set-home-activity "PACKAGE/ACTIVITY" -user --user 0 起動中の activity の調べ方については以下の記事も参考にしていた…

adb コマンドで現在起動中の activity を立ち上げる

adb コマンドを使いアクティビティを調べ、そのアクティビティを立ち上げるところまで行いました。 今回はそのまとめです。 [目次] 現在起動中のアクティビティを調べる adb コマンドでアクティビティを起動する adb start -a: インテントを起動 adb start -…

”正しいはず”の URL が WebView で開けない

ブラウザで開ける”正しいはず”の URL が WebView で開けない症状に遭遇しました。 結論としては「渡した URL に最後のスラッシュが抜けていた」という単純なものでしたが、今まで意識したことがなかったので発見が遅れてしまいました。 [目次] 環境 忙しい人…

retrofit を使った compose UI testing で could not find any node が出た

以下のような状況で compose の UI のテストをしていたら、なかなか希望の node が取れませんでした。 自分の探す方向性が悪くなかなか解決できなかったので、その反省を兼ねて記録しておきます。 公式の compose Test 記事を参考に compose の UI テストを…

「Could not resolve all files for configuration」junit が読み込めない

Android Studio において、「test は実行できるが androidTest の実行ができない」という症状に陥りました。 今回はその解決方法についてメモしておこうと思います。 [目次] 環境 プロジェクトレベルの build.gradle アプリケーションレベルの build.gradle …

JetPack Compose の文脈で Action Bar を変更する

JetPack Compose を使い簡単にアクションバーを変更する方法があったのでその紹介です。 環境 - compose_version = '1.0.1' - targetSdk 31 - kotlinCompilerVersion '1.5.21' 実装 Action Bar アクションバーとは、端末上部の時間などが表示されている部分…

【JetPack Compose】Image で長方形の写真を正円にカットする方法

元の形が長方形の画像を正円に切り取る際に、地味に調べるのに時間がかかったのでメモしておこうと思います。 [目次] 環境 うまくいかなかった例 その時の写真 改善策 上部分を用いて正円を作る おわりに 環境 - compose_version = '1.0.1' - targetSdk 31 -…

remember の import 時にエラーになる (Jetpack compose)

経緯 Jetpack compose の中で、以下のように remember を使おうとしてました。 var isDisplayed by remember { mutableStateOf(false) } 最初は remember の文字が赤くなっていたので、Alt + Enter を押し自動インポートさせました。 無事 androidx.compose.…

Android Studio でディレクトリが重なって表示される

Android Studio のデフォルトでは以下のように、可能な限りディレクトリを重ねて表示されていると思います。 ところがこの表示の仕方では、重なっている中間層にクラスなどを作ることができず、今までもどかしい思いをしてきました。 そこで今回は、表示方法…

API キーを安全に Android プロジェクトで管理する方法

API キーを(多少)安全に Android プロジェクトで管理する方法についてまとめておこうと思います。 前提 Git でプロジェクトを管理していること Android Studio を使用していること 手順 1. gradle.properties(Project Properties)に API キーを記述キーを…

Kotlin で Cloud Firestore にアクセスする際の注意

Kotlin を使って Firebase の Cloud Firestore からデータを取得する際、データクラスのバインドでエラーが出たのでその解決策をメモしておきます。 [目次] クエリで取得したデータをクラスにバインドさせる MemberPayload のデータクラスの定義 データクラ…

navigation-compose のパラメータの受け渡し方でハマった話

今回は Compose を使用したナビゲーションを使用した際に、ルーティングのパラメータの渡し方でハマった話をしようと思います。 [目次] navigation-compose の使い方 設定 ルートの登録 ルートの呼び出し 今回ハマったところ! パラメータの渡し方 URL など…

Android 実機の画面を PC 上に表示させたい

Android でデバッグしているときに、その画面をPC 上に表示させ、共有や配信を行いたいことがあると思います。 その際に便利な scrcpy というコマンドを見つけたのでメモしておこうと思います。 インストール方法 Mac の方は brew でインストールできます $ …

navController でクラスインスタンスを扱う(Jetpack Compose)

こんにちは、kokoichi です。 前回の記事では Navigation を使った簡単な composable の構成方法について紹介しました。 その際データオブジェクトを引数として渡す方法について苦しめられたので、今回はその方法についてまとめます。 [目次] Navigation 内…

Jetpack Compose で Navigation を利用した View の切り替え

Jetpack Compose で Navigation を利用した View の切り替え こんにちは、kokoichi です。 最近は Android 開発において Jetpack Compose を真面目に学んでいます。 今回は Navigation を利用した View の切り替え方法を学んだので、その方法についてまとめ…