- 1. FileProvider.GetUriForFileでハマった(Java.Lang.NullPointerException、Java.Lang.IllegalStateException)
- 2. Chromebookで開発するメモ
- 3. 【Kotlin】WebViewからFirebase 向けGoogle アナリティクスにイベントを送りDebugViewで検証する
- 4. futterのインストールからサンプルプログラムを動かすまで
- 5. GoでローカルWebServerを立てた
- 6. Android Styling をイチからやり直す
- 7. OpenJDKのDockerコンテナを使ってKotlinアプリのビルドを行う
- 8. Dagger Hilt (DevFest 2020 資料)
- 9. termux×AWS IoT でスマホ位置情報をAWSに送信
- 10. androidのアプリリンクで開く時にプロセスが2つ立ち上がったりジャンプ元のアプリ内で開く時の対処法
- 11. Termuxを素早く設定
- 12. 雑魚競プロerがアプリ開発する(1週目)
- 13. Google Play Console の新しいUIでの時間指定公開とリリース手順
- 14. AndroidアプリをGooglePlayConsoleで公開を止めている状態で、リリースの上書きができるか確認
- 15. Android SIP API : REGISTER リクエストの有効期間と再送信
- 16. Associate Android Developer スタディガイド翻訳①
- 17. [Delphi] 10.4 移行で TakePhotoFromLibraryAction を使ってると落ちる罠
- 18. [Android]apkへの署名
- 19. Firebase Crashlytics SDK 導入時にあった Gradle エラー
- 20. gradle “Error: Program type already present: “
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 controllersimport (
“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
AndroidアプリをGooglePlayConsoleで公開を止めている状態で、リリースの上書きができるか確認
前回からの引き続きで、 https://qiita.com/backgroundcolor/items/f1941a6b08eecbe3d0a7
公開を止めている状態で、リリースの上書きができるか確認
1. ver16が公開準備完了状態
![スクリーンショット 2020-10-16 15.08.171.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6568/11072de5-6313-671d-8ce3-cd41ed02c0a1.png)2. 製品版にて、ver16が公開の準備完了状態となっているが、「新しいリリースを作成」
![スクリーンショット 2020-10-16 15.08.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6568/62796e22-7924-1dd3-d524-ee4a5ab9e947.png)
3.ver17のファイルをアップし、リリースを作成。ver16は含まれないAPKに表示さ
Android SIP API : REGISTER リクエストの有効期間と再送信
# 概要
## SIP REGISTER リクエストの有効期間
REGISTER リクエストには有効期間 (Expires) を指定することができます。
* http://www.softfront.co.jp/tech/ietfdoc/trans/rfc3261j.txt (Page 56 – 60 を参照)
REGISTER の有効期間に関する動作を簡単にまとめると以下のような感じです。
* クライアントは、REGISTER リクエストの Expires に希望する期間を指定して、送信。
* サーバーは、レスポンスにサーバー自身が希望する期間を指定して、送信。サーバーが指定した期間は、クライアントが希望した値かもしれないし、サーバーが希望する別の値に変更しているかもしれない。
* クライアントは、レスポンスに書かれた期間を過ぎた後(または期間に近づいた際に)、 REGISTER リクエストを再送信することが必要。## Android SIP API の auto registration 機能
Android SIP API には auto registration
Associate Android Developer スタディガイド翻訳①
### Associate Android Developer certificate
Google公式のAndroid開発者認定試験があるの、ご存知ですか。
[Google Developers Certification : Associate Android Developer](https://developers.google.com/certification/associate-android-developer)あんまり普及してないのか、受験した方のブログなんかも少ないですね。
自分は太古の時代にAndroidアプリ開発をしていて、最近また何かやってみようとAndroid Studioをインストールしたものの何がなんだかわからず、とりあえず初心者として基本から勉強しようかと。
試験を受けるかはさておき、Androidの基礎を理解するのによさそうと思ってスタディガイドを読み始めたところです。
ただ漫然と読んでると目が滑るので、ノート取り代わりに翻訳してみることにしました。※そもそも試験が英語のみでオンライン面接もあるそうなので、英語が全くダメだと取得は難しいと思
[Delphi] 10.4 移行で TakePhotoFromLibraryAction を使ってると落ちる罠
# 10.4.1
みなさん!Delphi 10.4.1 は楽しんでますか!
Community Edition が出てないから楽しめないって!?
わかる~
早く出してくれることを祈りましょう。# TakePhotoFromLibraryAction
さて、僕は 10.4.1 を楽しんでいるのですが、**Android** で、ちょっとした問題にぶつかりました。
それは、[TakePhotoFromLibraryAction](http://docwiki.embarcadero.com/Libraries/Sydney/ja/FMX.MediaLibrary.Actions.TTakePhotoFromLibraryAction) を使っていると、10.4 に移行したときにアプリが落ちてしまうという問題です。
TakePhotoFromLibraryAction はデバイスの写真を取ってくるアクションですが、ここで写真を選択して、アプリに戻ると直後に落ちます。
## 対処
10.4.1 で新規に作ったアプリでは落ちないので 10.3.3 から持ってきたファイルで 10.
[Android]apkへの署名
# キーワード
キーワード|説明
—|—
アプリ署名鍵|apkファイルを端末にインストールする際に必要になる署名をするための鍵。
アップロード鍵|GooglePlayストアに公開する際に必要になる署名をするための鍵。
生成には署名情報(氏名/会社・部署/国・都道府県・市区町村)と、キーエイリアス、キーパスワードを設定する必要あり。
キーストア|アプリ署名鍵 または アップロード鍵を保管しているファイル(.jks or .keystore)。
何らかの鍵を内蔵したキーストアを生成する際にはストアパスワードが必要。# ざっくり説明
**apkファイルを端末にインストールしたい場合、アプリ署名鍵でビルド時にapkファイルにデジタル署名しておかないといけない。**
## debugビルドする場合
Android SDK ツールで生成された**デバッグ証明書で自動的にデジタル署名してくれる。**
「アプリ署名鍵とか作った覚えないのに・・・」という疑問への回答である。## releaseビルドする場合
一般には**アプリ署名鍵でのデジタル署名はGooglePlay
Firebase Crashlytics SDK 導入時にあった Gradle エラー
firebase crashlytics SDK の導入時に以下のようなエラーがありました。
“`
> Task :app:compileDebugKotlin FAILED
e: Supertypes of the following classes cannot be resolved. Please make sure you have the required dependencies in the classpath:
class com.google.android.gms.location.LocationResult, unresolved supertypes: com.google.android.gms.internal.zzbeje: Supertypes of the following classes cannot be resolved. Please make sure you have the required dependencies in the classpath:
“`
`com.google.android.gms.
gradle “Error: Program type already present: “
ライブラリのバージョン更新中に以下のようなエラーが出ました。
“`
Error: Program type already present: android.arch.lifecycle.ViewModel
“`# エラーについて
このエラーについて、[Android Studio ユーザーガイド : 重複クラスエラーを修正する](https://developer.android.com/studio/build/dependencies#duplicate_classes) に説明があります。
>
“`
Program type already present com.example.MyClass
“`
このエラーは通常、以下のいずれかの状況で発生します。
・バイナリ依存関係に含まれているライブラリが、直接的な依存関係としてアプリにも含まれている場合。たとえば、アプリでライブラリ A とライブラリ B に対する直接的な依存関係が宣言されているものの、すでにライブラリ A のバイナリにライブラリ B が含まれている場合などです。この問題を解決するには、ライブラ