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

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

a-5-1-1.Realm DBのライブラリの選定と適用(Gradle)

### a-5-1-1.Realm DBのライブラリの選定と適用(Gradle)

#### 目標設定
[一覧に戻る](https://qiita.com/ryouta33/items/57f5e51a26086151a0da)

#### Github

https://github.com/wakizaka24/AndroidTest

#### テスト実装

“`gradle:build.gradle
buildscript {
repositories {
google()
}
dependencies {
def nav_version = “2.5.3”
classpath “androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version”
}
}

plugins {
id ‘com.android.application’ version ‘8.0.2’ apply false
id ‘com.andr

元記事を表示

a-5-1-2(3).Realm DBのデータ保存と更新、削除(配列以外、配列)

### a-5-1-2(3).Realm DBのデータ保存と更新、削除(配列以外、配列)

#### 目標設定
[一覧に戻る](https://qiita.com/ryouta33/items/57f5e51a26086151a0da)

#### Github

https://github.com/wakizaka24/AndroidTest

#### テスト実装

“`kotlin:RealmTestActivity.kt
package com.example.androidtest

import android.os.Bundle
import android.util.Log
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity
import com.example.androidtest.databinding.ActivityRealmTestBinding
import io.realm.kotlin.ext.query
import k

元記事を表示

[Android] RecyclerView スクロール時にビViewPagerを非活性化

![](https://velog.velcdn.com/images/rmsxo5678/post/a5707960-d1d6-4e34-b65a-1c4c72610b53/image.gif)
# *ViewPager非活性化*

ViewPagerに 特定のRecyclerViewがある部分で他のタブに移動しないように、ViewPagerの動きを無効にする必要がありました。

そのサンプルコードは“`メインアクティビティ内でリサイクラービューをフラグメントに実装したが“`
“`フラグメント内のフラグメントはIncludeで表現されている “`

ViewPagerがタッチされると、そのタッチイベントのx、y座標を取得し、その座標が特定のRecyclerViewの領域内にあるかを確認して、ViewPagerの機能を無効にし、タッチが終了したらスワイプ機能を再度有効にするようにGitHubにコメントで記載していましたが、

サンプルではアクティビティでViewPagerのインターフェイスを設定し、onScrollメソッドが呼ばれるかどうかを決定し、リサイクラービューがスクロー

元記事を表示

Compose Multiplatformで利用できるようになったNavigationを使ってみた

## はじめに

[Compose Multiplatform](https://www.jetbrains.com/ja-jp/lp/compose-multiplatform/)は、[Jetpack Compose](https://developer.android.com/develop/ui/compose/) をベースにKMP(Kotlin Multiplatform)プロジェクトでUIを構築するためのフレームワークです。
ここ最近は、目まぐるしいスピードで進化をしており、Resource周りも共通で実装できるようになっています!
そして、alpha版ではありますが、ついに `Navigation` も利用できるようになりました🎉

実際に `Navigation` を利用したところ体験が良かったため、本記事で紹介します!

## Navigationとは?

[Navigation](https://developer.android.com/guide/navigation)は、アプリ内の様々なコンテンツ間を遷移するためのAndroidでのライブラリです。
このライブラ

元記事を表示

[Android]Build Variant(ビルドバリアント)のあれこれ

今までビルドバリアントについて知らなかったので色々調べたまとめ。
個人的備忘録として記事にします。
この記事はGroovyではなくKotlinでの設定方法を書く。

# ビルドバリアントって?
> ビルド可能なさまざまなバージョンのアプリを表しています。たとえば、コンテンツが限定された無料版と、より多くのコンテンツを含む有料版の両方を作成できます。API レベルまたは他のデバイスのバリエーションに基づいて、異なるデバイスをターゲットとするアプリの異なるバージョンをビルドすることもできます。

とあるように、これを設定しておくと1つのアプリで複数のバージョンを作ることができる。

AndroidStudioでは以下の場所で現在のビルドバリアントを確認できる

* 現在のビルドバリアントの確認。この画像だとdebugが選択されている
packaging.resources.excludesに複数セットする

# 目的
備忘です。packaging.resources.excludesで複数セットするやり方がわからなかったので。

# 環境
– Android Studio Hedgehog | 2023.1.1 Patch 2
– Windows11 Pro

# コード
Android Studioのテンプレートからポチポチしていき、Kotlin DSLを選ぶとデフォルトで次のように記載されています。
“`kotlin
packaging {
resources {
excludes += “/META-INF/{AL2.0,LGPL2.1}”
}
}
“`

javamailを使う関係で、JavaMailライセンスファイルをピックしろって書いてあるので、なんとかぶち込まなきゃいけないのですが、色々調べてもpackaging.resources.excludesに複数セットする方法が見つかりませんでした。合ってるかわかないけど、次のとおりやってみたら、大丈夫そうでした。(ちゃんと理解できてないけど、エラー吐かないから良しとします・・・。)

“`ko

元記事を表示

Android Studioをアップグレードするときのkeymapなどの設定を保持する方法

Android StuidoのJellyfishがstableになりました🎉
iguanaのstable releaseから2ヶ月くらいしか経っていないような気がします。早いですね。

新しい環境は非常にありがたいですが、前回もなんとなくアップデートしてkeymapが移行できず、またダウングレードしてからやり直していたので、簡単ですがメモとして残します。

まずアップデートする前に、設定ファイルをエクスポートしておきましょう。

File -> Manage IDE Settings -> Export Settingsとします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1165483/9c06fea3-d540-14c1-3ac1-20584d0733cd.png)

次にアップデートすると、keymapが変わってしまうことがあるようです。自分はカスタムのkeymapを作っているのですが、強制的にmacOSというテンプレートに戻ってしまっていました。

エクスポートしたのと同じ

元記事を表示

Android Studioの設定を修復する

Android Studio Jellyfishにアップデートしたところ、設定が吹き飛んでしまった。その時のメモ。
– Mac、JetBrains Toolboxでの環境を想定しています

## 手順

1. Android Studioを起動する
2. File → Manage IDE Settings → Import Settings
3. 復元したいAndroid Studioのバージョンのフォルダを選択

`~/Library/Application Support/Google/`以下に設定ファイルが保存されているようです。

元記事を表示

detekt の特定の Issue がプルリク差分から検出されたら、CI を失敗にする(シェル芸)

# 経緯

Kotlin 言語で作られた大規模なプロジェクトがあり、その中に不適切な実装(該当 Issue)が1種類ですが多くの箇所にありました。それらを修正したいですが、すべてを修正する工数は取れなそうです。よって新機能開発や機能改修のついでに、そこも修正できるチーム開発体制を作ろうと思います。Kotlin の静的解析ツール [detekt](https://github.com/detekt/detekt) に該当 Issue を検出させて、[reviewdog](https://github.com/reviewdog/reviewdog) や [Danger](https://github.com/danger/danger) でプルリク差分にそれがあればコメントで指摘する [GitHub Actions](https://docs.github.com/ja/actions) の設定を行いました。しかしコメントも見落とされる可能性があるので、プルリク差分の中に該当 Issue があれば CI を失敗にして、強制力を持たせてみようと思います。

## 注意点

– 言うまでも無

元記事を表示

【Flutter】Patrolでテストを書く(導入まで)

## はじめに
Flutterの[Finder](https://api.flutter.dev/flutter/flutter_test/Finder-class.html)や[WidgetTester](https://api.flutter.dev/flutter/flutter_test/WidgetTester-class.html)ではネイティブビュー(OSの権限許可ダイアログ等)を見つけたり操作することができません。
そこで、[patrol](https://patrol.leancode.co/)を使用して操作できるようにしたいと思います。

本記事では`patrol`を導入し、iOSとAndroidのセットアップまで進めます。

## 環境
・flutter: 3.19.6
・dart: 3.3.4
・patrol: 3.6.1
・patrol_cli: 2.7.0

## `patrol`、`patrol_cli`のインストール

### `patrol`を追加

“`
flutter pub add patrol –dev
“`

※Android SDK

元記事を表示

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名を確認する

  • OTHERカテゴリの最新記事