- 1. Eclipse+ADT(build:Maven2)で作ったAndroidアプリをAndroid Studio(build:gradle)に移行した記録
- 2. 【Unity】2019.4 Android実機でTextureが透過してしまう
- 3. Firebase Crashlyticsを効果的に使うお話
- 4. ActivityResultContractsの仕組みを調べてみる
- 5. Google製 通信ライブラリ Cronet
- 6. 折り返し表示もこれで怖くない! Google製ライブラリ【FlexboxLayout】
- 7. LiveDataをObserveする際の注意点
- 8. (Android Studio)Gradleのプロキシ設定のやりかた
- 9. Flutterのスプラッシュ画面でAndroidのダークテーマ対応
- 10. Kobiton でスマートフォンのリモートテストを試してみた
- 11. [Modern Android] Jetpack Compose その5
- 12. Firebase Remote Configの挙動について
- 13. Androidスマホ・タブレットは何でもできる!Termuxで動かすアレコレまとめ
- 14. Flutter辞書
- 15. 【Kotlin】onClickListenerのパターンとその使い分け方
- 16. [Android]自動スクロールで手を動かすことなく実機確認を行う
- 17. net::ERR_CLEARTEXT_NOT_PERMITTED
- 18. 【Android 9.0 Pie】ActivityやFragment以外でのstrings.xmlの呼び出し方の例
- 19. RecyclerViewで消えないScrollbarを表示する
- 20. [Android]インストラメント化テストとローカルテストでコードを共有するには
Eclipse+ADT(build:Maven2)で作ったAndroidアプリをAndroid Studio(build:gradle)に移行した記録
# マシンスペック
* Mac mini 2018
* macOS Catalina(10.15.x)
* Intel Core-i7 3.2GHz 6コア
* メモリ 32GB
* SSD 512GB#旧開発環境
* Windows 10
* DELL XPS 13
* Intel Core-i7
* メモリ 8GB
* SSD 256GB
* Eclipse 4.5(だったかな?)
* ADT最新版# やること
* 開発環境をEclipse+ADT → Android Studioへ移行
* ビルド環境をMaven2 → gradleへ移行# 何故やるか?
* AdMobの広告ポリシー違反で広告を止められ、広告収入がゼロになった
* 推定2年放置してたが、再審査の改修が必要なので、開発環境をMacに移行する
* せっかくなので、モダンな開発環境にしたい# 移行するアプリ
[バスくる for 東急バス](https://play.google.com/store/a
【Unity】2019.4 Android実機でTextureが透過してしまう
## Unityバージョン
2019.4.2f1## 症状
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237014/5c1b6a3c-6a6e-0c3b-bcd5-23af8e03dd22.png)## 解決方法
Render Over Native UI のチェックを外す
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237014/a6aa07ec-a14a-0463-fb11-b3fced676f24.png)
Firebase Crashlyticsを効果的に使うお話
## 最初に
今回はユーザーさんからのクラッシュの問い合わせをCrashlyticsを使い
どうしたら素早くやバグを解決できるか考えてみました。
デバッグって大変ですよね。導入自体については、公式のドキュメントをご確認ください。
https://firebase.google.com/docs/crashlytics?hl=ja今回は、Android javaでのコードを記載しました。
## ユーザーID検索
ユーザーがログインした時などにユーザーの情報をセットしていくと、文字列をいれて送ることができます。
“`java
Crashlytics.setUserIdentifier(“userid-12345678910”);
Crashlytics.setUserEmail(“userid-email”);
Crashlytics.setUserName(“userid-name”);
“`そうするとこれはクラッシュ詳細の「データ」のタブに表示されます。
この画像の右下あたりのユーザーの部分です。
ActivityResultContractsの仕組みを調べてみるactivity:1.2.0、fragment:1.3.0 からActivityやFragmentの `startActivityForResult` / `onActivityResult`、`requestPermissions` / `onRequestPermissionsResult` あたりがdeprecatedになるそうですね。`ActivityResultContracts`を使えと言うことだそうです。
ちょっと使ってみたところ、良さそうなんだけど、どういう仕組みになっているのか気になったので調べてみました。## おさらい
### startActivityForResult いままで
今まで、他のActivityから結果を受けとるには以下のようにしていました。
リクエスト
“`kotlin
startActivityForResult(intent, REQUEST_CODE)
“`結果の受け取り
“`kotlin
override fun onActivityResult(requestCode: Int, resultCode: Int,
Google製 通信ライブラリ Cronet
## Cronetとは
Google製の通信ライブラリ
https://developer.android.com/guide/topics/connectivity/cronet?hl=ja
Sample
https://github.com/GoogleChromeLabs/cronet-sampleAndroidDeveloperによると、YoutubeなどGoogleアプリで使われているとのことでした。
Retrofit + Okhttp一強の時代(だと思っている)ですが
他のネットワーク系のライブラリに触れる機会がなかったので勉強がてらに触ってみました。## 使い方
ともあれ早速使ってみましょう!サンプルのリポジトリには、ソースをcloneして使ってくれとあるのですが、mavenリポジトリに登録がありました。
https://mvnrepository.com/artifact/com.google.android.gms/play-services-cronet“`gradle
dependencies {
api “com.google.an
折り返し表示もこれで怖くない! Google製ライブラリ【FlexboxLayout】
## FlexboxLayout
https://github.com/google/flexbox-layout
https://developers-jp.googleblog.com/2017/03/build-flexible-layouts-with.htmlこういう表示を折り返し部分をやってくれる
タグ表示などで使えそうです。
1、一つのViewの中にViewを配置すると自動で折り返しくれるFlexboxLayout
2、RecyclerView内のViewを紐づけるFlexboxLayoutManager(LayoutManager)
があります。スクロールするような画面では、RecyclerViewの仕組みでViewが再利
LiveDataをObserveする際の注意点
## 概要
みんなLiveDataって使ってますよね!LiveData便利ですよね!
でも意識していないと意図しない動作になってしまうことがあります。
本稿ではそんな落とし穴になり得る書き方の一つを紹介します。## TLDR
LiveDataの`observe`メソッドを呼び出した際、LiveDataにイベントが保持されていればイベントを処理してしまう## LiveDataの頻出パターン
まずはLiveDataを使う上での頻出パターンを紹介します。以下のような仕様がある前提で本稿を進めていきます。
“`
LIVEボタンをタップした時にだけスナックバーを表示する。
“`まずViewModelにLiveDataに値を流すための処理を書きます。
“` ViewModel
class FirstViewModel: ViewModel() {
// 外から値を流せないようにするために、mutableLiveDataはアクセス修飾子をprivateにしている。
private val mutableLiveData = MutableLiveData
(Android Studio)Gradleのプロキシ設定のやりかた
#エラーの概要
学校や職場では、ネットワークにプロキシ(Proxy)サーバーが使われている。その環境下でAndroid開発を行うと、プロキシサーバーエラーになってしまう。
僕の場合は、学校のネットワークで開発を行っていました。Android studioのプロキシ設定は、**[File]→[settings]→[Appearance&Behavior]→[System Settings]→[HTTP Proxy]**から設定できます。しかし、僕の場合はこれでは解決しませんでした。Gradleエラーになっていまうのです。
#解決策
**Android Studio 4.0**で確認できました。
こちらを参考にしました。 https://qiita.com/hishida/items/9479fb64a016032c0938##1.gradlewかgradlew.batに以下を記述
“`
set JAVA_OPTS=-DproxyHost=myproxy.co.jp //プロキシサーバーのアドレス
-DproxyPort=8080
Flutterのスプラッシュ画面でAndroidのダークテーマ対応
Flutterで開発中に、アプリ内ではダークテーマしたもののスプラッシュ画面が真っ白のままだったのが気になったので、
一番簡単にダークテーマ対応をする方法です。スプラッシュ用の`launch_background.xml`の記述を以下のようにするだけです。
“`launch_background.xml
Kobiton でスマートフォンのリモートテストを試してみた
# 概要
昨今のテレワーク推進の中、スマートフォン開発における課題となるのが実機による動作検証です。
多種多様なスマートフォン端末の準備・利用は、利用者それぞれがテレワークしていると難しくなります。今回は上記課題を解決しうるリモート実機動作検証サービス [Kobiton](https://kobiton.com/) について調査しました。
## TL; DR
– Kobiton https://kobiton.com/ はリモート実機検証できるサービス
– ブラウザからリモートの実機を操作して手動・自動での動作検証が可能
– デスクトップアプリを利用すると、自分たちで用意した実機を使っての動作検証も可能
– 30日間無料トライアル# リモートの実機による動作検証
Kobiton がクラウド上に用意した実機を使って動作確認を行うことができます。
## 利用可能な端末
利用可能な実機の一覧は以下のURLから参照できます。
https://docs.kobiton.com/devices-list/
2020年7月4日時点で208種類のAndroid・iOS端末を利用
[Modern Android] Jetpack Compose その5
こんにちは!7月にになりましたね。
前回に引き続きJetNewを続いて見ながら、
Jetpack Composeを理解しようと思います。
出来ればFlutterと比べながらみようと思います。#今回
HomeScreenのbodyContentを見てみましょう。
drawerContent、topAppBarは前回に確認しました。> bodyContent = { modifier ->
HomeScreenContent(postsRepository, modifier)
}“`kotlin
@Composable
fun HomeScreen(
postsRepository: PostsRepository,
scaffoldState: ScaffoldState = remember { ScaffoldState() }
) {
Scaffold(
scaffoldState = scaffoldState,
drawerContent = {
Firebase Remote Configの挙動について
RemoteConfigは便利なんですが雰囲気で使うと思ったように動かなかったりするのでちゃんとまとめようと思います.
※ QiitaのほうがSEO強そうなのでブログに書いた内容の転載ですが同じものを投稿しておきます
-> https://iwsksky.hatenablog.com/entry/2020/07/04/114815## TL;DL
– fetchAndActivateをするとremoteの値がローカルに保存され参照可能となる
– ローカルキャッシュの期限は最短でも12分でそれ以上の頻度では更新できない
– 参照は通信結果ではなく常にローカルキャッシュの値## 概要
https://firebase.google.com/docs/remote-config/images/param-precedence.png?hl=ja
図1. RemoteConfig概要図[1]抑えておきたい概念は以下の通り
– cache
– fetch/activate
– interval1個ずつ見ていきます.
#### cache
RemoteConfigは常に
Androidスマホ・タブレットは何でもできる!Termuxで動かすアレコレまとめ
「使ってないAndroidスマホ,タブレットがある」
「これサーバーにできないかな?」その夢,**かなえられます。**
少々めんどくさい作業もありますが,やっていけば必ずできます。
# どうやって動かすか
Androidには「Termux」というアプリがあります。
これを使うと,Linuxを動かすことができます。
パッケージもAPTで管理されていて,豊富です。https://play.google.com/store/apps/details?id=com.termux&hl=ja
また,GBoardなどのキーボードですと不便を感じるかもしれません。
「Hacker’s Keyboard」がおすすめです。https://play.google.com/store/apps/details?id=org.pocketworkstation.pckeyboard&hl=ja
## 下ごしらえ
Linuxに触れたことのある方は慣れていると思います。まず,Termuxが端末内のファイルにアクセスできるようにするには権限を与える必要があります。
“`bash
$ te
Flutter辞書
##Widget
**ー部品**
##Constraint Programming
**ー制約プログラミング**
「問題を制約の集合として記述してコンピュータに与えると、コンピュータが制約を充たした答を見つけてくれる」
ことを目指すプログラミング・パラダイムのことだと言えます。
##Sandbox
コンピュータセキュリティ技術において、**サンドボックスは**、外部から受け取ったプログラムを保護された領域で動作させることによって、システムが不正に操作されるのを防ぐセキュリティ機構のこと
##ただの英和辞典
– anatomy:解剖学
– emulate:模倣する
– deploy:展開する
– configure:構成・機能
– resource hog: A computer function that slows processing time.##その他
– みてから自分でやってみよう
– ノートをとるのはありだよ
– 動画は飛ばさない
– わからないことがあれば自分でググってみて、そのあと少し時間をおいてから見直すといいよ
– The most impr
【Kotlin】onClickListenerのパターンとその使い分け方
#はじめに
この記事では私がインプットした`onClickListener`の3つの記法と、そのメリットデメリットを記しています。今回記していくのは3パターンですが、私が恣意的にチョイスしただけで、この3つが全てを網羅している事など無いので悪しからず。##一つ目:クラス全体に掛かるインターフェースを用いる
MainActivityに実装すると仮定したとき、クラス自体に`View.OnClickListener`のインターフェースを参照します。“`
class MainActivity : AppCompatActivity(), View.OnClickListener {override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)button1.setOnClickListener(this)
}o
[Android]自動スクロールで手を動かすことなく実機確認を行う
一覧など、無限スクロールが存在する機能を使用するときに、実機にかかる負担をAndroidStudioのMemory Profilerで監視をし~~重箱の隅をつつく~~品質をチェックしているのだが、手で動かすのがだるい。
なので、無限スクロール自動化をしてみた。
# SampleCode
簡単にRecyclerViewのSampleコードを実装したので、こちらを使用する。
https://github.com/yamachita0109/RecyclerView# 実際に自動scrollしてみた
下記コマンドをコマンドラインに貼り付ければOK。
もっと細かい値を指定したい場合は、[公式ドキュメント](https://developer.android.com/studio/command-line/adb?hl=ja)を参考にすること。“`
$ while [ true ]; do
adb shell input swipe 521 1540 492 432
done;
“`## デモ
![demo.gif](https://qiita-image-store.
net::ERR_CLEARTEXT_NOT_PERMITTED
#エラー:net::ERR_CLEARTEXT_NOT_PERMITTED
#AndroidManifest.xmlに追加
・android:usesCleartextTraffic=”true”
【Android 9.0 Pie】ActivityやFragment以外でのstrings.xmlの呼び出し方の例
## 初めに
定数の管理に便利なstrings.xmlですが、ActivityやFragmentを継承していないクラスで呼び出す際の方法をメモしておきます。## 実装方法
私はApplicationクラスを継承したクラスにコンテキストを生成してしまい、定数取得用の関数を作成して呼び出し側のコードを少しでも削れるようにしてみました。“`java:Model.java
public class Model extends Application {
private static Context context;@Override
public void onCreate() {
super.onCreate();
context = this;
}/**
* 定数取得関数
* strings.xmlに定義した定数をどこからでも取得できる
* @param resId R.string.resId
* @return String 定数
*/
p
RecyclerViewで消えないScrollbarを表示する
## 概要
RecyclerViewで要素が多い際に、まだスクロールできることをユーザーに伝えたかったので調べた際のメモです。## Scrollbarを表示する
表示されるようにするだけなら`RecyclerView`に`scrollbars`項目を指定してやれば良い。
しかしこれだけだと、時間経過でフェードアウトしてしまう。“`
android:scrollbars=”vertical” // 横向きならばhorizontal
“`## Scrollbarが消えないようにする
時間経過で消えないようにするため上述の要素に加えて`fadeScrollbars`に`false`を指定する。“`
android:scrollbars=”vertical” // 横向きならばhorizontal
android:fadeScrollbars=”false”
“`
[Android]インストラメント化テストとローカルテストでコードを共有するには
# はじめに
Androidプロジェクトのテストは、テストの実行環境で以下のふたつに分けられます。– **ローカルテスト**
`module-name/src/test/java/` にあります。
マシンのJVM上で実行されるため、実行時間・リソースがより少なく済みます。
Androidフレームワークを必要に応じてモックする必要があります。– **インストラメント化テスト**
`module-name/src/androidTest/java/` にあります。
実機またはエミュレータ上で実行するため、再現性が高く実行時間・リソースがより多くかかります。
Instrumentation APIからContextなどの値を参照できます。# テストソースにファイルを追加する
これらのテストでコードを共有したり、任意のファイルを参照するには、gradleでテストソースを指定します。例えば、ローカルテスト・インストラメント化テストでコードを共有したい場合、
`module-name/src/sharedTest/java/{アプリのパッケージ名}`配下にファイルを作成し、アプリモ