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

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

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 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

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

元記事を表示

【Flutter/ Dart】flutter build apk –release で生成した.apkをインストール&起動すると直後に動作を停止してしまう現象への対応

## 概要

デバッグビルド`flutter build apk –debug`で生成した.apkは正常に動作するのに、リリースビルド`flutter build apk –release`で生成した.apkは起動直後にクラッシュしてしまう現象にしばらくの間悩まされていました。
一つ解決策を見つけたので、備忘と共有のために記します。

## 解決策

`android/app/build.gradle`に以下の設定を追加することで解消できました。

“`.gradle:build.gradle
buildTypes {
release {
// …
shrinkResources false // 追加
minifyEnabled false // 追加
}
}
“`

`shrinkResources`はリソースの圧縮で、`minifyEnabled`はR8によるコードの圧縮(実行の際に不要と判断したコードを削除するプロセス)のことです。それぞれを無効にすることで解決しました。

## 原因(と思われるもの)
R8によるコ

元記事を表示

[Android] Realmのデータ引っこ抜き

デザイナーなのにエンジニアさんが逃げちゃったのでエンジニアしてるし,せっかくなのでQitta書いてみた

## 環境
Mac Catalina 10.15.4
Android Studio 4.0.1

## 前提
adbコマンド打てない方は打てるようにしてください.
良い記事いっぱいあります.

## 方法 adbコマンド編

かなり面倒な構造になっているけどadbコマンドで直接コピーしたらpermissionなんとかっていうエラーでコピーできない仕様になってるみたいで、一度端末のsdcardに保存してからDesktopに保存してます

“`
$ adb shell
“`

“`
$ run-as “`

“`
sdcard/Download配下にrealmファイルをコピーしているよ
$ cp files/default.realm /sdcard/Download
“`

“`
Desktopに保存しているよ
$ adb pull /sdcard/Download/default.realm /Users//Desk

元記事を表示

Androidエミュレータで指紋認証を実行する方法

F1(Mac の場合は Command+/)キーを押してExtended controlsウィンドウを開きます。
![Screenshot from 2020-08-17 10-57-52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/658122/813459f1-4358-9272-e2a4-8852395231a3.png)

メニュー内の「Fingerprint」から指紋認証をエミュレータ上で実行することが出来ます。

## 指紋データの登録

設定→セキュリティ→指紋登録画面を開きます。

TOUCH THE SENSORをクリックしてFinger1の指紋を登録します。

## 指紋認証を実行する

あとは指紋認証を使用したいときに、事

元記事を表示

Android Architecture ComponentのLiveDataの使い方

#はじめに
今回はAndroid Architecture Component(以下AAC)にあるLiveDataに関する説明をしていきます。
とっても便利なものなので覚えておいて損はないです。

EditTextに入力した値をTextViewにそのまま表示させるアプリを作りながら説明していきます。

#今回説明しないこと
AACの説明
BindingAdapter等の説明
ViewModelのこと

#環境
appレベルのbuild.gradleに以下の記述をしてください。

“`gradle:build.gradle
def lifecycle_version = “2.2.0”
implementation “androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version”
implementation “androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version”
implementation “androidx.fragment:fragment-kt

元記事を表示

Android Architecture Blueprintsでクラス図を描きながらMVPを学ぶ

# Android Architecture BlueprintsでMVPを学ぶ
## 初めに
Androidのアーキテクチャについて学びたいと思っていた時に、調べたところ「Android Architecture Blueprints」が良いとあったので、クラス図を書きながらアーキテクチャについて学んでみます。

プロジェクト見てもいまいちつかめない方は、[PEAKS(ピークス)|Android アプリ設計パターン入門](https://peaks.cc/books/architecture_patterns)を見るとより分かりやすいと思います。
MVPとMVVMについて解説があります。
Android開発が初めての方にはおすすめです。

## Android Architecture Blueprintsとは
Googleが公開しているAndroidアプリ(TODOアプリ)を様々なアーキテクチャで実装したプロジェクト。
アーキテクチャごとにブランチが異なり、MVPやMVVM、Clearn Architectureなど同じTODOアプリが別のアーキテクチャで書かれていて比較したら面

元記事を表示

kotlinとjavaの基礎をまとめてみた

# はじめに…

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

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

になってます

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

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

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

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

# それぞれの言語の基礎を比べると…

— 目次 —

1. 変数定義の方法

2. if文の書き方

3. for文の書き方

4. String→Intにする方法

## 変数定義の方法

– javaの場合

“`java
型 変数名 = 初期値;
“`

型の指定が必要

例)

“`java:ResultActivty.java
String rTxt = “”; // 31行目
in

元記事を表示

OTHERカテゴリの最新記事