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

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

macOS Big SurでAndroid Studioの Emulatorが起動した瞬間にクラッシュする問題の回避策

#はじめに
macOS Big Surを使用していると、Parallelsが使えなくなったり、Visual Studio 2019が落ちることが多発する様ですが、Android Studioもその中の1つです。
タイトルの通り、Android StudioからEmulator(バージョンに関わらず)を起動すると、Android Studioもろともクラッシュしてしまいます。

スタックオーバーフローでも同様の問題が確認できます。
https://stackoverflow.com/questions/63148352/emulator-does-not-start-c066d201-unhandled-exit-1d

私の環境では上の解決法では治りませんでしたが、ごちゃごちゃやっているうちに解決法を見つけたので紹介しようと思います。

#環境
macOS Big Sur Beta 11.0 Beta(20A5343i)

Android Studio 4.0.1
Build #AI-193.6911.18.40.6626763, built on June 25, 2020
Runt

元記事を表示

kotlinとjavaで画面遷移したい!

# はじめに…

この記事は[4個前の記事](https://qiita.com/sato-na/items/cc23f9b1db9c948dc00e)で書いた、

**7日間毎日記事投稿の5日目**

になってます

使うコードは下に貼りますが、このアプリの詳しい機能はその4個前の記事をご覧ください!

– java版 : https://github.com/sato-na/guruwake_java

– kotlin版 : https://github.com/sato-na/guruwake_kotlin

↓ここからが今回の記事の本題です↓

# それぞれの言語で画面遷移をするには…

## 画面遷移の基礎

– javaの場合

“`java
Intent intent = new intent(遷移前のアクティビティ.this, 遷移後のアクティビティ.class);
startActivity(intent);
“`

例)

“`java:MainActivity.java
Intent intent = new Intent(MainActivity.thi

元記事を表示

Android,KotlinでRealm

– Android Studio 4.0.1
– Kotlin: 1.3.72
– realm:6.0.2
– Windows 10

## インストール

“`gradle:bundle.gradle(project)

buildscript {
dependencies {
classpath “io.realm:realm-gradle-plugin:6.0.2”
}
}
“`
“`gradle:bundle.gradle(app)
apply plugin: ‘kotlin-kapt’
apply plugin: ‘realm-android’
“`

## 初期化

Applicationクラスを作成し、その中でrealmの初期化をする

“`kotlin:App.kt
package jp.co.sankosc.sample

import android.app.Application
import io.realm.Realm

class App : Application() {
override fun onCr

元記事を表示

【Unity Hub】「モジュールを加える」が表示されない

UnityAndroidでJDKが見つからないくて、HUBから「モジュールを加える」で解決できるとあるが、それが表示されない。
Unity20194.5.1LTS,Unity20194.8LTSで発生

これで⇓解決できそうなのでメモ

【Unity Hub】「モジュールを加える」が表示されない方へ
https://koshishirai.com/unity-add-module/


★ windows10proで確認

Hubから削除する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/555658/ec966b5e-a3a7-1155-a5c5-b6646547c3ea.png)

次に https://unity3d.com/jp/get-unity/download/archive から使いたいVERのUnityHUB(緑ボタン)を選択する。
そしたら次の画面でる。
![image.png](https://qiita-image-store.s3.ap-nort

元記事を表示

cocos2d-x v4でのプロジェクト作成方法(mac)

#環境
macOS Catalina
cocos2d-x 4.0

#ダウンロード
cocos2d-xをダウンロードする。
https://www.cocos.com/en/cocos2dx/download
ダウンロードしたzipファイルを展開する。

#セットアップ
cocos2d-x-4-1.0というような名前のフォルダができるので、それを任意の場所に移動する。
ターミナルを開き、cdコマンドでフォルダに移動する。
setup.pyを実行する。

“`
$ cd cocos2d-x-4-1.0
$ ./setup.py
“`

setup.pyを実行するとNDK_ROOT等の入力を求められるがとりあえず無視する。
最後に下記のようなメッセージが表示される。

“`
Please execute command: “source /Users/username/.zshrc” to make added system variables take effect
“`

書いてあるコマンドをコピペして実行する。パスは環境によって異なる。

“`
source /Users/

元記事を表示

Androidの実機のみで起こる事象をLogcatで追う

#はじめに
以下の状況になった。
1. エミュレータでは起きずにAndroid実機でのみ起きるバグが発生した。
2. Android StudioのLogcatウインドウでは実機のログが取れなかった。

#Android Studioで実機のログ取得
ログ取得は環境設定をうまくすれば可能となるようだ。しかし面倒だったので、ここでは単純な方法を試した。

1. Android実機をPCに接続する。
2. PC上のAndroid Studioを用いて、対象アプリを実機上で起動する。
3. Android StudioのTerminalウインドウを開き、コマンド「adb Logcat」を入れる。

これで、実機のログがTerminalウインドウ上に表示できる。ただし全てのログを表示するので、制限を加える必要がある。

* タグTagXのみ表示は、「adb Logcat -s TagX:*」とする。
* 任意文字列「search_string」のフィルタは、「adb Logcat | find “search_string”」とする(UNIX系ではgrepでも可)。

#見つかっ

元記事を表示

[Android] logcat の使い方を見直す

# はじめに
この記事では、Android Studio の logcat の使い方を見直して、より快適に開発を進める Tips をいくつか紹介します。
紹介する Tips は、公式ドキュメントや記事を参考しています。

**実行環境**

– Android Studio 4.0.1
– OS: Mac

# 1. Logcat Header を設定する
logcat の左下の[歯車マーク]をクリックすると、[Configure Logcat Header]の画面が表示されます。
![図1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/215440/1783d3b8-3616-f99a-2580-228291fbd437.png)

[Configure Logcat Header]の画面では、ログの先頭に表示するものを設定できます。
私の環境では、以下の画像のように設定されていました。
チェックを付けたり外したりすると、インタラクティブにログのサンプルが変わります。

![スクリーンショット 202

元記事を表示

Android GitHub Actions Hands-on

## 内容
GitHub Actionsを使って、AndroidのCI環境を構築する。最低限のビルド&デプロイができるところまで。

1. masterの更新時とmasterへのPRを作成したブランチに対して、apkをビルド
2. ビルドしたapkを保存できるようにする
3. masterブランチを更新したとき、アプリをFirebase App Distributionで配布する

## 0. 準備
Android Studioで新規にプロジェクトを作成する。
そのプロジェクトをGitHubのリポジトリにpushする。

完成したサンプルはこちら。
https://github.com/KamikazeZirou/android-github-actions-sample

## 1. とりあえずビルドする
(1) GitHubのリポジトリのページを開く
(2) GitHub Actionsを押す
(3) AndroidでSetupする(下図)
本当にAndroidのFragmentには空のコンストラクタが必要なの?

フラグメントに空のコンストラクタがなぜ必要なのかを、とっさに説明できなかったので、簡単にまとめてみた。

## 空のコンストラクタを作成しないとどうなるか
あなたが複数の引数をとるコンストラクタを持つFragmentを作ったとする。
そのFragmentは正常に動くだろう。
その後あなたはアプリをリリースする。

その後以下のエラーメッセージ付きのクラッシュ報告がたくさん上がってくる。
開発時はエラーなんて吐かなかったのに、古いAndroidを使い続けるユーザーが悪いんだとあなたはは思いつつエラー対応に当たることになる。

“`
Unable to instantiate fragment
make sure class name exists, is public, and has an empty constructor that is public
“`

fuck you android(これは本当にそう)

## 正しい空のコンストラクタの作り方
とにかくFragment内部のコンストラクタをoverrideするのは止める。
常に空のコンストラクタを記述し、Frag

元記事を表示

【Flutter】画面サイズに応じて文字サイズを自動で適用する方法

#この記事を読んで習得できること
画面サイズに応じて文字サイズを自動で変えることができるようになる。
結構使うことになるので備忘録として。

#結論
`Text`を`FittedBox`配下に置く。

“`sample.dart
FittedBox(
fit: BoxFit.fitWidth,
child: Text(
“あああああああああああああああああああああああテトラポット”,
style: TextStyle(fontSize: 32),
),
),
“`

![スクリーンショット 2020-08-18 23.42.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/389553/51168828-0ce2-6c2d-63e2-9c3da2b14e74.png)

#FittedBoxがなかったら
折り返したり、画面からはみ出たりして、画面がぶっ壊れてしまう。

“`sample.dart
Text(
“あああああああああああああああああああああああテトラ

元記事を表示

kotlinとjavaで関数を作りたい!

# はじめに…

この記事は[3個前の記事](https://qiita.com/sato-na/items/cc23f9b1db9c948dc00e)で書いた、

**7日間毎日記事投稿の4日目**

になってます

使うコードは下に貼りますが、このアプリの詳しい機能はその3個前の記事をご覧ください!

– java版 : https://github.com/sato-na/guruwake_java

– kotlin版 : https://github.com/sato-na/guruwake_kotlin

↓ここからが今回の記事の本題です↓

# それぞれの言語で関数を作るには…

– javaの場合

“`java
修飾子 戻り値の型 関数名(引数, 引数, …) {
関数の内容
return 戻り値
}
“`

例)
※ 引数なし、戻り値なしの関数を定義している

“`java:WhoActivity.java
private void addMember() { // 78行目
EditText memberET = findViewB

元記事を表示

AndroidでKotlin Coroutinesを導入する際の注意点

# 導入方法

AndroidでCoroutinesを導入する際は、`app/build.gradle`に以下のように記載します。
バージョンは特に理由がなければ最新版を指定するのが望ましいでしょう。

“`gradle:build.gradle
implementation ‘org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.7’
implementation ‘org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.7’
“`

# 注意点

以下に導入する際に起きたトラブルおよび原因、解決方法を記載します。

## VerifyErrorによるアプリクラッシュ

Kotlin 1.3系(私の環境では1.3.41)を使用している場合に、Coroutinesのバージョンを1.3.7にすると、コルーチンの処理を呼び出したときにVerifyErrorが発生してアプリがクラッシュしました。

“`
java.lang.VerifyError: Verifier rejected cla

元記事を表示

MarketingCloudSDK In-App Messaging概要

# In-App Messagingとは
ユーザがアプリのプッシュ通知を許可していなくてもユーザにメッセージを配信できるアプリ内メッセージのことです。
アプリがフォアグラウンドの状態になる度にアプリ内メッセージが読み込まれ、SMCで作成したメッセージが、アプリのビュースタックの最上部に表示されます。(閉じたメッセージは再度表示されません)

メッセージのテンプレートは以下3つがあります

・***フルページ***
 レイアウトが画面全体に表示される
・***バナー***
 画面最下部または最上部に表示される
・***モーダル***
 画面の一部に全面表示される

上記3つともSMCのContent Builderで設定可能です。
また色や、画像の配置、フォントサイズなどカスタマイズ可能になっています。
※文字のフォントに関してはデバイスのシステムフォントを使用しているため、アプリ側のフォント上書きの実装が必要です。

通知するには***JourneyBuilder***からアプリ内メッセージの送信が必要です。

#実装
以下、公式ドキュメントから参照となります。

1.アプリ内メッセ

元記事を表示

AndroidでのUnitTestざっくり入門

– Android Studio 4.0.1
– Kotlin: 1.3.72
– robolectric:4.3
– Windows 10

Androidアプリ開発でUnitTestをします。
出来る限り実機やエミュレータを使わず、JavaVM上で動かしサクサクテストできるような環境を目指します。

## テストケースの種類

### InstrumentedTest
– app/src/androidTest
– 実機もしくはエミュレータ上で実行される
– ExampleInstrumentedTest.ktというサンプルが作られる
– 今回は、こちらはできるだけ使用しない方針です。

### UnitTest
– app/src/test
– PCのJavaVM上で実行される
– ExampleUnitTest.ktというサンプルが作られる
– 今回はこちらをメインで使用していきます。

## テストケース実行

– Android Studio にて該当のパッケージ、クラス、メソッドで右クリック→ Run Testsで実行できる

## テストケース作成

– 該当の

元記事を表示

[Android Studio]本番環境をデバッグ可能にする

忘備録。

## 問題

以下はエラー内容。
本番環境をデバッグできるようにしたい。

“`console
Error running ‘app’
Cannot debug application from module app on device emulator-5554.
This application does not have the debuggable attribute enabled in its manifest.
If you have manually set it in the manifest, then remove it and let the IDE automatically assign it.
If you are using Gradle, make sure that your current variant is debuggable.
“`

## 解決策

`build.gradle` に記載されている設定 `debuggable` をfalseからtrueへ変更

“`build.gradle

元記事を表示

kotlinとjavaでリストを作りたい!

# はじめに…

この記事は[2個前の記事](https://qiita.com/sato-na/items/cc23f9b1db9c948dc00e)で書いた、

**7日間毎日記事投稿の3日目**

になってます

使うコードは下に貼りますが、このアプリの詳しい機能はその2個前の記事をご覧ください!

– java版 : https://github.com/sato-na/guruwake_java

– kotlin版 : https://github.com/sato-na/guruwake_kotlin

↓ここからが今回の記事の本題です↓

# それぞれの言語でリストを扱うには…

— 目次 —

1. Arraylistの作り方

2. 要素を追加・削除する方法

3. 要素数を取得する方法

4. リストの中身を逆順・シャッフルする方法

5. 中身を違うリストにコピーする方法

## ArrayListの作り方

– javaの場合

“`java
ArrayList<要素の型>変数名 = new ArrayList<>();
“`

例)

“`java

元記事を表示

ask me! appのログイン画面の実装

#1 この記事の内容

ask me! appでのログイン画面の実装方法について記載します。画面レイアウトは下記のとおりです。

![quitta①+.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/681104/a12634d1-d61e-627d-f6a0-1a79eb294dd6.jpeg)

#2 ソースコード概要

ソースコードの概要は下記の通りです。

“`dart:login.dart

@override
Widget build(BuildContext context) {
return
new GestureDetector(
onTap:()
{
_focusNodePwd.unfocus();
},
child:

new Scaffold(
appBar: new AppBar(
centerTitle: true,

tit

元記事を表示

【Flutter, Dart】ミュータブルの代償ととイミュータブルの代償、そしてfreezed

# はじめに
本記事は [The Mutability Tax](https://medium.com/@davidmorgan_14314/the-mutability-tax-6403d84f21c0) をベースにしています。
意訳・抜粋しまくったので翻訳記事と呼ぶには忍びないですが、記述の足らない箇所があれば元の記事を参照してください。
筆者の David Morgan 氏はGoogleのソフトウェアエンジニアです。

元記事の公開は2019年7月15日です。
本文中に登場するコードは `Dart` で記述されています。

[The Mutability Tax](https://medium.com/@davidmo

元記事を表示

ボードゲーム「カタン」の得点を計算するAndroidアプリを作ってみた。

# カタンとは
([Wikipedia](https://ja.wikipedia.org/wiki/カタンの開拓者たち))
>『カタンの開拓者たち』(カタンのかいたくしゃたち、Die Siedler von Catan)、または『カタン』は、ドイツで生まれたボードゲームである。1995年にコスモス社から販売された。
大航海時代に発見された無人島を複数の入植者たちが開拓していき、もっとも繁栄したプレイヤーが勝利するという内容のボードゲーム。

![DSC_1005.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/566051/0dbf8abd-eaef-5e9e-7738-ec54f75eba23.jpeg)

# なぜアプリを作ろうと思ったか

###複雑な得点計算ルール
カタンはいろいろなルールがある、けっこう複雑なボードゲームです。
複雑な点の1つに、その得点計算ルールがあげられます。

– 「都市」を作ると2点
– 「開拓地」を作ると1点
– 連続した5本以上の「街道」を作成し

元記事を表示

Kotlin Coroutineにおける実行スレッドの選択について

# Dispatchers

Kotlinでコルーチンを使用する際、`Dispatchers`によってどのスレッドで実行するかを選択することができます。

“`kotlin

GlobalScope.launch(Dispatchers.Main) {
// 何かしらの処理
}
“`

`Dispatchers.Main`は、コルーチンの実行スレッドを表しています。
主な種別は以下の通りです。

| 種別 | 説明 |
|:———–|:————|
| Defalut | バックグラウンドスレッド。リストの並び替えやJSONのパースなどのCPUに負荷がかかる処理向け。 |
| IO | バックグラウンドスレッド。データベース処理やファイルの読み書きおよびネットワーク処理といった入出力処理向け。 |
| Main | メインスレッド。他の`Dispatchers`での処理終了後に結果をUIに反映したり、`delay`関数でnミリ秒後にUIを表示させるなどのUI処理用。|

# withContext

コルーチンの中で実行スレッドを切り替えるには

元記事を表示

OTHERカテゴリの最新記事