Android関連のことを調べてみた2023年02月08日

Android関連のことを調べてみた2023年02月08日

AndroidのUIとステートホルダークラス

# はじめに

最近、Adaptive Layoutというライブラリを開発しています。

https://github.com/takagimeow/adaptive-layout

このライブラリを開発していて、UI StateをViewModelで管理すべきなのか、それとも他の方法で管理すべきなのか迷っていました。
というのも、このライブラリではHiltを使ってリポジトリなどをDIすることが基本的にはないため、そういった場合にViewModelは少し冗長なのではないかと感じていました。

そこで、改めてAndroidにおけるUIとはどう定義されているのか、そしてAndroidでは状態をどう捉えていてどのパターンではどの管理方法がベストなのかを少し調べてみたのでメモとしてまとめてみました。

参考程度に読んでいただけると幸いです。

# UIとは

データレイヤから取得されたアプリの状態を視覚的に表現したものを指します。
具体的にいうと、この言葉はアクティビティやフラグメントなどのUI要素を指しています。

:::note warn
ここでいうUI要素は具体的な実装からは独立した用語

元記事を表示

Rubyのバージョンを管理する方法

# 初めに
今回は、自分が仕事をしてるときに必要だったRubyのバージョン管理方法を紹介してこうと思います
### 本文
まず、バージョン管理ツールの`rbnev`をインストールします
“`terminal: rbenvのインストール
brew install rbenv
“`
次に、特定のRubyバージョンをインストールするときに必要となる`libyaml`をインストールします
“`terminal: libyamlのインストール
brew install libyaml
“`
全て終わったら下記のコマンドで適用されてるバージョンを確認しましょう
“`terminal: rubyのバージョン確認
ruby -v
“`
必要なバージョンではなかった場合は下記のコマンドでインストールすることができます
“`terminal: rubyの欲しいバージョンをインストール
rbenv install 3.2.0
“`
最後にインストールしてきたバージョンを適用させましょう
“`terminal: rubyのバージョン適用
rbenv global 3.2.0
“`

###

元記事を表示

自作のAndroidライブラリを手軽に全世界に公開する

# はじめに

最近、Adaptive LayoutというJetpack Compose用のライブラリを公開しました。

https://github.com/takagimeow/adaptive-layout

Androidライブラリの開発と公開を行うことが自分にとっては初めての体験だったため、どのように公開すれば良いのか試行錯誤を繰り返していました。

そんなときに出会ったのがJitPackというサービスです。
このライブラリは、JitPackを使って公開を行なっています。

はじめてAndroidライブラリを公開するにあたり、ものすごく簡単にAndroidライブラリを公開できてしまいました。
この体験をみなさんにもぜひ共有したかったので、今回は忘備録としてまとめてみることにしました。

# JitPackってなに?

Jitpackは、JVMとAndroidプロジェクトのために存在するパッケージリポジトリです。
Gitプロジェクトをオンデマンドでビルドして、すぐに利用可能なアーティファクトと呼ばれる`jar`や`aar`を提供してくれます。

Jitpackでは、プロジェクト

元記事を表示

【Flutter】Firebaseと連携時にエラー

# 初めに
Flutterで個人的に開発途中、Firebaseと連携しアプリをビルド
したところエラーが発生。。

ちょっとみたこと無いエラーだったので
備忘録として記録。

## エラー内容
どうやらappフォルダ直下のbuild.gradleに何かありそう。。

“`
FAILURE: Build failed with an exception.

* Where:
Build file ‘~/flutter_sample/android/app/build.gradle’ line: 29

* What went wrong:
A problem occurred evaluating project ‘:app’.
> Could not find method id() for arguments [com.google.gms.google-services] on project ‘:app’ of type org.gradle.api.Project.
“`
場所を教えてくれている。。
素直にbuild.gradleを確認。。

“`app/build.gr

元記事を表示

プラグインを使ってSVGからJetpack ComposeのImageVectorを生成する

# 概要
svg画像からJetpack ComposeのIcons.Default.PersonのようなImageVector画像をプラグインを用いて生成する方法です。

# 解決したいこと
– SVG画像をJetpack Composeの[androidx.compose.material.icons](https://developer.android.com/reference/kotlin/androidx/compose/material/icons/package-summary)のIconsのような感じで使えるようにしたい
– drawableにvectorを追加したくない
– painterResourceを使用することなくsvgをIconとして使えるようにしたい

## なぜSVG画像をJetpack ComposeのIconsのような感じで使えるようにしたいのか
Iconsのような感じで使えるようにしたい理由としては下記の理由があります。
– painterResourceを使う方法はAndroidに依存してしまうので、Compose Desktopなどでこの方法を

元記事を表示

Drawableに2色の異なる色を描画する方法

こんにちはandroidでアプリ開発を学習中のみのむしと申します。
今回は、Drawableの中に2色表示を行うボタンを描画しましたので、
作成方法等を備忘録として残したいと思います。

1.円形2色ボタンの作り方

“`xml




元記事を表示

クラッシュリティクスをSlack通知する(10分で設定できるヨ)

# はじめに

毎朝毎朝、手作業でクラッシュリティクスを確認している明田です。
確認してはクラッシュが出ていない。
クラッシュが出ていない
クラッシュが…..

み、見つけた!クラッシュだ!!と本来喜んではいけないのに高ぶる気持ちを抑えられません。
まるで事件現場を発見したどっかの少年探偵団みたいな気持ちです。
![コナン.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1967088/37ca6674-df89-2804-d3db-3f7ce6560b77.jpeg)
そこから犯人(原因)探しをし修正してクラッシュ解決となるのですが、なんといっても
– 手作業での確認作業が面倒
– 発見して課題化したのに誰かが解決済み
– これは連携ミス。
– 確認が属人化してしまっている
– 運用しているサービスが多いと確認数が増える

など確認作業には多くデメリットが存在します。

くそー何か何かいい方法は…
ざわ…何かいい方法はないのか。
ざわ…:bulb:!!
圧倒的閃き・・・!僥倖

元記事を表示

【初心者向け】Flutter, SolidityでDappsを作る方法 (Metamaskとも連携)

今回の記事では、Solidity & Flutterを使って、Dappsを作る方法を解説します。

アプリの内容としては、「アプリ→メタマスクに接続→口座にトークンを発行する」というFaucetアプリを作るというものになっています。
画像ではこんな感じ。
Cannot run program “git”: error=2, No such file or directory というエラーを解消した方法

今回はAndroidStudioで プロジェクトをビルドした際ビルドエラーになったものを解消した方法を記事にします。
色々検索をかけた内容では この方法が出てこなかったため、今後のためにも記事に残しておきたいと思います。
もしこの記事を参考にする人は、他の方法を試してからでもいいかもしれません。

# 解決方法
AndroidStudio上方のメニューの中から **Tools**→**SDK manager**→**Android SDK**→**SDK platforms**と進みプロジェクトに必要なSDK インストールします

![スクリーンショット 2023-02-03 18.23.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2394054/d5df5195-390f-8bec-b6ec-8fa9cdf3fb51.png)

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

元記事を表示

【Unity】NRealで録画しようとすると「Permission Deny」と出る

# はじめに
こんにちは、ユーゴです。今回は、NRealの開発をしていたときに起きた問題を紹介します。
ゲームのデモ動画を撮ろうとした時、「VideoCaptureExample」を導入したまでは良いが、録画しようとすると「Permission Deny」と出てエラーが出ました。小一時間調べましたが解決策は出ず、自力でAndroidのPermission(権限)の設定を調べて直しました。

# 環境
Unity 2021.3.4f1
NReal Light (dev kit)

# 問題
NRealで録画しようとすると「Permission Deny」と出る。

# 解決
AndroidManifest.xmlに権限を記述します。

(1) UnityのProjectウィンドウの「Assets > Plugins > Android > AndroidManifest.xml」を探して開きます。なければこの通りのディレクトリとファイルを作成します。
(2) AndroidManifest.xmlの中はたぶん以下のようになっていると思います。

“`xml:AndroidManifes

元記事を表示

AndroidでバックグラウンドでAWS IoTメッセージを待ち受ける

以前の投稿で、Androidにおいて、UDPメッセージを待ち受けるバックグラウンドサービスを作成しました。([AndroidでバックグラウンドでUDP受信を待ち受ける](https://qiita.com/poruruba/items/01731d425b6e658fc56f))
今回は、AWS IoTすなわちMQTTのメッセージを待ち受けるバックグラウンドサービスを作成します。
それだけだと面白くないので、独立でサービスを起動し、AIDLを使って別のAndroidアプリケーションからサービスを操作し、メッセージを送受信できるようにします。
以下に構成をまとめます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261826/60de546a-7aa6-47d7-02a9-e8d0128223e1.png)

バックグラウンドサービスを独立に立ち上げるので、同じAndroid内の複数のアプリケーションで共用できます。
また、AWS IoT CoreをMQTTブローカとして使うので、他の

元記事を表示

Android Studioで出力されるAPKに任意の名前をつける

Android Studioのビルド時に”app-release.apk”から毎回リネームするのが面倒なので、デフォルトで名前をつけたい。
ここでは、リリース時は”MyAndroidApp-v1.x.x-20230204-131212.apk”という名前をつけるようにする。デバッグ時はもとの”app-debug.apk”にする(なにもしない)。

### 開発環境
Android Studio Dolphin | 2021.3.1 Patch 1
Gradle version 7.3.3

### 変更箇所

“`gradle:(project)/app/build.gradle

buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile(‘proguard-android-optimize.txt’), ‘proguard-rules.pro’
}
// ここから追加

元記事を表示

アリババ クラウド: 企業は 2023 年に AI とブロックチェーンにクラウドを活用する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3121454/c2029d74-9285-d8ca-8c8b-f85fc5cc7088.png)

アリババ クラウドは、特に 2023 年の顧客のデジタル化をサポートするために、国内のさまざまなセクターでデジタル変革をサポートするというコミットメントを繰り返しました。

eunoiamedia の情報源によると、Alibaba Cloud Intelligence Indonesia のカントリー マネージャーである Leon Chen 氏も、インドネシアのすべてのビジネス セクターに対するこのコミットメントを強調しました。 2016 年からインドネシア市場にサービスを提供しており、インドネシアで 6 年間、アリババ クラウド パートナーのデジタル エコシステムを開発するためにより多くのリソースを投資することを約束してきました。

また、Alibaba Cl

元記事を表示

DroidKaigi2022のRobotTestRuleを紐解いてみた

# はじめに

Androidでのインテグレーションテストを行う際に役立つテストルールを作成したくて、DroidKaigi2022のリポジトリにある`RobotTestRule`を眺めていました。

“`kotlin
class RobotTestRule(
private val testInstance: Any
) : TestRule {

val composeTestRule = createAndroidComposeRule()
override fun apply(base: Statement?, description: Description?): Statement {
return RuleChain
.outerRule(HiltAndroidAutoInjectRule(testInstance))
.around(composeTestRule)
.apply(base, description)

元記事を表示

ContentProviderを使って別のアプリ間でデータをやりとりする

2023/02/06追記: 以下の方法は別のアプリ間でデータをやりとりできますが、それはapkの署名が同じである場合に限るようです。
異なる署名間のアプリでは、この方法だけではContentProviderのデータを読み取ることができませんでした。
セキュリティ的にはそりゃそうだよね〜という感じです。

データを提供する側のアプリ: ContentProviderを実装
データを読み取る側のアプリ: ContentResolverのAPIを呼び出す

## データを提供する側

“`xml

【Flutter】AndroidでiOS風の画面遷移とスワイプによるバックを実現する

# はじめに
Flutterはクロスプラットフォームなフレームワークですが、Flutterでモバイルアプリを開発していて、Android・iOSという二つのOSで画面遷移時の処理を統一するのに少し工夫が必要だったため共有します。
本記事ではAndroidにおいてiOS風の画面がスライドするようなトランジションエフェクトと、スワイプによる画面バック処理の実装について紹介します。
Androidバックキー押下時に何か処理を実装していた場合、そのままではスワイプによる画面バック動作が無効になってしまうので、その解決を試みました。

# 目標
AndroidでiOS風のトランジションと「スワイプで前の画面に戻る」動作を共通で実装させる。

# 実装

実装の内容は大まかに以下となります。

1\. AndroidでiOS風の画面遷移をさせる
2\. バックキーに処理を設定する
3\. バックキー押下時の処理とスワイプによるバック動作を併存させる

## 1\.AndroidでiOS風の画面遷移をさせる

Flutterのコードを読むと、以下のようにOSによって異なる画面遷

元記事を表示

Dagger Hiltで使えるアノテーションメモ

# 初めに
今回は個人的に覚えておいた方がいいDagger Hiltのアノテーションを紹介していこうと思います
### 本文
Binds

@Bindsはインターフェイスのインスタンスを提供するときにどのImplを使用するかを知らせる

Provides

@Providesはメソッド内でインスタンスを生成して注入

Qualifierch

@Qualifierh同じ型に複数種類のバインディングを提供するためのもの(枝分かれみたいに使える)

Named

@Namedは名前をつけるため
### 最後に
今回は備忘録程度に自分がHiltのアノテーションで勉強したことをまとめてみました
誰かのお役に立てれば幸いです

元記事を表示

【Expo】ImagePickerで画像を複数枚選択する方法

# はじめに
個人開発中にImagePickerを「Expo ImagePicker 複数枚選択」とググっても「ImagePickerでは複数枚選択できない」とか「MediaLibraryでできる」という記事しかでてこないので記事を書くことにしました。

記事の最後にExpoで個人開発したアプリを紹介しているのでもしよければダウンロードお願いいたします!!?

# 前提
* SDK45以上
* expo-image-pickerインストール済み

# 結論
下記のようにするだけでした。
“`react
import * as ImagePicker from “expo-image-picker”;
~~
~~
const result = await ImagePicker.launchImageLibraryAsync({
mediaTypes: ImagePicker.MediaTypeOptions.Images,
allowsMultipleSelection: true, // これをtrueに設定する
quality: 1,
});
“`
これだけでした。

元記事を表示

targetSdkVersion 33 対応でやったこと

# 概要

[Android Studio を Electric Eel にアップデートしたときにやったこと – Qiita](https://qiita.com/koichi-ozaki/items/79d5cba03eaa3eb14f85)

こちらの対応を行うときに `targetSdkVersion 33` へ上げたので対応した内容を記載する。

# やったこと

– compileSdkVersion 更新

“`diff_gradle:app/build.gradle
– compileSdkVersion 31
+ compileSdkVersion 33
“`

– targetSdkVersion 更新

“`diff_gradle:app/build.gradle
– targetSdkVersion 31
+ targetSdkVersion 33
“`

– plugin の書き方変更(変更する必要なかったかも)

“`diff_gradle:app/build.gradle
-apply plugin: ‘co

元記事を表示

ARサンプルアプリ

https://github.com/iwata-koji/AR_Sample

元記事を表示

OTHERカテゴリの最新記事