Android関連のことを調べてみた

Android関連のことを調べてみた

Strong skipping modeの記事を読んで知らなかったことメモ

この記事を読みます。 基本記事に書いてあることを書いているだけです。何か誤りがあれば教えて下さい。

https://medium.com/androiddevelopers/jetpack-compose-strong-skipping-mode-explained-cbdb2aa4b900

stable unstableとか、Listはunstableになってしまうとかをすでに知っている人向けの記事です。

* **Unstable parameterはinstance equality (===)で見る**
* **stableは今までどおり equalsで見る**

具体的にはこういうケースで救われる。以下だと、favoriteが変わったときに、Listがunstableなので、ArticleList()がもう一度走る(recompose)されてしまっていたが、 `===` での比較が変わっていないので、スキップされるようになる。

“`kotlin
@Composable
fun ArticleList(
articles: List

, // List

元記事を表示

JetpackComposeで指定した文字列の色を変更する

## はじめに
どうもこんにちは、最近Kotlin始めました。普段はUnityを触っています。
今回はテキストフィールドの一部文字列の色を変更するという処理を書いてみたのでまとめました。

## JetpackComposeで文字列の色を変更
テキストフィールドに入力する文字列が一定文字数を超えた場合、超えている分だけ赤くするコードを書きました。

↓こんな感じ↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2882297/2eb72dde-68fc-bac1-976c-a0e980dc9e40.png)

## VisualTransformationを使用
VisualTransformationとは簡潔に言うと、Input TextFieldの見た目を変更するときに使用するインターフェイスです。[^1]
このインターフェイスを継承したクラスをTextField関数の引数に持たせ、InputFieldの見た目を変更することができます。

## 手順① テキストフィールドの一部配色

元記事を表示

Wear OS アプリの審査を通すために対応したこと 2024

## はじめに
Wear OS アプリの審査を通すために対応したことをまとめる

## 対応したこと
### スクリーンショットから透過色の削除

ストアに提出するスクリーンショットの背景に透過色が含まれているとリジェクトされる。Android Studio でスクリーンショットを撮影すると背景に透過色が含まれてしまうので、手動で透過色を塗り潰して再提出する必要がある

### スクロールバーの追加

`ScrollView` や `RecyclerView` な

元記事を表示

【Flutter】AndroidでImage.networkが表示されない問題を解説

# はじめに

こんにちは!
Flutter開発を始めて2年目となるエンジニアです!

ある日、後輩から「Image.networkが表示されないです。」っていうヘルプが飛んできました。
終業間近だったためとりあえずプッシュしておいてもらい、その場は終わり、デバッグしてみると確かに画像が読み込まれない赤の罰が表示されていました。

今回の記事では、これの原因と解決方法を解説します。

# こんな人に読んでほしい

* Flutterでの開発を行っている方
* Flutterでの開発を検討している方
* Flutter初学者の方

# エラーコード

“`
SocketException: Failed host lookup: ‘{project}’ (OS Error: No address associated with hostname, errno = 7)
“`

# 原因

結論、Androidエミュレータからネットワークに接続して画像を表示させようとした際に、AndroidManifest.xmlで接続許可をしないといけませんでした。

未経験のエンジニアがExcep

元記事を表示

Android「このデバイスでは、暗号化されたデータにアクセスできません」の対処

# 問題
Androidで
「このデバイスでは、暗号化されたデータにアクセスできません」
「セキュリティ上、このデバイスでは暗号化されたデータにアクセスできなくなりました。Google アカウントへのログインに最近使用したデバイスを使ってもう一度お試しください。詳しくは、g.co/OnDeviceEncryption をご覧ください。」
と表示されて認証が進まない。
他のアプリはコレに失敗してもSNS認証になるだけだったがメルカリのビットコインはこの認証が必須。

# 解決
日本語でググってもろくな情報がなかったが端末言語設定を英語にしてメッセージを再度表示させググったら一発だった。

1. https://myaccount.google.com/security でバックアップコード発行、再設定用連絡先などを設定する
1. https://takeout.google.com/settings/takeout 及び
https://passwords.google.com/options でChromeデータやパスワードをエクスポートしておく
1. https://chrome.

元記事を表示

Jetpack composeでうまいことエラーハンドリングをしたい

# はじめに
今回はJetpack composeで実装するときに複数種類のエラーをハンドリングするときのアイデアを出していこうと思います
### 本文
今主流となっている`seald class`でUIの状態を分岐させてそれによって出すCompose部品を出しわけるのが今の主流化と思いますが、そこにネスとしてエラー用の`seald class`をはやすというものです。

そうすることで読み込みのエラーや状態更新のエラーなどを分岐させることが可能になりそれにより表示を分岐させることもできます。

ただし、ここで懸念すべきところは分岐処理が増える分Compose関数内のコードが多少なりとも増えてしまうという点です
### 最後に
今回はアイデアの提案のみですが、何か改善点などがあればコメントいただけると参考になります

元記事を表示

【Android】Kotlinのテストコードを書いていてエラーになった時の話【Kotlin】

# エラー内容
“`
Exception in thread “Test worker @coroutine#1” java.lang.IllegalStateException: Module with the Main dispatcher had failed to initialize. For tests Dispatchers.setMain from kotlinx-coroutines-test module can be used
“`

# やったこと
上のエラーを翻訳をかけた感じ、ざっくりいうと
kotlinx-coroutines-test モジュールの Dispatchers.setMain が必要とのこと。

**kotlinx-coroutines-test** で検索をかけてみると

https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-test/

このライブラリが出てきたので追加してみた。

“`php:build.gradle(Module :app)
depe

元記事を表示

Android+RetrofitでHTTP通信するアプリの作り方(その4)

# UIの仮組みとViewModelの導入

[前回](https://qiita.com/aburagirio/items/abebf9a7fadf8ef94dce)の記事でHiltを活用できるようになりました。

それではここからアプリを組み上げていきましょう。

## 目次

– [UIの仮組みとViewModelの導入](#uiの仮組みとviewmodelの導入)
– [目次](#目次)
– [今回の作業内容](#今回の作業内容)
– [ViewModelを追加する](#viewmodelを追加する)
– [ViewModelの定義](#viewmodelの定義)
– [UIを追加する](#uiを追加する)
– [Sealed Interface](#sealed-interface)
– [通信状態に応じてUIを更新する機構を追加する](#通信状態に応じてuiを更新する機構を追加する)
– [MutaleState](#mutalestate)
– [Stateのhoist](#stateのhoist)
– [Mai

元記事を表示

【Android】TextViewの自動サイズ調整に関する落とし穴

# はじめに
TextViewの自動サイズ調整、テキストが動的に変わる場合や少々長い文言を設定しなければならない場合などにおいて非常に便利ですよね。
ただし、この自動サイズ調整には設定を誤ると予期しない結果が生じる可能性がありますので、今回はその点を備忘録的にまとめておこうと思います。

# 自動サイズ調整の落とし穴
まず、TextViewを以下のように設定しているとします。

“`main.xml

“`
一見すると特に問題ないように見えますが、この実装では自動サイズ調整が機能しない

元記事を表示

Unity AndroidのBuild時になるエラーについての対処

Unityで通常の実行ができるのに、AndroidでBuildができなかった時、確認すべきこととBuildするために行ったことを残しておく。

## まず確認すること
コンパイルする対象にEditor用のコードが含まれていないかを確認する。using UnityEditorを使用していたら注意。もしあればUnityのEditorフォルダに移動するか、#if UNITY_EDITOR のオプションを追加ってBuild時に影響がでないようにする。

## アンドロイド関係のエラー
筆者自身もどうしてうまくいくようになるのか深く理解していない部分もあるので実施しするときには自己責任で。

まずはなにはともあれExternal Dependency Managerを使う。Androidに必要なものを調整してくれるやつ
DLサイト

https://github.com/googlesamples/unity-jar-resolver

external-dependency-manager-latest.unitypackageをGitHubからDLする。
Unity上ですでにDLしてあればま

元記事を表示

CircleCIとGitHubでAndroidの自動テスト環境を構築するためのメモ

# CircleCIでAndroidの自動テスト

個人的な勉強でCircleCIとGitHubの連携を試した時のメモです。

おそらく、次回同じことをやろうとした時には忘れているのでメモを残します。

## 目次

– [CircleCIでAndroidの自動テスト](#circleciでandroidの自動テスト)
– [目次](#目次)
– [手順](#手順)
– [GitHubのリポジトリを用意する](#githubのリポジトリを用意する)
– [CircleCIのアカウントを作成する](#circleciのアカウントを作成する)
– [CircleCIとGitHubを連携させる](#circleciとgithubを連携させる)
– [鍵の作成](#鍵の作成)
– [公開鍵をGitHubへ保管する](#公開鍵をgithubへ保管する)
– [秘密鍵をCircleCIへ保管する](#秘密鍵をcircleciへ保管する)
– [スクリプトを修正する](#スクリプトを修正する)
– [circleci-project-setup

元記事を表示

IsarでMap型は取り扱えないので, IsarLinkを使った話

# Isarとは
[Isar公式ドキュメント](https://isar.dev/tutorials/quickstart.html)曰く,**最もcoolなFlutterデータベース**とのこと。

Flutter のために最適化された高速で軽量なオープンソースのデータベースエンジンであり, 他のモバイルデータベースエンジンと比べてはるかに高速で, あらゆるオブジェクトのデータを保存できます。

執筆時現在, Isarが対応している型は以下です。

– bool
– byte
– short
– int
– float
– double
– DateTime
– String
– List
– List
– List
– List
– List
– List
– List
– List

残念ながらMap型には対応しておらず, 複雑なオブジェクトを取り扱う必要がある時に少し困ります。

# IsarLinkとは
`リンクは、例えばコメントの作成者(User)のようなオブジ

元記事を表示

Jetpack Composeでパフォーマンスが良くない書き方を避ける

基本的には「**早すぎた最適化は避けましょう**」が前提にはあるのですが、パフォーマンス的に気をつけた方がいい書き方を紹介します。

## 0. Jetpack Compose の最新バージョンを使用する
書き方の前に、Jetpack Compose は新しいバージョンほどパフォーマンス改善が入っているので、極力新しいバージョンを使いましょう。
– Modifier の Node 化
– Compose 1.7.0 で入る strong skip mode

## 1. derivedStateOf は必要以上に使わない
変更のバッファリングをするためコストがかかる処理なので、頻繁に値が変わるけど結果が変わらなくて recompose を避けたい時だけに使用しましょう。
単純な値変更による recompose で問題ない時は `derivedStateOf` を使う必要はないです。

“`kotlin
tabs.forEachIndexed { index, tab ->
// ❌
val isSelected = remember {
deri

元記事を表示

FlutterFlow GitHub経由でデプロイする際のエラー

## 初めに
### FlutterFlowについて

FlutterFlowは、爆速モバイルアプリ開発を実現する、画期的なノーコードツールです。簡単なアプリなら本当にその日のうちにテストフライトまでが完了していると優れたツールです。
他のノーコードツールと違って書ける、Flutterアプリとして吐き出せる、という点が強みです。
Flutterでできることならなんだってできちゃいます。

https://flutterflow.io/

### GitHubを使った開発が可能

FlutterFlowではコードをGitHubのレポジトリにボタンひとつでプッシュする機能が備わっています。また、それだけではなく、GitHub上のブランチを指定すると、そのブランチのコードを使ってデプロイまでしてくれます。

例えば、僕はFlutterFlowではどうしても修正できない箇所を修正・追加するためにこの機能を使っています。(具体的な手順は下の通り)

1. FlutterFlowからGitHubのレポジトリにプッシュ(flutterflowブランチが作成される)
1. プッシュされたコードをmai

元記事を表示

Skip使ってみた

## Skipとは?
– Swift/SwiftUIを用いてAndroid開発も行えるプロジェクト
– 内部で,Swift/SwiftUIコードをKotlin/Composeコードへのトランスパイルが行われている
– 正確にはクロスプラットフォームではなくSwift/SwiftUIでAndroid開発ができる
– Xcodeへ導入することで使えるようになる(AndroidのためにAndroid Studioは必要)

![スクリーンショット 2024-03-08 15.10.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3688344/bf469a88-afb1-8b4e-59f7-6889eeb431f3.png)

(引用:https://skip.tools/docs/)

## ここがすごい
– Swift Package Manager (SwiftPM) から Android Gradleへのプロジェクトコンバーターも同梱.パッケージ依存関係を自動的に保ってくれ

元記事を表示

ScoopでインストールしたAndroidStudioのアップデート時エラーの対処法

# ScoopでインストールしたAndroidStudioのアップデート時エラーの対処法

一度アンインストールして再インストールするのが確実

* AndroidSDKはDeprecated, android-cltを利用する
1. Android関連アプリをアンインストール
“`
scoop uninstall android-studio android-clt gradle
“`
2. キャッシュを削除
“`
scoop/persist/android-studio
scoop/persist/android-clt
scoop/persist/gradle
~/android
C:\android
./AppData/Local/AndroidStudio
./AppData/Local/kotlin
./AppData/Roaming/AndroidStudio
“`
3. 再インストール
“`
scoop install android-studio android-clt gradle
“`

元記事を表示

Hiltで単体テスト

Androidで、DIで注入した場合にそのメソッドを単体テスト(ユニットテスト)を実施することがあるのですが、情報が正確に記載されてる記事があまりなかったので、記事にしたいと思います。
本来は、Junit5を使いたいのですが、HiltがJunit4を前提にしているため使えませんでした。
そのための制約が色々ありました。

### Gradle

* junit
“`@Rule“`を使用するために必要

* androidx.junit
AndroidJUnit4::classを使用するために必要

* robolectric
“`@Config“`を使用するために必要

“`gradle
testImplementation(“junit:junit:4.13.2”)
testImplementation(“androidx.test.ext:junit-ktx:1.1.5”)
testImplementation(“org.robolectric:robolectric:4.11.1”)
testImplementation(“com.google.dagger:hilt-

元記事を表示

file_pickerでファイルを一つ選択して読み込む

# はじめに
ファイルをインポートする処理を作りたく、ファイルを選択してやりたいなと思い調べたら、[file_picker](https://pub.dev/packages/file_picker)にたどり着きました。
Googleドライブからも読み込めるのでまさにやりたい子ができます。
なお、導入時に注意点があるようなので、[GithubのSetup](https://github.com/miguelpruivo/flutter_file_picker/wiki/Setup)を見ておいた方がよさそう。

今回は、ファイルを一つ選んで読み込む処理を作井精しました。

現時点ではAndroidのみ。
ゆくゆくはiOSでも試すのでその時に記事をアップデートします。

# 導入

導入は以下のコマンドでOK
“`
flutter pub add file_picker
“`
[GithubのSetup](https://github.com/miguelpruivo/flutter_file_picker/wiki/Setup)にAndroidの注意点が書いてありますが、特に何もしな

元記事を表示

Android Studio のコルーチンの概要

# はじめに
コルーチンの学習として、[Android Studio のコルーチンの概要](https://developer.android.com/codelabs/basic-android-kotlin-compose-coroutines-kotlin-playground?hl=ja#0)という、タイマーアプリをサンプルとして作成しながら、具体的にコルーチンの基礎を学べるCodelabを進めて、コルーチンに対する理解を深めます。

本文を記入しつつ、つまづいた部分や気になった部分は本文の間に挟む形で、メモ書き程度にここに記入していきます。

この記事がコルーチンの理解の手助けになれば幸いです。

# 1.始める前に
前の Codelab では、コルーチンについて学習しました。Kotlin プレイグラウンドを使用して、コルーチンで同時実行コードを記述しました。この Codelab では、Android アプリ内のコルーチンとそのライフサイクルに関する知識を利用します。新しいコルーチンを同時に起動するためのコードを追加し、それらのコルーチンをテストする方法を学習します。

<前

元記事を表示

Kotlin のプレイグラウンドのコルーチンの概要

# はじめに
コルーチンの学習として、[Kotlin のプレイグラウンドのコルーチンの概要](https://developer.android.com/codelabs/basic-android-kotlin-compose-coroutines-kotlin-playground?hl=ja#0)というAndroidアプリ開発におけるコルーチンの基礎を説明してそうなCodelabを進めて理解を深めます。今回は特に、launch, async awaitについて、自身でもサンプルコードを記載していきながら理解を深めることに重きを置きます。

本文を記入しつつ、つまづいた部分や気になった部分は本文の間に挟む形で、メモ書き程度にここに記入していきます。

この記事がコルーチンの理解の手助けになれば幸いです。

# 1.始める前に
この Codelab では、優れたユーザー エクスペリエンスを提供するために Android デベロッパーが理解しておくべき重要なスキルである同時実行を紹介します。同時実行とは、アプリで複数のタスクを同時に行うことです。たとえば、アプリは、ユーザーの入力イベン

元記事を表示

OTHERカテゴリの最新記事