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

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

Navigationのセットアップ&使い方(Kotlin)

## はじめに

Navigationのセットアップ方法と使い方を紹介します。

## 「Navigation」とは?

Googleが提供しているJetpackのコンポーネントです。
フラグメント間の遷移など、様々なナビゲーションの実装に役立ちます。

## 環境

– OS:macOS Big Sur 11.5.2
– Android Studio:Arctic Fox | 2020.3.1
– Kotlin:1.5.21
– Gradle:7.0.2
– Gradle plugin:7.0.0
– Navigation:2.3.5

## セットアップ

### Navigationのインストール

ルート直下の「build.gradle」にNavigationのバージョンを追加します。

別の記事で紹介する予定ですが、Navigationと併用して「Safe Args」というGradleプラグインを使うことが多いです。
そのため、先にNavigationのバージョンを定数化しています。

“`diff_groovy:/build.gradle
buildscript {

元記事を表示

【Firebase】別アカウント管理のGoogle Playと接続する方法

# TL;DR
Google Playのオーナー or 管理者アカウントユーザーを、Firebaseのプロジェクトに「オーナー」としてメンバー追加して、そのユーザーに接続してもらえばOK

# はじめに
FirebaseのプロジェクトはGoogle Playと接続できます。

[プロジェクト設定] > [統合]の Google Play の箇所

接続すると、Google Playの収益データがFirebase上から利用できたり、Firebase App DistributionのAndroid App Bundle(aab)配信を使えるようになったりします。:sunglasses:

[【Firebaseヘルプ】Google Play を Firebase にリンクする](https://support.google.com/fi

元記事を表示

AndroidでHiltをつかう

## Android Studioでの設定
基本的にはチュートリアルの通りなのだが、少し違っているのでとても迷う。
https://developer.android.com/training/dependency-injection/hilt-android
以下に設定すれば通る
## build.gradle
“`
dependencies {
・・・
classpath ‘com.google.dagger:hilt-android-gradle-plugin:2.38.1’
classpath “org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.21”
}
“`
## app/build.gradle
“`
apply plugin: ‘kotlin-android’
apply plugin: ‘kotlin-kapt’
apply plugin: ‘dagger.hilt.android.plugin’
・・・
dependencies {
        ・・・

元記事を表示

Android(Termux)でプログラミング【code-server】

# Termuxを公式サイトからインストール
https://f-droid.org/packages/com.termux/

Google Play ストアのTermuxはバージョンが古いので、公式サイトからダウンロードしたapkを開いて、インストールしてください。

# TermuxにUbuntuをインストール
https://github.com/termux/proot-distro

起動用のシェルスクリプトを作成しておくと良いでしょう。

# code-serverをインストール、起動
https://github.com/cdr/code-server

Termuxの端末でテザリングするとcode-serverが起動できません。

キーボードはCodeBoardがおすすめです。
https://play.google.com/store/apps/details?id=com.gazlaws.codeboard

元記事を表示

compileSdk・minSdk・targetSdkの違い(Android)

## はじめに

`compileSdkVersion` ・ `minSdkVersion` ・ `targetSdkVersion` の違いがいつもわからなくなるため、まとめることにします。

## 注意

ここからは末尾の `Version` を省略します。

## 各プロパティの違い

各プロパティの違いを紹介します。

### compileSdk

> compileSdkVersion specifies the Android API level Gradle should use to compile your app. This means your app can use the API features included in this API level and lower.
>
> compileSdkVersionは、Gradleがアプリをコンパイルする際に使用するAndroid APIレベルを指定します。これは、アプリがこのAPIレベル以下に含まれるAPI機能を使用できることを意味します。

引用: https://developer.android.c

元記事を表示

Flutter調べ備忘録

## この記事は?
Flutter調べたことメモ。
全体像の俯瞰用にシンプルにまとめ。
(気が向いたら随時更新)

## 記載範囲は?
– 言語の特徴
– UIに関して
– アーキテクチャ
– メリデメ

## 言語の特徴
### dart
– オブジェクト指向
– 静的型付け

JAVAライク。

## UIに関して
### 大きく2種類
#### material
Android、MaterialDesignのUI。
[Material Components widgets](https://flutter.dev/docs/development/ui/widgets/material)

![スクリーンショット 2021-08-19 043125.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700755/220a2fee-92cf-494c-a920-6ffe379634d5.png)

#### Cupertino
iOSなUI。 iOSでよく見るUI部品は大体ある。
[Cupertino

元記事を表示

Universal Android Music Player(UAMP)のカスタマイズ (音源の変更 その1)

#はじめに
Android用アプリのプログラミングを学ぶため、Googleが公開しているサンプルコード **Universal Android Music Player(UAMP)**をカスタマイズしてみます。
まずは、端末(アプリを実行するスマートフォンなど)内の好きな音楽ファイルを再生するように変更します。

#環境
####PC
MacBook Pro 16
2.3 GHz 8コアIntel Core i9
16 GB 2667 MHz DDR4
macOS Big Sur ver.11.5.2

####開発用SW
Android Studio 4.2.1

####Target Device (Virtual Device)
Category: Phone
Name: Pixcel 2
Resolution: 1080×1920 420bpi
API Level: 28
Android: 9.0
CPU: x86

#Universal Android Music Player (UAMP)
###UAMP概要
[UAMP](https://github.com/andro

元記事を表示

画面遷移と値受け渡し

##はじめに
今回は画面遷移と値の受け渡しについて実装していきます。

![スクリーンショット 2021-08-18 22.42.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/704865/f5be9147-150a-4724-907f-38149cadc727.png)

リストの各行に格納されている商品をアップすると画面が遷移し、
タップした商品が遷移先の画面に表示する機能を実装していきます。
![スクリーンショット 2021-08-18 22.45.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/704865/91c0bd3d-c309-3094-3482-f0f26a7901b8.png)

##実装
“`Kotlin:string.xml

画面遷移サンプル
「Android Gradle plugin requires Java 11 to run.」エラーの対処法

アプリを実行すると以下のエラーが発生しました。

“`
An exception occurred applying plugin request [id: ‘com.android.application’]
> Failed to apply plugin ‘com.android.internal.application’.
> Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8.
You can try some of the following options:
– changing the IDE settings.
– changing the JAVA_HOME environment variable.
– changing `org.gradle.java.home` in `gradle.properties`.
“`

# 対処法

`Java 11`を選択することで解決します

## `And

元記事を表示

Androidブラウザ(実機 or エミュレータ)からローカルサーバ(localhost)にアクセスする

# はじめに

MacのPCにローカルサーバでnode.jsのアプリをnode appで実行している場合に、実機の端末からアクセスする方法です。
node.jsの場合はポートが3000がデフォルトです。

# 端末からアクセス

実機もPCももちろん同じネットワークに接続します。

“`
http://localhost:3000/
“`

このようにしてPCからであればアクセスできますが、実機やエミュレータでは、何もしないとエラーとなります。

“`
http://127.0.0.1:3000/
“`

これも同じくエラーです。

エミュレータと実機でアクセス方法が違います。

## エミュレータの場合

“`
http://10.0.2,2:3000/
“`

これでアクセスできます

## 実機の場合

まずPCでchromeブラウザを立ち上げて下記のアドレスにアクセスします。

“`
chrome://inspect/#devices
“`

![スクリーンショット 2021-08-18 19.02.58.png](https://qiita-image-sto

元記事を表示

Unity HubがインストールしたAndroid SDKでAPI levelが不足する場合 (Windows)

# 課題
プロジェクトが要求するAPI levelの`platform-tools`がUnityのビルトインSDKに含まれていない場合、最終的に`UnityException: Required API level ~.`というエラーになります。

# 解決例
## 環境
– Windows 10
– Unity 2020.3.16f1 (LTS)
– Target API Level: Android 11.0 (API level 30)

## 対処
– Unityの`Preference`で、ビルトインSDKのインストール先を特定します。
– `C:\Program Files\Unity\Hub\Editor\2020.3.16f1\Editor\Data\PlaybackEngines\AndroidPlayer\SDK`
– 管理者権限のあるコマンドプロンプトを開き、カレントディレクトリを`SDK`フォルダに移動して、`tools\bin\sdkmanager “platform-tools” “platforms;android-30″`を実行します。

元記事を表示

ActionBar Titleの色を変更する方法(Kotlin, Android)

> 参考になった動画
> [Change Title Color of Action Bar in Android Studio](https://www.youtube.com/watch?v=HjUeYiOEoWc)

## 端的に
タイトルの色を変えるには“`themes.xml“`内にある“`

“`
この手間だけで“`titleTextColor“`がちゃんと動きTitleの色が変更される。

元記事を表示

Unityでスマホアプリを開発する

Unityでスマホアプリを開発するために必要なものを全てドキュメントに残します。
また、自分自身Unityを使ってのアプリ開発は初めてなので少しでも疑問に思ったことは全てメモしていこうと思います。
完成するまでに随時アップデートします。

## プロジェクト作成までにするべきこと
### Unityのインストール
Unity Hubをインストールするのが良いでしょう。
そこからUnityをインストールします。
※ここでiOSとandroidのモジュールを追加すること
※後からでも追加できます。
(自分は後からモジュールを追加しました)
※日本語化したい人は日本語化のモジュールもインストール

![スクリーンショット 2021-08-18 9.21.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/615043/d9c21920-81ed-f69c-1524-0fe5dae42418.png)

こうなっていればOK!

### 2Dと3D両方のスクリーンが出てくる場合はどうすればいい??
→一旦2Dで

元記事を表示

Building Mobile Apps at Scaleの自動テストの部分で知らなかったところメモ

世界的な会社がどうテストしているのか、ちょっとテスト関連のベストプラクティスを探して読んでみています。

個人的にはrobot pattern testingはちょっとした収穫でした。
またかなりSnapshot testが行われていることが印象的でした。
詳しくは以下

https://www.mobileatscale.com/

(ユニットテストは大事的なのが書いてあるんですが、知らなかったところ中心で書いているので飛ばしています)

### Snapshot test

IntegrationテストやUI/E2Eテストの特別な形。スクショをとって、保存されている画像と比較する。データは通常モックが使われる。違うとテストが失敗する。失敗の理由として画像が使われる

Snapshot testのUberでの事例

* iOSではFacebookからiOSSnapshotTestCaseを引き継いで、多用していた
* デバイスのサイズが多様だったのでAndroidで適切なスナップショットを行うための労力がこのプラットフォームでは高すぎると考えたのでAndroidでは行わないことを

元記事を表示

Composeで@Previewを付けたのにプレビューが表示されない件

# 何が起きたのか
Jetpack Composeを導入したのに、@Previewを付けてもプレビューが表示されません。
下記の画像を見てください。正確には、本来Android Studioの画面右側に表示されるはずの「Code / Split / Design」のタブが表示されません。
![スクリーンショット 2021-08-16 20.13.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/610553/2e84d1d8-2ca1-6295-0db9-bd8338df7bd0.png)

# 環境

* Android Studio Arctic Fox | 2020.3.1

“`app/build.gradle
dependencies {
implementation(“androidx.compose.ui:ui:1.0.1”)
implementation(“androidx.compose.ui:ui-tooling:1.0.1”)
implementatio

元記事を表示

MockKでトップレベル関数をモックする

[MockK](https://mockk.io/)でトップレベル関数をモックする方法をメモがてら記載します。

こんな `log` 関数があった場合。

“`kotlin:Ext.kt
package com.example

fun log(message: String) {
Log.d(“log”, message)
}
“`

こんな感じで書けばOKでした。

“`kotlin:ExtTest.kt
class ExtTest {

@Test
fun test_log() {
mockkStatic(“com.example.ExtKt”) // ①
every { log(any()) } just runs // ②

// ・・・テストコード・・・
}
}
“`

# ポイント:bulb:
① `mockkStatic` を使用し、トップレベル関数が定義されているクラスを指定します。
今回の場合、

– package が `com.example`
– ファイル名が `Ext.k

元記事を表示

Androidで簡単にアニメーションを追加する【Lottie】

##Lottieって何?
Android,iOS,React Nativeで、アニメーションを画像のように簡単にアプリに埋め込める!
アニメーションはGIFアニメのようなもので、人様が作成してくれたのを選んで使える!
サイズや繰り返し設定など変更可能!
宿泊関係のサービスで有名なAirbnbが作成しており無料で使える!
![lottie.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252283/7aa20eba-bbec-79ca-ad7e-d7e275ee71a5.gif)
※サンプルはローディング画面に入れてみました

##リンク集
公式トップ
https://airbnb.design/lottie/
Android GitHub
https://github.com/airbnb/lottie-android
Androidドキュメント
http://airbnb.io/lottie/#/android
サンプルアプリ
https://play.google.com/store/apps/de

元記事を表示

ARCore SDK(Java)の Duplicate class 問題

ARCore の開発を行っていて、困っていた問題が解決したのでメモ

# 発生していた問題
ARCore SDK の内部のクラスが a.a.a という名前となっているため、他の Google ライブラリと競合が発生してしまうことがあった

“`gradle:build.gradle
implementation ‘com.google.ar:core:1.25.0’
implementation ‘com.android.installreferrer:installreferrer:2.2’
“`

“`
Duplicate class a.a.a found in modules jetified-core-1.25.0-runtime (com.google.ar:core:1.24.5) and jetified-installreferrer-2.2-runtime (com.android.installreferrer:installreferrer:2.2)
“`

Github の issue
https://github.com/google-ar/arco

元記事を表示

API Guidelines for Jetpack Composeを読んだメモ

こちらにあるドキュメントです。

https://github.com/androidx/androidx/blob/c53c7d0b219e5142656efb564b818eb651615bf0/compose/docs/compose-api-guidelines.md

ある程度Composeを触ったことがある人向けのドキュメントだと思います。開発チームなどでComposeやっていく人は一読の価値があるかなと思いました。

> The Compose API guidelines outline the patterns, best practices and prescriptive style guidelines for writing idiomatic Jetpack Compose APIs. As Jetpack Compose code is built in layers, everyone writing code that uses Jetpack Compose is building their own API to consume themselve

元記事を表示

UnityのAndroid開発でエラーもなく突然激重になる現象とそれを対処した方法

こんにちは、[ハニカムラボ](https://www.honeycomb-lab.co.jp/)の[おの](https://twitter.com/tkyko13)です.

## 現象や状況
* Unity2020系、Unity2019系で発生
* Unity上のエディタでは発生しない
* 実機(Android6系と7系)で発生確認
* 3種類ほどのタブレット端末で発生
* Android5系のスマートフォンでは発生せず
* 10分から40分画面スリープもなく放置していると発生
* 操作していても発生することも
* 見た目はほぼフリーズしている状態だが、画面遷移など時間が立つと起こるためたぶんすごいFPSが下がっているという状況
* Android Logcatなどでもエラーが発見できない
* ただ、警告がずっと出続けていた(EGL_BAD_PARAMETER)

## 結果

[![Image from Gyazo](https://i.gyazo.com/298fcb4084cc020dc7c2273332039ac7.png)](https://g

元記事を表示

OTHERカテゴリの最新記事