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

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

Android StudioでXML属性が勝手に並び替えられてしまう問題

最初は以下のように記載していた

“`


元記事を表示

Flutter build error が起きたときにするべきこと

# はじめに
[Flutter](https://codezine.jp/article/detail/12718)とはネイティブアプリを開発するためのフレームワークとして2018年にGoogleが発表しました。今回はFlutterでbuildしているときにエラーが発生したときにするべきことを書こうと思います。

# 最初に、、 【エラー状況を知る】
実際にどういうエラーなのかなどの詳細を知るためには以下のコマンドを入力してください。これでflutter runコマンド実行中の詳細ログを表示します。

“`
$ flutter run –verbose
“`

# 手段1 【flutter clean】
Flutter build errorが発生したときに一番最初にやるべきことはflutter cleanです。

“`
$ flutter clean
“`

30%のエラーはこの方法で解決します。手段2以降はこの方法でもうまくいかなかった人向けです。

# 手段2 【Pod関連を再インストール】

“`
$ flutter clean
$ rm -Rf ios/Pod

元記事を表示

Android NDKのCMakeを使用したProductFlavorごとにネイティブコードを分ける方法

# TL;DR
build.gradleのproductFlavorsでFlavorごとに引数を与えてCMakeListsで分岐させる。

# Android NDKとは
Android NDK は、C / C++(ネイティブ コード)を Android アプリに埋め込むことができるツールです。
重い演算処理、ネイティブコードに秘匿情報を記述しデコンパイルしても見えないようにする、等に使用されます。

# CMakeとは
コンパイラに依存しないビルド自動化のためのツールです。androidで言うところのgradleですかね・・・・(レイヤーが違う気もする(anroidはjava自体はコンパイラに依存しないようになってますので)がビルドツールという点では一緒)

# ProductFlavorとは
[ProductFlavor](https://developer.android.com/studio/build/build-variants?hl=ja#product-flavors)
環境依存のコード(API endpointやその他環境変数)を難しいことをせずにソースファイルごとま

元記事を表示

[Android/Kotlin]AndroidStudio4.1でViewModelを使う

なんか前のやり方でできなくなってたので

# 環境
– Android Studio 4.1
– Kotlin
– Mac

# 結論
### ライブラリ
“`xml:build.gradle(app)
plugins {
id ‘kotlin-android-extensions’
}

dependencies {
// ViewModel
implementation “androidx.activity:activity-ktx:1.1.0” // Activityから使う時
implementation “androidx.fragment:fragment-ktx:1.2.5” // Fragmentから使う時
}
“`
バージョンは
[Activity – AndroidDeveloper](https://developer.android.com/jetpack/androidx/releases/activity?hl=ja)
[Fragment – AndroidDeveloper](https://developer.a

元記事を表示

#9 Kotlin Koans Introduction/Extension functions 解説

#1 はじめに

Kotlin公式リファレンスのKotlin Koans/Extension functionsの解説記事です。

Kotlin Koansを通してKotlinを学習される人の参考になれば幸いです。

ただし、リファレンスを自力で読む力を養いたい方は、
**すぐにこの記事に目を通さないで下さい!**

一度各自で挑戦してから、お目通し頂ければと思います:fist:

#2 拡張関数

拡張関数とは、**継承を用いずに特定のクラスに対して追加した関数**のことです。

拡張関数はオリジナルのクラスに定義された関数と同様に参照することができます。

以下が拡張関数の定義と参照です。

“`
拡張関数の定義
fun MutableList.swap(index1: Int, index2: Int) {
val tmp = this[index1]
this[index1] = this[index2]
this[index2] = tmp
}

拡張関数の参照
val list = mutableListOf(1, 2, 3)
list

元記事を表示

#8 Kotlin Koans Introduction/Smart casts 解説

#1 はじめに

Kotlin公式リファレンスのKotlin Koans/Smart castsの解説記事です。

Kotlin Koansを通してKotlinを学習される人の参考になれば幸いです。

ただし、リファレンスを自力で読む力を養いたい方は、
**すぐにこの記事に目を通さないで下さい!**

一度各自で挑戦してから、お目通し頂ければと思います:fist:

#2-1 when構文

when構文は、**if構文**の仲間のようなもので、条件ごとに結果が分岐します。
以下がwhen構文の例です。

“`
when (x) {
1 -> print(“x == 1”)
2 -> print(“x == 2”)
else -> {
print(“x is neither 1 nor 2”)
}
}
“`
変数xが1のとき`x == 1` が表示され、2のときは`x == 2`が表示され、それ以外の場合`x is neither 1 nor 2`が表示されます。

#2-2 Smart cast

cast(キャスト)とは**変数

元記事を表示

FlutterアプリをGitHub Actionsを使ってwebアプリとandroid apkを同時にbuildし公開するまで

# はじめに
私は普段休みの日の朝を中心に、普段家庭内の生活に使ったり、子供と遊ぶための便利なアプリなどを作ってます。
個人開発なので、あまり手間をかけずにサクッと色んなものを作りたいと思っていたときに
[Flutter](https://flutter.dev/)に出会いました。
Flutterはほぼローコード開発ツールやノーコードツールと同じくらいと言っていいくらい
あまり手間がかからずそれなりのアプリをサクッと開発できます。
はじめは、手元でbuildし、いちいちサーバにdeployするといった作業をしていましたが、貴重な土日の朝の時間
少しでも手間を減らしたいと思っていました。
手元ではコードを書いてテストを走らせ、かんたんにエミュレータで確認すると言った作業だけに集中し、
buildやdeployはGitHub Actionsに任せようと思い色々調査をした結果をメモしています。

# flutter web を使ってwebアプリを gh-pagesに公開する
## 前提
この記事では前提として下記を想定しています。
– Flutterでアプリ開発をしている
– GitHub上

元記事を表示

FileProvider.GetUriForFileでハマった(Java.Lang.NullPointerException、Java.Lang.IllegalStateException)

VIsualStudio2017, XamarinでAndroidアプリの勉強中、
FileProvider.GetUriForFileでハマりました。

##起こったエラーと解決方法
* ####Java.Lang.NullPointerException
providerがタグの外に出ていた。
入れ子になっていないと読み込んでくれなかった。

* ####Java.Lang.IllegalStateException
SpecialFolder.Personal(内部領域)を使用しているのに、
filepaths.xmlのタグがfiles-pathではなくexternal-pathになっていた


まず、前提として「file://~」を使った書き方はAPIが更新されていて使えないので、FileProviderを使ったやり方で実装しましょう(2019/4月)
※でも、Webのブログなどにはfileを使ったやり方がたくさんのっていて辛かった。

ちなみに、AndroidのReferenceは僕には合わなかった。
Xamarinのドキュメン

元記事を表示

Chromebookで開発するメモ

Chromebookを開発マシンとして使おうと数日設定したときのメモ。

# 結論 (ChromeOS 86の時点)

結論としてはLinux開発マシンとして十分使える。
特にWebアプリ開発や外部サーバーにSSHでつなげて作業する場合は便利。

しかし、課題はLinux側の日本語入力。Mozcを入れてLinux側でも日本語の入力が可能だが非常に不安定。日本語入力が必要ならChromeOS側のAndroidアプリやLinux側でエディタサーバーを起動してChrome側へアクセスしてやると良い。

# どのLinuxを使うか

たくさん選択肢がある。多いことは良いことだがどれにしてよいか悩む。

– ChromeOS標準のLinuxコンテナのcrostini — Debian
– AndroidアプリのTermux — Androidとの親和性高し
– AndroidアプリのUserLand — 好きなOSを選べる
– ChromeOSを開発者モードにして使うcrouton — 開発者モードが悪

手軽に始められてDebianが使えるのがcrostini。Chro

元記事を表示

【Kotlin】WebViewからFirebase 向けGoogle アナリティクスにイベントを送りDebugViewで検証する

AndroidアプリのWebView内から発生させたイベントをネイティブ側のFirebase向けGoogleアナリティクス(あるいはApp+Webプロパティ、GA4)にて計測するための方法。

[Googleの公式ヘルプガイド](https://firebase.google.com/docs/analytics/webview?platform=android#implement_native_interface)にiOS向けにはSwift, Objective-Cのサンプルコード、android向けにはJavaのサンプルコードが記載されていたもののKoltlin版が無かったので作成しました。
#参考・変換元
[WebView でアナリティクスを使用する  |  Firebase](https://firebase.google.com/docs/analytics/webview?platform=android)
(2020年10月現在、ヘルプガイドの最初にiOS, Android向けのサンプルコードを切り替えられるボタンがあるものの”Android”を選んでもiOS向けのコード

元記事を表示

futterのインストールからサンプルプログラムを動かすまで

## 目的
– モバイルアプリの開発を1つのコードで実装することを目的とし、そのためのツールとしてFlutterを使用することとした
– Flutterのインストールを行い、インストール後の確認としてサンプルプログラムを作成してiOSとAndroidの各シミューレタで動かす

## 環境
– OS:macOS Mojave(10.14.6)
– iOS向けのコマンドラインツール等はインストール済み(iOSの開発をした端末を使用)
– 動作確認はVSCodeを使用(インストール済み)

## flutterのインストール
– gitからclone

“`bash
# 開発用フォルダへ移動
cd /Users/xxxx/develop
# gitから取得
git clone https://github.com/flutter/flutter.git
“`

– flutterへパスを通す

“`bash
# bash_profileへ設定追加
export PATH=”\$PATH:

元記事を表示

GoでローカルWebServerを立てた

初めに
===
GoでWebServerを立てて、Androidアプリからアクセスする

環境
===
PC Windows10
Android Studio 4.0
Kotlin 1.3.72
Android端末 Emulator(API Level 29)
Go 1.11.1

構成図
===
![go_server.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/487320/a511ca97-5de7-2c52-aa2a-61d690e74dee.png)
Androidアプリからファイルを送信して、サーバー側で保存、サーバーからアプリにステータスコードを返却する

実装
===
ローカルサーバー

“`Server.go
package controllers

import (
“fmt”
“net/http”
“io/ioutil”
“os”
)

func apiSampleHandler(w http.ResponseWriter, r *http.Request) {

元記事を表示

Android Styling をイチからやり直す

## この記事なに?
Android Styling とは Android アプリの見た目を決める一連の仕組みです。Android アプリを作ったことがある人なら必ず触れている基本ですが、ちゃんと理解できていますか? デフォルトで生成された `themes.xml` を雰囲気で書いているだけではないですか?
これは僕が Android Styling を使いこなすために今一度イチから勉強し直したまとめです。
間違っていたら教えてください?

## ある特定の View の見た目を変える
Style や Theme の話に入る前に、View の見た目を変える方法を振り返ります。
Android の View の見た目を操作する最も基本の方法は `View attribute` です。View attribute は View に外部から設定する値です。xml で設定することが多いです。
例えば TextView の文字色は以下のように変えられます。

“`xml
OpenJDKのDockerコンテナを使ってKotlinアプリのビルドを行う

# 経緯
– KotlinでAndroid開発をやっているが、毎度AndroidStudioでビルドするのが面倒になってきた
– gitlabを使ってるのでついでにgitlabciを使ってみよう(別プロジェクトでrunner設定済みだったので今回必要なさそう)
– まずは手動でコンテナからビルドできるか試してみよう

# Dockerインストール
最近手に入れた開発用Macなので、まだDockerが入っていませんでしたorz
ここは特に書くことないので省略します

# コンテナ起動まで
今回はopenjdk8を使用します
理由はgitlabciのAndroid用テンプレートYAMLにデフォルトとして使われているのがこいつだったのと、JAVAのパッケージとかをインストールする手間が省けるからです(だから使われてるんだと思うけど)

まずはいつも通りpullします
バージョン指定は必須です

“`
docker pull openjdk:8-jdk
“`

そしてコンテナ起動します

“`
docker run -it openjdk:8-jdk
“`

# 必要なパッケージインス

元記事を表示

Dagger Hilt (DevFest 2020 資料)

DevFestの資料の記事版です。ステップごとにサンプルアプリの差分付きで説明します。
なぜDependency Injectionが必要なのか から始め、Dagger Hiltの説明、実践的なプラクティスまで説明していきます!

# Dependency Injection(DI)とはなにか

### なぜDIが必要なのか

DI、ちょっと難しいイメージありますが、そもそもなんで必要なんでしょうか?
作っているのが動画再生するアプリでVideoPlayerというクラスがあるとしましょう。
VideoPlayerのクラスの中にデータベースやcodecなどが**ハードコードされています。**

コード: https://github.com/takahirom/hilt-sample-app/commit/8c36602aaa4e27d8f10c81e2808f0ff452f1c8a4#diff-bbc9d28d8bcbd080a704cacc92b8cf37R19

“`kotlin
class VideoPlayer {
// データベースにビデオの一覧が保存されている (

元記事を表示

termux×AWS IoT でスマホ位置情報をAWSに送信

#はじめに
妻に、「職場を出たらラインしろ」と言われているのですが、正直面倒です。
自分が職場を出たことを自動で通知できないかなと思い、とりあえず位置情報をAWSに送ってみました。

![図1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287677/f9429f7f-320e-2383-24da-e35578dd9fdb.png)

#環境
スマホ:京セラ(KTV44)
OS:Android 9

##スマホ(termux)側
AndroidにGoogle Playを利用して、termuxをインストールします。
https://play.google.com/store/apps/details?id=com.termux&hl=ja

スマホだとキーボード入力しづらいため、
インストール後に下記コマンドを入力し、ssh用の環境を構築します。

“`shell
$ termux-setup-storage #termuxにandroidストレージの使用を許可する。
$ pkg install o

元記事を表示

androidのアプリリンクで開く時にプロセスが2つ立ち上がったりジャンプ元のアプリ内で開く時の対処法

## はじめに
アプリリンク(iOSでいうところのユニバーサルリンク)を導入すると、リンクを開く時に指定したアプリで開くことができるため、ユーザーに「どのアプリで開くのか」を選択してもらう必要がなくなりUXの向上になります。

しかし、androidではデフォルトの設定だと、アプリリンクを踏んだ時の動きがおかしくなります。
アプリリンクを踏むアプリをA、アプリリンクで開きたいアプリををアプリBとした時の理想の動きとしては

>
– アプリBがバックグラウンドにいる
– アプリAでアプリリンクを踏むとアプリBに遷移する
– アプリBがkill状態
– アプリAでアプリリンクを踏むとアプリBが起動して遷移する

ですが、androidのデフォルトの設定だと

>
– アプリBがバックグラウンドにいる
– アプリAでアプリリンクを踏むとアプリAのなかでアプリBが開いているパターン
– アプリAでアプリリンクを踏むと、アプリBがもう1つ開かれて遷移するパターン
– アプリBがkill状態
– アプリAでアプリリンクを踏むとアプリAのなかでアプリBが開いているパターン

元記事を表示

Termuxを素早く設定

Android/ChromeOSをTerminalとして使えるTermuxですが、いつも設定するのが面倒なので、ここにメモします。

– [(メモ) Chromebook向けのメモをこちらに](https://qiita.com/kujirahand/items/431e89524bd56098bde7)書きました。

# Termuxのインストール

まずは、自分で書いた記事をメモ。Termux上でPythonのインストール方法を紹介している。

– [AndroidでもPythonが使いたい – Termuxを始めよう](https://news.mynavi.jp/article/zeropython-59/)

手順は以下の通り

– Google PlayStoreでTermuxとTermux APIをインストール

# 内部ストレージにつなげる

Termuxの“~/“は“/data/data/com.termux/files/home“なので、内部ストレージにつなぐ方法。以下のコマンドを実行。

“`
termux-setup-storage
“`

元記事を表示

雑魚競プロerがアプリ開発する(1週目)

#1.はじめに
兼ねてから勉強してみたいと思っていたアプリ開発に着手し始めたので、今後の勉強の進捗について軽くまとめておきたいと思います。

#2.自己紹介
1.専門は数学
2.半年前から競プロに取り組む。茶コーダー

#3.ここ半年で学んだ技術
1.競技プログラミングで使うレベルのC++の知識
2.何を勉強すればいいのかわからなくてなんとなく学んだhtml,css,pythonの知識
3.TCP/IPの基礎知識、Linuxの基礎知識
4.Androidアプリ開発のための基本的な知識。基本的なアプリの作例をみて作成

#4.今週学んだ知識
Kotlinの基本文法を公式のドキュメントを使って学んだ。
競プロのおかげで基本的な文法の流れはわかっていたので、型や繰り返し、Switchなどの知識は頭に入ってき易かったと思う。
流れとしては、基本的な文法をなんとなくドキュメントでさらった後にテキストエディタによって自分用にまとめた。
適宜ローカル開発環境を使って実際に動作しているところを確認した。
以下には今週まとめた分の一部を載せておく。

“`kotlin:matome
/*
Kotlin

元記事を表示

Google Play Console の新しいUIでの時間指定公開とリリース手順

Play ConsoleのバージョンアップでUIが変わるので新しいUIでの手順をまとめておきます。
![スクリーンショット 2020-10-16 17.02.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/208853/85b7849b-779e-d1a2-b47e-367b38714385.png)

## 時間指定公開
– メニューの「公開の概要」から「管理」 -> 「管理対象の公開をオンにしました」を選択して保存
![スクリーンショット 2020-10-16 16.34.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/208853/d531b8d8-3035-2831-ad94-cc8b3ac028f0.png)
![スクリーンショット 2020-10-16 16.35.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2

元記事を表示

OTHERカテゴリの最新記事