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

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

RenderComのスピンダウン回避の為にAndroidを使用した話

# [Render.com](https://render.com/)とは?
[Render.com](https://render.com/)は雑に言うと[Heroku](https://jp.heroku.com/)みたいな物です。

Herokuは無料枠が消えましたがRender.comはまだできます。

(ここからは詳細な話。趣旨とは離れるので興味のない方はスキップしてください。)

Renderは5つのサービスを提供しています。
– ありふれたウェブサービス
– 静的サイト
– プライベートサービス
– バックグラウンドワーカー
– Cronジョブ

また、下記の物も使用できます。
– PostgreSQL
– Redis

## 無料枠について
一部のサービスのインスタンスは無料で作れます
– webサービス
– PostgreSQL
– Redis

が、制限として下記の物があります。
– 15分アクセスが無いと停止します(スピンダウン)。停止時にアクセスされると1分ぐらいかけて再起動されます
– つまり15分に1回はアクセスすればよい
– 毎月750時間までしか

元記事を表示

richeditor-android 使ってみた

# はじめに
https://github.com/wasabeef/richeditor-android?tab=readme-ov-file

↑こちらのライブラリを使ってみたところ、提供元に書かれていない内容で使えそうなものがあったので記事にしておこうかと思います。
# 準備

提供元の指示の通り build.grableに以下を追加します。

“`
dependencies {
implementation ‘jp.wasabeef:richeditor-android:2.0.0’
}
“`

# 実装

“`

“`
layoutにRichEditorを実装し、Fragment側で使えるようにします。

このままの状態でも普通のEditTextのように扱え

元記事を表示

Gradleでカスタムタスクを定義する

## はじめに
Androidアプリ開発をしてる時に、主にビルドやライブラリの管理の時にbuild.gradleを触るかと思います。

私自身はこれまで雰囲気で使っていたのですが、それは良くないなと思っています…
そもそもGradleってなんなんだということすらしっかり理解できてなかったので、
今回はGradleをインストール・カスタムタスクの作成・実行というところをやってみたので、まとめていきたいと思います。

## Gradleとは
JavaやKotlin等を使ったプロジェクトのビルド自動化ツールになります。
コードのコンパイルやテスト、プロジェクトで使われている依存関係の管理を担って、ビルド作業を自動で行ってくれます。

対応する言語としては、以下の言語をサポートしているようです。([Gradle ユーザーマニュアル](https://docs.gradle.org/current/userguide/userguide.html))
– Android Java
– Kotlin Multiplatform
– Groovy
– Scala
– Javascript
– C/C

元記事を表示

Android15 16KB Page size対応

# 概要

ページサイズは、OSがメモリを管理する方法を決定する単位です。小さいページサイズは、メモリ管理のオーバーヘッドを削減できますが、より多くのメモリフラグメントが発生する可能性があります。一方、大きいページサイズは、フラグメント化を削減できますが、メモリ管理のオーバーヘッドが増加します。

Androidは従来、4KBのページサイズを使用していましたが、Android 15では、デバイスが16KBページサイズをサポートする場合、オプションで16KBページサイズを使用できるようになりました。
なお、iOSはずいぶん前から16KBサイズに対応しています。

# 対応

Java/Kotlinだけでプロジェクトが構成されている場合、特にやることはないです。NDK、C/C++を用いたコードを含む場合(.soファイルがapkに含まれる)対応が必要になります。
対応の概要は、公式に詳細が記載されていますが、用いるビルド設定において、16KBを有効化するフラグを付けて再ビルドを行います。
一例ですが、NDK buildを用いて構成されている場合、以下のフラグ地を設定するだ

元記事を表示

Android 15 に備えてテキスト入力がある画面を edge-to-edge 対応する

Android 15からedge-to-edgeが強制されるようになります。

https://developer.android.com/about/versions/15/behavior-changes-15?hl=ja

現在、Android Studioで新規プロジェクトを作成するとedge to edge対応のサンプルが作られるように、ひとまず従来と同等の表示をさせるの難しくありません。
しかし、以下のように、テキスト入力がある画面で、画面下部に送信などのボタンがある画面において、ソフトウェアキーボードが表示されたときは、それに合わせてボタン部分もせり上がらないと一度キーボードを非表示にしないとボタンが押せないという状態になってしまいます。

|||
|–|–|
|![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155171/714eb0b2-2783-c3ce-7ba8-54d033727c55.png)|![](https://qiita-image-store.s3.ap-northe

元記事を表示

Android Studio, Xcode でのアプリローカライズ方法

Android Studio には jetpack compose, Xcode は SwiftUI を使ったプロジェクトがある状態です。

## 作業環境
2024/7/13 現在
### Android Studio
Android Studio Koala
使用しているプロジェクト: Jetpack Compose で作成したアプリ

https://developer.android.com/studio

### Xcode
Xcode 15
使用しているプロジェクト: SwiftUI で作成したアプリ

https://apps.apple.com/us/app/xcode/id497799835

## Android Studio
1. プロジェクトファイルの中から string ディレクトリを探します
2. 選択した状態で右クリックをします
3. メニューから open translations editor をクリックします

元記事を表示

gradle の依存関係で aar を明示的に指定する

あるライブラリの依存関係を書いたところ、アップロードされているライブラリは`aar`であるにもかかわらず、`aar`ではなく、`jar`ファイルを探しに行ってしまいエラーとなってしまう状況に遭遇しました。
これの原因はライブラリの公開情報に不足があるなどが考えられますが、利用者側で修正することはできないので、gradleの記述でどうにかしなければなりません。

## `@aar` をつける

以下のように依存ライブラリを文字列で指定している場合は、バージョン名の後ろに `@aar` をつけて、`aar` を参照するように指定することができます。

“`build.gradle.kts
implementation(“com.example:foo:1.2.3@aar”)
“`

## `ext` を指定する

依存ライブラリをセクションごとの情報に分解して指定している場合は、`ext`パラメータとして`aar`を指定します。

“`build.gradle.kts
implementation(group = “com.example”, name = “foo”, versio

元記事を表示

[Android] Roomライブラリの入れ方

ローカルデータベースであるRoomを入れようとしたんですが、ハマったので知見を残しておきます。

build.gradle.kts(Module :app)に入る

“`
plugins {
id(“com.android.application”)
id(“org.jetbrains.kotlin.android”)

id(“kotlin-kapt”)
}
“`
“`
dependencies {
implementation(“androidx.core:core-ktx:1.13.1”)
implementation(“androidx.lifecycle:lifecycle-runtime-ktx:2.8.3”)
implementation(“androidx.activity:activity-compose:1.9.0”)
implementation(platform(“androidx.compose:compose-bom:2023.08.00”))
im

元記事を表示

StateListDrawalbe の state_pressed で表示を切り替える xml を Jetpack Compose に書き換える

## 概要 

Android View の時に以下のような [StateListDrawalbe](https://developer.android.com/guide/topics/resources/drawable-resource#StateList) xml の state_pressed で表示を切り替えて表示することがよくあった。

これを Jetpack Compose に書き換える方法のメモ。

“`xml



元記事を表示

Android: ビルド時にktlintFormatが実行されるようにする

n番煎じではありますが2024年時点のAndroidプロジェクト向けの記録を残しておきます。

:white_check_mark: Kotlin
:white_check_mark: Jetpack Compose
:white_check_mark: Gradle バージョン カタログ (libs.versions.toml)
:white_check_mark: Kotlin DSL (buid.gradle.kts)

### Dependenciesの追加と設定
ktlint gradle pluginを導入します。
ついでにcompose向けのlint checkも入れておきます。
ライブラリやプラグインのバージョンは公式サイトで最新を調べて設定します。

“`libs.versions.toml
[libraries]
compose-lint-checks = { module = “com.slack.lint.compose:compose-lint-checks”, version.ref = “1.3.1” }

[plugins]
gradle-ktlint

元記事を表示

FlutterでAndroidのビルドが失敗する

少し手間取ったので忘備録として記載します。

## 現象
AndroidStdioをアップデート
いつものようにAndroidエミュレータを選択してビルドするとエラーが起きた
“`
FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ‘:app:compileFlutterBuildDebug’.
> A problem occurred starting process ‘command ‘/Users/{userName}/fvm/versions/3.16.0/bin/flutter”

* Try:
> Run with –stacktrace option to get the stack trace.
> Run with –info or –debug option to get more log output.
> Run with –scan to get full insights.

* Get more help at https

元記事を表示

DateTime変換時に気をつけたいこと

# はじめに
今回は、最近日付変換実装時に詰まった事象を紹介していこうと思います。
### 本文
今回自分が詰まった内容としては`String`で帰ってきているAPIの返却物を`DateTime`に変換するときに、`z`が入っている場合にエラーになってしまうというものでした。
`DateTime`の`z`は協定世界時を表しています。
ただ`z`をFormatterに渡すだけではエラーになってしまうわけです。
そこで解決策は以下のようになります
“`kotlin
// 協定世界時の中でもどこなのかを第二引数として指定してあげないといけません
DateTimeFormatter.ofPattern(“EEE, dd MMM yyyy HH:mm:ss z”, Locale.ROOT)
“`
### 最後に
z自体は漏れてないはずなのになんでだ??となって多少時間を取られたので備忘録として残しておきます
どなたかのお役に立てれば幸いです

元記事を表示

AndroidのWi-Fiテザリング環境でネットワーク内のデバイスを全て表示したい

AndroidのWi-Fiテザリング環境では, 特定のデバイスに割り当てられるプライベートipアドレスを固定することは(おそらく)できない. そのため,Wi-Fi経由でRaspberry Pi等のデバイスにSSH接続したいときはipアドレスを突き止める必要がある.
# 準備
Windows Subsystem for Linuxを使用できるようにして,「fping」をインストールしておく.
~~~
sudo apt install fping -y
~~~
# スクリプト
~~~showNetworkDevices.bat
@echo off
ipconfig | findstr 192.168
SET adress=
SET /P adress=”入力してください:”
wsl fping -s -g 192.168.%adress%.0 192.168.%adress%.255> nul 2>&1
arp -a | findstr 192.168
pause
~~~
任意のフォルダに.batの拡張子をつけて保存して実行する.
# 仕組み/動作

1. ipconfigコマンドを実行し

元記事を表示

RetorofitでGenericsを使おうとしてParameter type must not include a type variable or wildcardが発生した時の記録

## やりたかったこと

サーバーにログを送信するAPI。
ログの種類によってPayloadが変わるRetorofitのIFをジェネリクスにして楽したい。

“`kotlin
interface SampleApi {
@POST(“log/”)
suspend fun postLog(
@Body
log: LogData
): Response
}

@JsonClass(generateAdapter = true)
data class LogData(
@Json(name = “event_type”)
val eventType: String,
@Json(name = “payload”)
val payload: T
)

interface Payload {
val id: String
}

@JsonClass(generateAdapter = true)
data class Notif

元記事を表示

UnityでAndroid13から14へアップデートする際に起きたこととその解決法

# 始めに
Android13から14へアップデートする手順は、
ProjectSetting>OtherSetting>Target API Level を33から34へ変更。
ビルド時に34用のSDKが無いとエラーが出るのでそのままUpdateを選択。

32から33はこのままで問題なかったが、今回は起動時にクラッシュするようになってしまった。
エラーと解決した方法を載せていく。

# AndroidStudioをインストール
「GooglePlayConsoleのリリース前レポートにエラーは出るが、中断したというエラーしかなく詳細は分からない」ということがあった為、[インストール](https://developer.android.com/studio?hl=ja)
Logcatにログが出る為、鮮明にエラーが分かった。

# エラー① No pending exception expected: java.lang.NoSuchMethodError
Logcatに以下のエラーが出た。
AssetPackManagerでメソッドが見つからなかったというエラー。
“`
No

元記事を表示

Jetpack Compose で Strong skipping mode を有効化してみる (Compose Compiler 1.5.14)

手元のプロジェクトで[Strong skipping mode](https://developer.android.com/develop/ui/compose/performance/stability/strongskipping)を試すために変更した設定内容をメモしておきます。

## 手元の環境
– Android Studio Koala | 2024.1.1
– Kotlin 1.9.24
– Compose Compiler 1.5.14
– Compose Bom androidx.compose:compose-bom:2024.06.00

## app/build.gradle

“`groovy
android {
kotlinOptions {
freeCompilerArgs += [
“-P”,
“plugin:androidx.compose.compiler.plugins.kotlin:experimentalStrongSkipping=true”,

元記事を表示

[Android]Jetpack Compose Bottom navigation

![](https://velog.velcdn.com/images/rmsxo5678/post/2864f065-780c-4d41-af85-651fa17995ad/image.gif)

既存のXMLでボトムナビゲーションを開発する場合、該当アクティビティのxmlにボトムナビゲーションとNavHostFragmentを設定し、xmlフォルダにnavigationを追加して開発を進めます。しかし、Jetpack Composeでは宣言型UIとしてKotlinコードで記述するため、コード量も減り、整合性が高まります。

## 📌 プロジェクト設定

#### 1. libs.versions
![](https://velog.velcdn.com/images/rmsxo5678/post/3a076dc8-b156-47d2-b003-86d1e5b3b94b/image.png)

![](https://velog.velcdn.com/images/rmsxo5678/post/67aa00cf-c277-4a00-8999-1ccd1ecf9c6d/image.p

元記事を表示

by rememberと= rememberの違い

# はじめに
今回はJetpack Compose実装時になんとなくで使われていそうなby rememberと= rememberの違いを紹介していきます
### 本文
まず、前提として=はご存知の通り代入ですが、byは委譲になります。
ではcompose内で使われているrememberと合わせた時にどうなるのかを紹介していきます。
まず、=ではremember{}で宣言したラムダ内の値を初期値として保持します。
byは先ほど記載したようにremember{}に処理を委譲しています。
そのため。、remember{}の内部がstateなので初期値はstateでないといけません。
逆に=は以上をしていないのでどんなクラスでもOKになります
# 最後に
普段はなんとなくで使われていそうなrememberの使い方による違いを紹介していきました。
基本的にはrememberで持つ値は再描画に使うものなのでbyを使うのが正しい気がします

元記事を表示

【UE5】Google Play Consoleの警告に対応する

# はじめに
先日、弊社のアプリのバージョンアップを致しまして、無事完了したと思いきやGoogle Play Console君から警告が出ました。
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2987446/d3125a87-92a5-d549-2f61-0e737124a940.png)
> 6 より前のバージョンの Play Billing Library を使用したアプリの公開や更新は、上記の日付から Google Play Console でブロックされるようになります。

Google Play Console でブロックされるようになります・・・?
そして警告君のターンはまだ終わっておらず、2つの警告を召喚されました。
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2987446/cabdd2f3-c687-0e20-5dbb-51792b48c1e1.png)
![3.png](https

元記事を表示

camerax使用時に気をつけたいこと

# はじめに
以前、カメラの実装をComposeでした際に軽く詰まったところを消化していこうと思います
### 本文
https://developer.android.com/media/camera/camerax/preview?hl=ja#scale-type
上記にあるようにカメラのPreview Viewを実装するときはカメラの比率を変えることができないようになっています。
そのため、デザインに合わせた表示するにはBox等で無理やりカバーをしてあげる必要があります。
“`kotlin
Column(modifier = modifier) {
Camera(
useCase = useCase
)
Box(
modifier = Modifier
.fillMaxWidth()
.background(Color.White)
) {
Spacer(

元記事を表示

OTHERカテゴリの最新記事