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

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

WSL2でAOSPをビルドしてみた

はじめに
ドキュメントがあるので、基本的にはこちらを見たほうがいいと思います
この記事は忘備録です…

https://source.android.com/docs/setup/start/initializing?hl=ja
https://source.android.com/docs/setup/build/building?hl=ja

0.環境
ビルドした環境は以下になります
“`
$cat /etc/os-release
NAME=”Ubuntu”
VERSION=”20.04.6 LTS (Focal Fossa)”

$ uname -m
x86_64
“`

1.wslのメモリの割り当てを変更する

aospは非常に巨大なプロジェクトのため、できるだけ多くのメモリを割り当てることをお勧めします
“`.wslconfig
[wsl2]
memory=32GB
“`

2.必要なパッケージをインストールする

“`sh
sudo apt update
sudo apt-get install git-core gnupg flex bison

元記事を表示

Androidプロジェクトでbuild-logicの整理をしたときのメモ

Androidでマルチモジュールを作ると、build.gradle.ktsの記述を共通化したくなる。業務のプロジェクトでbuild-logicを使って共通化していたものの、はっきり理解できていないところがあったので、[now in android](https://github.com/android/nowinandroid)や[Droidkaigi 2023](https://github.com/DroidKaigi/conference-app-2023)のリポジトリを眺めたりしながら、[個人のリポジトリ](https://github.com/hiroaki404/PublicPlayground/tree/main)を作って探索した。(publicリポジトリなので自由にみていってください)

基本的な使い方はここでは言及せず、気付きについてメモを残す。

## buildSrcのやり方と、convention plugin(build-logic)を使うやり方
convention pluginは、特定プロジェクト用途のpluginのこと。

[どの方法で柔軟にAndro

元記事を表示

WebViewでUserAgentを設定する

# はじめに
今回はWebView内の通信でUserAgentをカスタマイズする方法を紹介していきます
### 本文
`webViewClient.settings.userAgentString`で取得と上書きをすることができます。
そのため、下記のようにするとhogeのみが登録されてしまうので、上書きをしたくないのであれば、取得したものを追加で入れる必要があります
“`kotlin
webViewClient.settings.userAgentString = “hoge”
“`
### 最後に
今回はretrofitではなく、WebViewでの設定方法を紹介しました
どなたかのお役に立てればさいわいです

元記事を表示

ホーム画面のアプリアイコンに通知数などを表示する(バッジ)【Kotlin】

ShortcutBadgerというライブラリを使用して表示させます!

https://github.com/leolin310148/ShortcutBadger

手順は公式のGithubにある通り進めていきます。

# 準備

build.gradleに

“`php:build.gradle
android {

repositories {
mavenCentral()
}
}

dependencies {
implementation “me.leolin:ShortcutBadger:1.1.22@aar”
}
“`
↑を追加

準備の際いろいろ手こずったのですが、詳しくは以下などを参考にしてください

https://zenn.dev/y_mimura/scraps/d75609a474d35c

https://stackoverflow.com/questions/69163

元記事を表示

使えそうなadb command

# 目的
個人でAndroidアプリを作っているが、
デバック用のコマンドをいろいろ調べるのが面倒だな?
じゃあまとめてしまおう!
という完全自分用の備忘録が派生したもの。

そのため、コマンドに偏りがあるかもしれないが、そこはご了承をば。

随時更新予定

## adbコマンドとは
Android Debug Bridge の略。
開発環境でAndroidデバイスと通信するためのコマンドラインツール。
Androidアプリを開発する場合、adbコマンドを使用してAndroidデバイスを操作することが可能。

## コマンド
– 接続されているデバイス表示
“`
$ adb devices
List of devices attached
emulator-5555 device
“`

– アプリのインストール
“`
adb install
“`
※※インストールオプション※※

– testアプリのインストール(-t)
:::note warn
下記のエラーが出る場合のみ
adb: failed to install debug.apk:
F

元記事を表示

Flutter の 2 つのウィジェットについて

## 概要

Flutter の 2 つのウィジェット、StatelessWidget、StatefulWidget についてまとめてみました。
特に StatefulWidget のライフサイクルについて深掘りしてみました。

## StatelessWidget とは

– 状態を持たないウィジェット
– 一度描画されるとその後、状態が変化しない
– 例)固定のテキスト表示、アイコン・画像など

## StatefulWidget とは

– 状態を持つウィジェット
– ユーザーの操作や時間の経過などによって、状態が変化し、見た目や振る舞いが変わる
– 例)チェックボックス、テキストフィールド、カウンターアプリなど

## StatefulWidget のライフサイクルについて

ここでは StatefulWidget のライフサイクルについて深掘りしていきたいと思います。

緑の図形で記載したのが状態、青の図形で記載したのが各状態で呼び出されるメソッドになります。

![スクリーンショット 2024-05-05 10.47.02.png](https://qiita-image-

元記事を表示

navigation-compose にも「Safe Args」が導入されたので検証してみた

## 概要

先日リリースされた、[Navigationライブラリーの 2.8.0-alpha08](https://developer.android.com/jetpack/androidx/releases/navigation#2.8.0-alpha08)から `navigation-compose` でも型安全機能である、 `Safe Args` が導入されたため、検証してみました。
従来の `navigation-compose` では、画面遷移時に引数を渡す際に型チェックが十分に行われず、意図せぬ型エラーが発生してしまう可能性がありました。しかし、 `Safe Args` の導入により、安全に引数を渡せるようになり、アプリ開発における保守性と安全性が大幅に向上します。

## Safe Argsとは?

Navigation Fragment 時代には、`Safe Args` を使用することでデータ渡しを型安全で受け渡しすることができました。

### 実装例

“` HomeFragment.kt
override fun onClick(view: View) {

元記事を表示

IntelliJ IDEAでもAndroid開発できますよ?

# はじめに
みなさんAndroidの開発をされている際、IDEは何を使用されていますか?
もうほとんどの方がAndroidStudioを使っているんじゃないかと思いますが、中にはEclipseを使っているという猛者もいらっしゃるかもしれません。

そんな中で私はフッと疑問に思いました、 AndroidStudioと開発元が同じであるIntelliJ IDEAでもAndroid開発できるんじゃないか、と、、、。

はい、結論から申し上げると、IntelliJ IDEAでもバッチリAndroid開発できます!
そこで今回はIntelliJ IDEAを使用してAndroidの開発環境を構築し、ビルド実行できるようになるまでの手順をまとめてみたいと思います。

# 導入準備
今回の検証はMacを前提としてご説明します。

IntelliJ IDEAでAndroid開発を行う為にはまず、開発環境へプラグインを導入する必要があります。
導入が必要なプラグインは2種類で、以下になります。

– [Android](https://plugins.jetbrains.com/plugin/22989

元記事を表示

Navigation Composeが型安全になったよ

# はじめに

[Navigation 2.8.0-alpha08](https://developer.android.com/jetpack/androidx/releases/navigation?hl=ja#2.8.0-alpha08)で、Jetpack Composeでも型安全なナビゲーションが可能になりました。

https://x.com/AndroidDev/status/1786063099545468993

## Navigation Compose

ナビゲーションは以下の3つのコンポーネントで成り立っています。

– ホスト(NavHost)
現在のデスティネーションを表示するUI要素
– グラフ(NavGraph)
アプリ内のすべてのデスティネーションを定義するデータ構造
– コントローラ(NavController)
デスティネーション間の移動を中央で管理するもの

型安全になることによって大きく変わるのは、デスティネーションを定義するグラフの部分です。

これは、従来のグラフの書き方です。

“`kotlin
composable

元記事を表示

スマホからミュージックファイルを移行する

## きっかけ
某PC不要でスマホにCDを取り込める製品・アプリを使用して音楽を楽しんでいたところ、
スマホのストレージが逼迫してしまったためどうにかデータを保持したま移行を行いたかった

:::note warn
 製品としては下記作業は非推奨のため、
 移行が完全に完了するまでは、移行元のファイルは消さずに作業する
:::

## 作業環境
 ■PC
   OS:windows11
 ■スマホ
  HW:Redmi Note 10T
  OS:android Ver13

## 作業工程
### 0.事前準備
#### 0-1.移動すべきファイルがどこにあるのかを確認する
 スマホの画面から[設定]-[アプリ]-[アプリを管理]を開き、左上の・・・を開き、プロパティ画面を開く

#### 0-2.APK名を確認する
onFieldSubmitted時にテキストをクリアする方法

# 概要
Flutter初心者によるFlutter初心者のための記事になります。
TextFormField使ってonFieldSubmittedを発火させた後に入力した文字消えないの気持ち悪いなと思って調べてみました。

# 実装
TextFormFieldのテキストをクリアするには、TextEditingControllerを使います。

実装方法は下記になります。

“`dart
final _editController = TextEditingController();

TextFormField(
controller: _editController,
onFieldSubmitted: (text) {
// 〜〜〜〜〜〜〜
_editController.clear(); // TextFormFieldのテキストをクリア
},
),
“`

実際の動きはこんな感じになります。
![qiita.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/

元記事を表示

【Android】アプリ署名時の証明書情報を確認する

Androidアプリの署名時の証明書の情報(ハッシュ値など)を確認する方法を記載します。

# 環境

この記事の作業は、以下の環境で実施しました。

– macOS Ventura
– Android Studio Iguana 2023.2.1 Patch 1
– Android SDK Build-Tools 34.0.0
– OpenJDK 17 (OpenJDK Runtime Environment Corretto-17.0.10.7.1 (build 17.0.10+7-LTS))

# 署名の確認方法

## `apksigner`を使う

apksignerは、Android SDKに付属しているツールです。
v2以降のスキームを使用した署名がされている場合はこちらを使う必要があるようです。

インストールされているBuild-Toolsのバージョンによってパスは変わりますので適時置き換えてください。

“`sh
$ ~/Library/Android/sdk/build-tools/34.0.0/apksigner verify –print-certs -v

元記事を表示

Dagger Hiltを使いましょう

Androidで依存関係の注入(Dependency Injection : DI)を行う場合、第一候補に上がるのは**Dagger Hilt**だと思います。

https://developer.android.com/training/dependency-injection/hilt-android?hl=ja

公式ドキュメントも充実しており、Codelabも提供されています。ただ、私の場合、自分のアプリにどうやって適用すればいいのかなかなかイメージができず、理解するのにかなり苦労してしまいました。
こういう説明をされていれば自分も理解が捗ったかもしれない、という内容を書いてみようと思います。
ただの自己満足なので、逆に分かりにくかったらごめんなさい。

# インターフェイスと実装を分離する

依存関係の注入を使おうとする動機を端的に言えばインターフェイスと実装を分離したい。ということだと思います。
たとえば、以下のようにRepositoryクラスを定義して

“`kotlin
class FooRepository {
override fun doSomethi

元記事を表示

[Android] ViewPager2 無限スクロール

![](https://velog.velcdn.com/images/rmsxo5678/post/399c2b7c-d33a-4b57-8c40-7ce679bbd002/image.gif)
# *無限スクロール*

APIを通じて画像を読み込んで、読み込んだ画像とテキストを無限スクロールできるようにするために、画像とテキストビューの位置がそれぞれ異なるため、アイテムを別々に作成して設定しました。

インジケータは読み込む画像の数に応じて設定される必要があり、TabLayoutMediatorを使用すると無限に増えてしまうため、コード内で実装する必要がありました。また、ボタンを作成して、クリックすると画像が切り替わるようにしました。

コールバックを通じてメイン画像の位置を通知し、テキストとインジケータを設定します。

APIで読み込む画像は数が増える可能性があるため、サンプルでは内部画像でビューモデルやデータクラスなどは削除されており、静的ですが、アイテムの数に応じて動的に変更し、状況に応じて修正する必要があります。


## *ViewPager2*
MainFr

元記事を表示

【Flutter】Androidでhttp通信を許可する方法

## はじめに

開発の段階ではdev環境のサーバーを用意して、そこに対してAPIを投げて通信するのが一般的だと思います。
しかし今の現場でバックエンドとフロントエンドで繋ぎこみを行う際に、
まずはフロントエンドのローカル環境で試して成功を確認→サーバーにデプロイすることとなりました。
この時にhttp通信となるのですが、Androidでは次のエラーが出て上手くいきませんでした。

“`
Error: SocketException: Connection refused (OS Error: Connection refused,
errno = 111), address = localhost, port = 52604
“`
結果的にこのエラーを解消して無事にhttp通信を許可させることができましたので、
その方法をまとめてみたいと思います。

### 筆者の経歴

– UIKitでのiOSアプリケーション開発の学習9ヶ月
– SwiftUIでのiOSアプリケーション開発学習4ヶ月
– Flutterでのモバイルアプリケーション開発3ヶ月

### 記事の対象者

– A

元記事を表示

androidデバイスのGPUを使ってTensorflow liteを高速にする

# AIを使うならGPUは使わないと
androidでAIモデルを使用する場合、デフォルトではCPUのみで実行することになります。
もしデバイスに**GPU**(Graphics Processing Unit)が入っている場合、GPUを使用することで**処理を大幅に高速化できます**。

たとえば、Google Pixel 7aでYolov8を実行した場合、
**CPUでは 0.9秒
GPUでは 0.2秒**
で実行されます。

# GPUDelegate

デバイスのGPUを使うためには、TensorFlowLiteの**GPUDelegate**を設定します。
TensorFlowLiteのInterpreterを初期化するときに、オプションにGPUDelegateを加えるだけです。

(ちなみに、NNAPIDelegate(NeuralNetworkAPI)というのもありますが、これは自分の環境(GooglePixel7a)ではCPUと変わりませんでした、)

# 方法

### 必要なライブラリのインストール

“`gradle:build.gradle
implemen

元記事を表示

最近ManjaroでAndroid emulatorが起動しない件について

## 起きている現象

2024年の3月辺りから、Manjaro(おそらくArchLinuxも)でAndroid emulatorが起動しない問題が発生しました。

IntelliJやAndroidStudioから起動しようとするも起動しません。

ターミナルから起動して起動時のログを確認すると、Segmentation fault (コアダンプ)となりました。

## 原因

Manjaro Forumに同じ現象について書かれていました。
https://forum.manjaro.org/t/segmentation-fault-on-android-emulator-because-of-latest-qemu-update/157548

どうやらqeumの最新バージョンによるバグとのこと。
Vukanがうまく動いてくれないようです。

## 解決方法

2つあります、どちらの方法でも解決しました。
通常であれば2つ目の方法、設定汚したくない時やグラフィックが重いものを動かす場合は1つ目の方法を使うとよいかと思います。

1. ハードウェアレンダリングからソフトウェアレンダリン

元記事を表示

【個人開発】Android アプリ開発初心者が Google Play に 14 回リジェクトされた話

# はじめに
初めまして、まみめです。
私は 2023 年の 9 月に Android アプリ開発を始めて今日まで 3 回リリースを行ってきました。
初めてのアプリ開発は大変難しく試行錯誤しながらなんとかリリースを行ってきました。
しかし、3 個目のアプリのリリースでなんと Google Play に 10 回以上のリジェクトを受けてしまい、かなり解決に苦しみました。
多くは私の知識・技術・注意力の不足によるものです。Android アプリ開発に慣れている人であれば当たり前の内容ですが、始めたばかりの人にとって少しでも助けになればと思い、この記事を書きました。皆様の助けになれば幸いです。

# リリースしたアプリの概要
### リリースしたアプリ
『カラオケ楽曲ガチャ』

https://play.google.com/store/apps/details?id=com.karaoke19.karaokegacha&hl=ja&gl=US

![スクリーンショット1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.

元記事を表示

暗号化SharedPrefarenceの書き方

# はじめに
今回はローカルでデータを持っておく時に使うSharedPrefarenceの暗号化バージョンの書き方を紹介していきます
### 本文
早速コードですが下記になります。
実際に保存するときは`sharedPreferences.edit().putString()`で保存することができ、読み込むときは`sharedPreferences.getString()`でアクセスすることができます
“`kotlin
private val sharedPreferences: SharedPreferences

init {
val masterKey = MasterKey.Builder(context)
.setKeyScheme(MasterKey.KeyScheme.AES256_GCM)
.build()
sharedPreferences = EncryptedSharedPreferences.create(
context,

元記事を表示

Flutter で Android と iOS のスワイプして戻る画面遷移機能を無効化する

# なにこれ
この戻る機能を無くしたいので、それを実装した時のメモを書く
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2819748/82a1a37c-2c3f-7b0d-1883-297374b3cf65.png)

# 解決方法
`PopScope` を利用して `canPop: false` を実装するだけで大丈夫でした。

### Before
“`dart
class _HomeViewState extends State {
int selectedIndex;

_HomeViewState({Key? key, required this.selectedIndex});

@override
Widget build(BuildContext context) {
return Scaffold(
// コードが続く
“`

### After
“`dart
class _HomeViewState ex

元記事を表示

OTHERカテゴリの最新記事