- 1. Appium環境構築(Android編)
- 2. Socialiteアプリのユーザーエクスペリエンス向上方法
- 3. Composeで下部のみにShadowをつける
- 4. Jetpack Composeでcontextを取得する方法
- 5. Android 14以降の色のコントラスト機能をサポートする
- 6. Android データクラスをJsonに変換する方法
- 7. Android Q (29)以上でWiFi P2Pをする際にbindProcessToNetworkが失敗する場合の解決
- 8. 【Android】ViewAnimatorの高さを子要素に合わせて可変にする方法
- 9. 【Android】WorkManagerを使ってPUSH通知を飛ばす
- 10. android(kotlin)で時刻を毎秒取得する方法
- 11. android studio(kotlin)でメモ帳アプリをつくって見ました。
- 12. Oracle Cloud Infrastructureという名前のアプリ
- 13. MacroDroidでNotionに最速でメモをする
- 14. Appium関連一式をUpdateする
- 15. 【Anrdoid】GitLab CI + Roborazzi でスクリーンショットテストを構築する
- 16. スクリーンショットテストのプラクティスについて調べるメモ
- 17. 【Flutter】FVM(Flutter Version Management)についての説明と導入手順
- 18. Android StudioをWindowsへインストール
- 19. Duplicate class…でビルド出来ない
- 20. 【iOS SwiftUI ↔ Android Jetpack Compose】今こそ移行のタイミングかもしれません 🔥
Appium環境構築(Android編)
## はじめに
本文書は、「Appiumで実機のAndroid端末に接続し、Androidアプリを起動できるようにする」までの環境構築手順をまとめたものである。
## 環境
本文書は、以下の環境で実際に構築にした手順に基づき記載した。
– macOS 13.6.7
– Zsh 5.9また、本文書の手順では、以下のパッケージ管理および、ランタイム管理ツールを使用しています。
– [Homebrew](https://brew.sh/ja/) 4.3.0
– [mise](https://mise.jdx.dev/) 2024.5.18 macos-arm64 (2024-05-19)## 構築手順
### Node.jsのインストール
公式ドキュメントに[システム要件](https://appium.io/docs/en/latest/quickstart/requirements/)としてNode.jsが記載されているため以下のコマンドでインストールする。
“`shell
mise install node@18.17.1
“`### Appiumのイン
Socialiteアプリのユーザーエクスペリエンス向上方法
この記事では、SocialiteというAndroidアプリのユーザーエクスペリエンスを向上させる3つの具体的な方法について解説しています。
## 1. エッジツーエッジデザインの追加
Android 15では、アプリを画面全体に拡張し、ステータスバーとナビゲーションバーを非表示にする機能が導入されました。これにより、ユーザーはより没入感のある、現代的なデザインを体験できます。**手順**:
– **ステップ1**: `WindowInsetsController` を使用してステータスバーとナビゲーションバーを非表示にする設定を行います。
– **ステップ2**: XMLレイアウトファイルで、アプリの主要コンテンツがエッジツーエッジデザインをサポートするように `fitsSystemWindows` 属性を適切に設定します。
– **ステップ3**: 3ボタンナビゲーションの互換性問題に対処するために、必要に応じてパディングやマージンを調整します。## 2. 予測バックアニメーション
予測バックアニメーションは、ユーザーが「戻る」アクションを行う際に、次に表示される画面のプレ
Composeで下部のみにShadowをつける
# はじめに
今回はViewの下部にのみshadowを付けるための拡張関数を紹介していきます
### 本文
基本的にはCardをで囲えば簡単にできますが、そうでないViewに対してなどに使う機会があったので下記をそのまま使ってもらって良しなに調整していただければ使えるものになっています
“`kotlin
private fun Modifier.bottomShadow(
blurRadius: Float,
color: Color,
): Modifier {
return this.then(
drawBehind {
drawIntoCanvas {
val paint = Paint()
val frameworkPaint = paint.asFrameworkPaint()
frameworkPaint.maskFilter =
BlurMaskFilter(
Jetpack Composeでcontextを取得する方法
# 実践
“`
val context = LocalContext.current
“`
これだけでOK# 注意
自分はToastをJetpack Composeで使用するときにこの状況になったのですが、
“`
@Composable
fun MyScreen() {
Button(
onClick = {
Toast.makeText(LocalContext.current, “”, Toast.LENGTH_SHORT).show()
}) {}
}
“`このようにcontextが必要な引数に直接 **LocalContext.current**を入力したところ、以下のようなエラーが出ました。
>@Composable invocations can only happen from the context of a @Composable functionこのエラー内容は、簡単にいると@Composable アノテーションを付けた関数内でのみ呼び出すことができます。
といった内容なので、イン
Android 14以降の色のコントラスト機能をサポートする
Android 14 以降では OS での設定として色のコントラストを 3 段階に設定することができ、Android 14 では 開発者向けオプションでのみ設定可能だったものが、Android 15 以降では正式な機能になります。
この機能は各アプリで対応する必要があるものとなっています。ここではその対応をどのように実装するのかについて書いてます。
色のコントラストごとの見え方の違い デフォルト 中 高 Android データクラスをJsonに変換する方法 データクラスをJsonに変換する方法
`serialization`を使用するので、導入する必要があります。
導入しているプロジェクトが殆どだと思うので割愛します。“`.kt
//必要なインポート
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Jsonval user = User(member = false, userId = 0, userName = “user”)
val userJson = Json.encodeToString(user)“`
`Json.encodeToString`の引数の値へJsonにしたいデータクラスを渡してあげるだけでできます。`userJson`の表示結果
`{“member”:false,”userId”:0,”userName”:”user”}`
Android Q (29)以上でWiFi P2Pをする際にbindProcessToNetworkが失敗する場合の解決
# 背景
Android Q以降から、セキュリティ強化の関係でWiFi接続の切り替えが制限された。
インターネットに接続する目的では接続先WiFiをプログラムから制御することができなくなり、デバイスとのP2P (ネットワークへの接続が不可)に限られるようになった。
さらに、接続したネットワークにアクセスできるのも接続したアプリ内に限られる。この操作はWifiNetworkSpecifierを介して実行できるが、Switchの「スマートフォンに送る」から画像を取得しようとして、数時間ハマったので陥りやすい点をまとめた。
# WiFi P2Pで忘れがちな点まとめ
* AndroidManifest.xmlに権限を設定
“`xml
.
【Android】ViewAnimatorの高さを子要素に合わせて可変にする方法
# はじめに
Android Viewの機能であるViewAnimatorを久しぶりに触ったのですが、Viewを切り替える際に高さが最も高さの大きい子要素に依存する挙動となっており、可変にする為の方法を少し調べる形となったので、今後の備忘録的に調整方法を残しておこうと思います。# ViewAnimatorの高さを可変にする方法
可変にする方法は非常にシンプルで、以下をXMLに追加するだけで実現可能です。“`main.xml
“`measureAllChildrenは、ViewAnimatorのプロパティで、すべての子Viewを測定するかどうかを指定する設定になります。
デフォルトではtrueが設定されているので、非表示の子Viewも含め、すべての子V【Android】WorkManagerを使ってPUSH通知を飛ばす
## はじめに
Androidアプリでアプリからなんらかの操作を契機にPUSH通知を飛ばす(いわゆるローカルプッシュ)について調べる機会があったため、忘れないように記事に残そうと思いこちらを書きました。
## WorkManagerとは何か
非同期的なタスクをスケジュールとして設定・実行してくれるAPIになります。
スケジュールとしても設定方法がいくつかあり、一回限りの実行や繰り返しの実行も設定可能です。
アプリの状態に関わらずタスクをスケジュールし実行できるため、アプリ⇔サーバーが定期的にやり取りするような処理を実行したいときに使われるみたいです。
詳しくは[公式サイト](https://developer.android.com/topic/libraries/architecture/workmanager?hl=ja)を参照ください。今回はそのWorkManagerの一回限りのスケジュール・実行を使ってPUSH通知を行っていきます。
## 実装
### 依存関係の追加
アプリレベルのgradleに以下の依存関係を追加します。
“`build.gradle.kts
depeandroid(kotlin)で時刻を毎秒取得する方法
# はじめ
こちらのアプリをつく際に毎秒時刻を取得するのに手間取ったのでメモがてら書き綴っていこうかなと思います。https://qiita.com/goretzka_/items/52295986d2163f30b11c
# 結論
“`kotlin:ViewModel
private val _data = MutableStateFlow(System.currentTimeMillis())
val data:StateFlow= _data.asStateFlow()
val formatter = SimpleDateFormat(“MM/dd:HH:mm”)
val formattedTimer:StateFlow= data.map {data ->
formatter.format(data)
}
.stateIn(viewModelScope, SharingStarted.WhileSubscribed(),””)init {
viandroid studio(kotlin)でメモ帳アプリをつくって見ました。
## はじめ
2024年4月からkotlinを触り始めて、MVVM?なにそれ?的な感じからnavigationやら、viewModelやらをやって今に至る感じです。
公式のトレーニングをつかって勉強しました。https://developer.android.com/courses/kotlin-android-fundamentals/overview?hl=ja
因みに、個人の方が一つ一つのトレーニングをわかりやすく解説してくれているnoteがあるので、是非参考までに!
https://note.com/haine_rion23
## メモ帳アプリ
![スクリーンショット 2024-05-29 12.36.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3756850/eebc3bc6-804d-8b24-fd64-11069e45efd1.png)### github
https://github.com/REOysd/ToDoApp2
### 概要
主にやりたいことや、書Oracle Cloud Infrastructureという名前のアプリ
先日、スマホにOCI2段階認証用のアプリをAndroid端末に入れようとGooglePlayで「Oracle」と検索したら色々と出てきました。
Fusionとかプリマベーラとかのアプリもあるんですね・・・
で、気になったのは「Oracle Cloud Infrastructure」というアプリ。
![1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2367692/9afc17e0-3c3d-d428-1e43-02f3c9289a27.jpeg)OCIそのまんまの名前ですが、聞いた事が無かったのでとりあえずインストールしてみました。
![2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2367692/46796f32-e39c-240c-bfd8-0653b257c2e1.jpeg)起動するとOCIのロゴが出てきました!
![3.jpg](https://qiita-image-store.s3.ap-MacroDroidでNotionに最速でメモをする
# AndoroidでもNotionにサクッとメモがしたい
どうも、Androidユーザーです。先日こんな記事を見つけました。https://tech-you.jp/notion-onetouch-setting/
テンプレも配布されてて、めっちゃいいじゃんと思ったのですが、ショートカット機能はMac, iPhone限定。。Androidで同じことをやりたくて、調べてみたもののMacroDroidってアプリが使えそうところまでしか見つけられなかったのでこのブログ記事を参考にしつつAndoroid版のNotionの連携機能を真似して作ってみました。
# こうしたらできました
## 下準備([こちら](https://tech-you.jp/notion-onetouch-setting/)を参考に)
– Notionインテグレーションの設定(`token`の値)
– Notionデータベースの作成
– インテグレーションの接続
– データベースIDの確認(`database_id`の値)
– 入力したい列のタイトルプロパティ名の確認(`property_title`の値)
–Appium関連一式をUpdateする
# はじめに
Appiumを使ってAndroid上のChromeアプリを操作するPythonコードを書いていたのですが、開発途中で急に動作しなくなりました。
「Chrome Driverの最新版が見つからない」的なエラーが出たいので、Appium、uiautomator2、Appium-Python-Clientをupdateします。# Update手順
## Appium
“`bash
$ npm i -g appium
“`
## uiautomator2
“`bash
$ appium driver update uiautomator2
“`
## Appium-Python-Client
“`bash
$ pip install -U Appium-Python-Client
“`以上で、Chromeアプリを操作できるようになりました。
# 参考
https://www.seleniumqref.com/introduction/tips/appiumIns_update.html【Anrdoid】GitLab CI + Roborazzi でスクリーンショットテストを構築する
## 概要
Androidアプリの開発において、スクリーンショットテストを行うためのツールとして、Roborazziが有力な候補にあげられます。DroidKaigiや各社の技術ブログでもRoborazziの活用例に関する情報が多く発信されています。
ただ多くの場合は、GitHub Actionsを利用して実現されていることが一般的です。ただ私自身がGitLab CIを利用する状況にあったため、その実現方法に関する情報が不足していました。そこで、本記事ではGitLab CI上でRoborazziを活用したスクリーンショットテストの一例について整理します。
### 前提
– GitLab CIの実行環境が整備されていること
– Linux, Dockerでの実行を想定
– Roborazziのスクリーンショットテストをプロジェクトに導入済みであること
– ネット上に多くの情報があるため、この記事では割愛します### この記事で実現したいこと
– GitLab CIでRoborazziのスクリーンショットテストを実行する
– UI差分をMRにコメントとして投稿する#
スクリーンショットテストのプラクティスについて調べるメモ
私はAndroidでエミュレーター無しでスクショテストができる [Roborazzi](https://github.com/takahirom/roborazzi) というライブラリを作っていて、もう少し周辺について詳しくなっておこうと思いまして、周辺技術のベストプラクティスを薄く広く軽く調べて見ます。
# Jestを使ったスナップショットテスト:
https://www.browserstack.com/guide/snapshot-testing
テストの流れが以下のように書いてあります。
1. 実行して、画面を描画する
1. Captureする
1. 保存する
1. もう一度実行する
1. 比較する
1. 画像をアップデートする比較のところではdiffや比較の画像を出したりする。
以下のtoMatchSnapshot()で、なければ保存したり、あれば比較したりする。
“`js
test(‘should match snapshot’, () =>
{
const data = {name: ‘John’,age: 30,email: ‘john@exam【Flutter】FVM(Flutter Version Management)についての説明と導入手順
# はじめに
こんにちは!
そろそろネタに尽きてきたのですが、
そういえばFVMについての記事を書いてないなと思ったので、まとめてみました◎今回は、HomeBrewでFVMをインストールする方法です。
# 開発環境
[使用端末]
PC: Macbook Air(M1)[開発ツール]
VSCode# FVMとは
FVM(Flutter Version Management)は、Flutterのバージョン管理ツールです。
プロジェクトごとに異なるFlutter SDKバージョンを簡単に切り替えたり、管理したりすることができます。
これによって、異なるプロジェクトで特定のFlutterバージョンに依存する場合でも、問題なく開発を進めることができます。## 主な利点
* プロジェクトごとのバージョン管理
* 各プロジェクトに最適なFlutter SDKバージョンを簡単に設定できます
* 複数バージョンの管理
* 複数のFlutterバージョンを並行してインストール・管理することができます
* 簡単なバージョン切り替え
* コマンド一つでバージAndroid StudioをWindowsへインストール
# 1. Android Studioのダウンロード
[Download Android Studio & App Tools – Android Developers](https://console.firebase.google.com/u/1/?hl=ja)を開き
Android Studio Jellyfish をダウンロードする。# 2. Android Studioのインストール
ダウンロードしたandroid-studio-xxxx.xx.xx.xx-windows.exeを実行する。## 2.1 変更の許可
このアプリがデバイスに変更を加えることを許可しますか?ではいを選択する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/170755/65cddb20-174d-3336-7e1b-4cbe45d39118.png)## 2.2 Android Studio Setup
Welcome to Android Studio SetupでNextを選択する。Duplicate class…でビルド出来ない
app/build.gradleの
以下の行を削除
“`
implementation libs.compose.preview.renderer
“`【iOS SwiftUI ↔ Android Jetpack Compose】今こそ移行のタイミングかもしれません 🔥
私の場合、
Java から Kotlin、Jetpack Compose とやってきましたが。
SwiftUI / SwiftData の Apple 公式チュートリアルをやったあと、
書いてみたら、意外とできたことに驚きました。
![](https://i0.wp.com/android.benigumo.com/wp-content/uploads/2023/11/sc-2023-11-29-at-15.47.24.gif)
移行や両方覚えるのチャンスです。
直感的に書けます。似ています。
一晩でとりあえずはできます。
https://gist.github.com/benigumocom/bd35b6e395ef8e18bd59d92086081dbc
本質的な流儀やテクニックは置いておくとして、
移行や二股のタイミングかもしれません。
それぞれの深さは、
まずは嬉しがったあとに苦しむとして。
関連する記事
OTHERカテゴリの最新記事
- 2024.09.19
JavaScript関連のことを調べてみた
- 2024.09.19
JAVA関連のことを調べてみた
- 2024.09.19
iOS関連のことを調べてみた
- 2024.09.19
Rails関連のことを調べてみた
- 2024.09.19
Lambda関連のことを調べてみた
- 2024.09.19
Python関連のことを調べてみた