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

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

アプリ個人開発でもまず設計しないとダメ

エンジニア歴3年でアプリの個人開発をしたいと思いました。
最初はyoutubeを見ながら似たようなアプリを作る練習をして、
全部自分で作成できるようになったので設計すっ飛ばして、そのときその時の思いつきで機能を追加したり直したりしてアプリを作っていました。

結果、エラーが起きた時に対応する時間も半端なければ、
設計していないので、本来さくさく作成できるはずのUI作成も思いつきで追加、削除の連続で時間がかかり、
おまけに不要な機能がてんこ盛りのガラクタが出来上がっていた・・・

という結果になりました。

自分がコーダー兼デザイナーであっても、考えていることを紙に書き出して、
どの作業をどの程度やればどのくらいの時間でできるか、ということを把握してないと、

とんでもなく時間かかって、
不要な機能いっぱいのガラクタが目の前にあって、

あれ、自分何でこんな時間使ってた?

とすごい後悔に襲われるので、開発を行う際は

UI周り、フローチャート、DB設計など、適度に細かく計画しておきましょう。

ということが3年目にして今更身にしみました。というお話です。

以下に最近作成中のアプリ

元記事を表示

【備忘録】UnityのAndroidビルドでAPI level 33にしてエラーが出た時はこれをやってみろ!

## はじめに
Google様の「今度からTargetAPILevelを〇〇以上にしてね。古いの使ってたらアプリリリースさせないから」に対応する際、役に立つかもしれない情報を書き留めておく。

## 環境
OS: macOS Ventura 13.0
CPU: M1
Unity: 2021.3.0f1 (2020.3.41f1でも確認済み)

## やったこと
– ProjectSettings > Player > Other Settings for Android にある「Target API level」を 33 に変更
![スクリーンショット 2024-01-19 1.41.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3679129/b13f758a-9e79-aaf6-c87d-edc5d3399525.png)
– /Applications/Unity/Hub/Editor/2021.3.0f1/PlaybackEngines/AndroidPlayer/SDK/platform

元記事を表示

【Android/Java】OkHTTPでDigest認証

## やりたいこと
AndroidアプリからDigest認証で通信したい
OkHTTPを使用することとしたらSingletonで作らないと、メモリを食いまくるようなので、それを意識する

## Step1.実装方法
#### app¥build.gradle
~~~gradle
android {
:(略)
}
dependencies {
:(略)
implementation ‘com.squareup.okhttp3:okhttp:4.11.0’
implementation ‘io.github.rburgst:okhttp-digest:3.1.0’
}
~~~~

#### AndroidManifest.xml
~~~xml

元記事を表示

【Android/Java】Bluetoothペアリング機器の削除(任意のもの以外)

## やりたいこと
製品に付随しているBluetooth機器(例えば、AndroidTVに付随しているBluetoothリモコン)以外のペアリング機器を削除したい。
ネットカフェのPCなど、不特定多数の使用が想定される状況で、利用者がペアリングした機器を、利用終了後に削除したいのが目的での調査メモ

## Step1.実装方法
#### AndroidManifest.xml
~~~xml



【Android/Java】アプリ間データ共有 その2(Android11)

## やりたいこと
アプリ間でデータの共有を行いたい
片方のアプリがプロセスKillされている状態でもデータの参照を行えるようにしたい

以前、非推奨のSharedUserIDを使って実現したが、推奨、かつ簡単に行える実装(SystemProperties)をみつけたので備忘録

## Step1.SystemPropertiesとは
Androidのデバイス動作や設定を制御するキーと値のペアが格納されているもの。
#### ADBコマンド例
~~~cmd
# デバイスのモデル名をシステムプロパティから取得する
adb shell getprop ro.product.model
~~~~

## Step2.実装方法
### SystemPropertiesへの書き込み
任意のキーを指定して、値を書き込む
~~~java
public void writeSystemProperties(String key, String val) {
try {
@SuppressLint(“PrivateApi”)
Class SystemProp

元記事を表示

[Android] BottomNavigationViewをスクロール時に隠す

![](https://velog.velcdn.com/images/rmsxo5678/post/de7304fe-26e4-410e-8206-9e2a671b16b5/image.gif)

# *layout_behavior*
画面をスクロールするとBottomNavigationViewを消して現れることの実装が必要だったが、検索してみるとxml上でも簡単にできると言っているので

“`xml
[Android]GithubActionsでリリースビルドapkをセキュアに作成する

## はじめに
Androidでリリースビルド(署名付き)をGithubActionsでapkを作成する方法を備忘録メモします。
今回は限定公開でアップしたいためapkの作成とします。
https://support.google.com/a/answer/2494992?hl=ja
※aabでもアップできるかもしれない。ドキュメントに記載がないので不明。

やり方は下記のサイトのものを使い手順通りに行います。
https://github.com/r0adkll/sign-android-release
※apk、aabファイルどちらも可能

## セキュアに
keystoreファイル(jks)をリポジトリに入れた状態(コミット)はセキュアではない(privateであればさほど問題ではないが)ので、jksはリポジトリに入れず、解決する対応とします。

## 対応方法

#### 1.jksを作成する
AndroidStudioでツールバーの「Build > Generate Signed Bundle or APK」から作成可能です。

それぞれpasswordやaliasを埋めて終

元記事を表示

Android13以降で L2TP/IPsec VPNに接続する方法

# はじめに
この記事では Android13以降で **L2TP/IPsec** 方式のVPNを簡単に接続する方法をご紹介します。
みなさんも Androidデバイス のVPN設定にて、**「あれ、L2TP/IPsec はどこ?」** と
困った経験があると思います。
その理由は Android12 で 該当プロファイルを追加できなくなり、Android13以降でその使用を規制されたためです。
おそらくセキュリティポリシーの更新によって Android がより安全な VPNプロトコルへの移行を推奨しているからです。
しかし、**L2TP/IPsec** で接続したいときがあるのも実情…
ネットにある情報は特定の条件を前提とした煩雑な内容が多いため、ここではより簡単な方法をご紹介していきます。

今回はWindows経由でVPNに接続する方法を解説します。
要するに Windows PC をホットスポットにします。

# 前準備
+ インターネットに接続された Windows PC を用意します
:::note info
共有方法が Wi-Fi である場合、インターネットを有線接

元記事を表示

#320 2024-03-31 駄菓子 議事録

## [Retaining beyond ViewModels](https://chrisbanes.me/posts/retaining-beyond-viewmodels/)

– Circuitというライブラリ
– Slackが出している
– いわゆるMVIみたいなやつ?React Hooksみたいな感じ?
– ViewModelという概念を使わない
– CircuitInjectアノテーションを使っていい感じにするとStateをComposableとして扱うことができる
– イベント更新する時はforegroundじゃないとダメなのでrepeatOnLifecycleを使わないとダメ
– けどめんどくさいけどcircuitを使えばその周辺の問題(ライフサイクルとか)を考慮しないで済む
– rememberRetainedでプレゼンターのライフサイクルを超えてstateを保持できるよ
– マーシャル??:rememberSavableを用意しないといけない時にSaverとかいうrememberSavableに即した

元記事を表示

Gradleリポジトリの検索条件を設定して、ビルドを効率化

Android Studioで新規プロジェクトを作成した場合に、setting.gradle.ktsのpluginManagementが以下のように作成されるようになっています。

“`setting.gradle.kts
pluginManagement {
repositories {
google {
content {
includeGroupByRegex(“com\\.android.*”)
includeGroupByRegex(“com\\.google.*”)
includeGroupByRegex(“androidx.*”)
}
}
mavenCentral()
gradlePluginPortal()
}
}
“`

Gradleでは複数のリポジトリが記述されている場合、先頭から順にリクエストし、エラーとなった場合は次のリポジトリにリクエス

元記事を表示

mockkでテストを書くときにこれさえ押さえとけばある程度かける

# 初めに
今回はAndroidのテストコードで使うMockkでテストを書くときにこれ知ってればとりあえず読み書きできるよっていうものを紹介していきます
### 本文
`@Before`

これは単純にRespositoryやUseCaseなどの初期化をする部分
“`kotlin
@Before
fun hoge() {
fuga: FugaRepositoy = mockk(relaxed = true)
}
“`

`@Test`

これがある部分はメイン部分でテストをしたい内容が書いてあります

coEvery

coroutine scopeが必要なAPIなどから受け取るデータを作成できます
こうすることで持ってるデータによってしてほしい挙動をしてるかどうかを確認することができます

coVerify

coroutine scopeを使ってる部分のデータが正しいかを確認するためにあります

### 最後に
すごく簡略化して書いているので実際に触ってみてもらうのがいいと思いますが、まだ触ったことのない方がコードと並列して読むと理解しやすいと思

元記事を表示

AndroidStudioのプラグインを使用して要素入力済みのデータを作成する

AndroidStudioのプラグインを使用する事があまりなかったのですが、便利な機能があるので最近調べています。

Jetpack ComposeのPreView表示用やユニットテスト実装にデータをを設定したりすることが多いので便利だと思いました。

# 要素を入力方法

プラグインの入れ方はこちらを参考にしてください。

https://qiita.com/yuta317/items/4599276d5b2e58250364

こちらを使用します

https://plugins.jetbrains.com/plugin/10942-kotlin-fill-class

![スクリーンショット 2024-04-07 20.59.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274615/343a086f-d1b8-7e2a-bc54-a83c629634f6.png)

こちらをインストールいたします。

# 使用方法

まずは作成したいデータの変数定義をします。
`val user = Us

元記事を表示

Androidの面白そうなライブラリ5選

# はじめに
今まで勉強してきて「面白そう」「いつか触ってみたい」「そのうち役に立つかも」と思った内容でも、タイミングが悪かったり、しっかりと時間をとって理解する、使ってみる段階までいかなかったりすると、ウィンドウに残したまま長く放置してしまいがちです。
そのせいで PCにどんどん負荷がかかってしまうので整理も兼ねてメモがわりに記事にしようと思います。

# スポットライト

https://github.com/TakuSemba/Spotlight

参考記事

https://qiita.com/Mosea/items/ae1589b64b21c33fa8bd

# 縦書き

https://github.com/taizan/vjap

参考記事

# 折りたたみレイアウト

https://github.com/alexvasilkov/FoldableLayout

参考記事

https://learn.microsoft.com/ja-

元記事を表示

【kotlin】coroutines-coreに含まれている不要なファイルを除外する方法

# はじめに
一昔前まではRxなどを使用されているプロジェクトがちらほらありましたが、現段階ではほとんどがcoroutineを使用する形で置き換わってきたのではないでしょうか?
coroutineを導入する際にcoroutines-coreをgradleへ追記し使用すると思いますが、このcoroutines-coreにはdebug用のリソースファイルが含まれています。
今回は生成されるAPKファイルにdebug用のリソースファイルが含まれないよう除外する方法を備忘録的にまとめたいと思います。

# coroutines-coreのdebug用ファイルを除外する方法
除外する方法は簡単で、gradleのandroidブロックに以下を追加する形になります。

“`app/build.gradle
packagingOptions {
resources.excludes += “DebugProbesKt.bin”
}
“`

以上で除外完了になります。

# さいごに
今年もKotlin Festが開催されるようですねー!
5年ぶりにオフラインで開催するようなので、伺う予定で

元記事を表示

Flutter で Android をビルドした時に Your project requires a newer version of the Kotlin Gradle plugin. と最新の Kotlin Gradle plugin が必要だと怒られた

# これなに
Flutter で Android をビルドした時に、 `Your project requires a newer version of the Kotlin Gradle plugin.` と言われて、最新の Kotlin Gradle plugin が必要だと怒られた時の対処内容のまとめ。
“`bash
┌─ Flutter Fix ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ [!] Your project requires a newer version of the Kotlin Gradle plugin. │
│ Find the latest version

元記事を表示

折り返し可能かつ改行不能なEditTextのつくりかた

Googleカレンダーのタイトルのような挙動をする入力フィールドを作成したい場合の方法です。
情報が少なく動作する方法を見つけるのに苦労したので残しておきます。

– 端まで入力すると次の行に折り返す
– IMEのActionがDoneとなっており改行はできない

![ezgif-3-5e0291b992.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762653/bc4de0b0-a54a-99c2-08f8-4321fb2bd8d8.gif)

## 結論
コードでEditTextを参照し、次の設定を行います。
“`kotlin
edittext.imeOptions = EditorInfo.IME_ACTION_DONE
edittext.inputType = EditorInfo.TYPE_TEXT_FLAG_MULTI_LINE
edittext.setHorizontallyScrolling(false)
edittext.maxLines = Integer.MAX_VALUE

元記事を表示

Five Must-Know Most Popular Figma to Code Plugins

> This article aims to introduce and compare several leading Figma plugins that convert design drafts to code.

### [I. Codia](https://codia.ai)

[Codia AI](https://codia.ai) can convert Figma designs to production-ready code within minutes for web and app development, just like a human coder. This significantly amplifies [design-to-code](https://codia.ai/design-to-code) efficiency by 10 times or more.

Pros:

– The technology stack supported by [Codia](https://codia.ai) includes:

Web: A ric

元記事を表示

AndroidデバイスをLinuxサーバーに変える (4) チャットサーバーをウィジェットから起動する

# はじめに

前回までにAndroidデバイスを使ってLinux環境を構築しチャットサーバーを動作させるところまで進めた。

https://qiita.com/rairaii/items/cc3771cdb3bff42d9da4

この記事ではTermuxで動作するチャットサーバーをAndroidのウィジェットから直接起動する方法について解説する。この方法を用いることで、デバイスの画面をタップするだけでサーバーを起動できるようになり、より迅速かつ便利にサービスを利用することが可能となる。

これでデモを実行するときにターミナルを開いてコマンドを入力するといった手間を省くことができる。

## Termux:Widgetのインストール

AndroidのウィジェットからTermuxのスクリプトを実行するために[F-Droidアプリ](https://f-droid.org/ja/)からTermuxのプラグインの1つである`Termux:Widget`をインストールする

## ウィジェットを使ったチャットサーバーの起動

Termuxを用いて、チャットサーバーを簡単に起動するためのシ

元記事を表示

AndroidデバイスをLinuxサーバーに変える (3) chatgptを使ったチャットサーバーを動作させる

# はじめに

前回はAndroidでLinux環境を実現するTermux上でflaskを用いてWebサーバーを動作させた。

https://qiita.com/rairaii/items/183bab10869ab52c0531

この記事では、langchainライブラリを使ったchatgptとのチャットサーバーを構築し動作させる。

# Termuxでチャットサーバを構築する

シンプルなチャットサーバ[githubに用意しておいた](https://github.com/aRaikoFunakami/test_langchain/tree/main)。
## Gitのインストール

チャットサーバのソースコードをgithubからダウンロードするために`git`コマンドをインストールする

“`terminal
$ pkg install git
“`

このコマンドにより、GitがAndroidデバイス上のTermux環境にインストールされる。

## 作業フォルダの作成

プロジェクト管理のための作業フォルダを作成し、そこに移動する。

“`terminal
$ m

元記事を表示

AndroidデバイスをLinuxサーバーに変える (2) flaskでWebサーバーを動作させる

# はじめに

前回はAndroid上でLinux環境を提供するTermuxのインストールとsshでのリモートアクセスまでを確認した。

https://qiita.com/rairaii/items/c45d19179cda01054a0e

今回はAndroid上でLinux環境を提供するTermuxを用いて、PythonとFlaskをインストールし、簡単なWebアプリケーションを作成・実行するプロセスを解説する。Termuxを介して、Androidデバイスを使って、開発環境を構築し、ローカルでWebサーバーを動作させる方法を紹介する。この記事では、Pythonのインストールから、Flaskを使ったWebアプリケーションの開発、実行までをカバーする。

## Pythonのインストール

まず、TermuxでPythonをインストールする。以下のコマンドを実行し、Pythonをセットアップする。

“`terminal
$ pkg install -y python
$ python -V
Python 3.11.8
“`

インストール後、Pythonのバージョンを確認して、

元記事を表示

OTHERカテゴリの最新記事