Android
Firebaseを使ってみたかったので置き換えてみた。 プロジェクトのbuild.gradle dependencies { ... classpath 'com.google.gms:google-services:4.0.0' } アプリのbuild.gradle dependencies { ... implementation "com.google.firebase:firebase-core:16.0.…
今年の11月以降、Google PlayにはtargetSdkVersion26(Android 8.0)以上のアプリしかアップロードできなくなる(新規アプリは8月)。 developers-jp.googleblog.com それでも状況によってはAndroid 2.3をサポートしなければならない場合がある・・・ しかし、…
GitHubでソースを公開していてリリース署名の設定をしたい場合、公開用にはダミーの署名を置き、手元ではそれを上書きしたい。かつ git status でnot stagedのところに上書き内容がいちいち出ないようにプロジェクト外から上書きしたい。 gradle.properties …
ポイントはonOptionsItemSelected()でandroid.R.id.homeをハンドリングしないと反応してくれない点 class MainActivity: AppCompatActivity { ... override fun onCreateOptionsMenu(menu: Menu): Boolean { // Inflate menu resource file. menuInflater.in…
例えばRSSのリストがあり、それを別々のスレッドで処理して全部の処理が終わったらUIを更新したいとする。 RxJavaのflatMap(mapper, combine)を使えばリストのデータを1つ1つのObservable/Flowableに変換して処理できる。 まず第一引数のmapper部分でそれぞ…
久し振りにjacocoの結果みたらあれ・・・なんか結果がおかしいなとなった。 よく見てみるとkotlinに変換したファイル達がコードカバレッジ対象から外れていた・・・ phicdy.hatenablog.com 以下で対応できた sourceDirectories に src/main/kotlin を入れる…
UIテストを実行しようとしたらエラー・・・ ひとまずRun with --stacktraceを押してみる。 ... Caused by: com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536 at com.android.dx.merge.DexMerger$8.updateIndex(DexMerger.ja…
6.2.1入っているように見えるのに怒られる・・・ 再インストールしたら直った。
結論:前もって規約を読んでおけ Gambling | Restricted Content - Developer Policy Center 現在は公開中ですが、最初に公開しようとしたときには公開できませんでした。 play.google.com 規約によるとオンライン ギャンブルを推進するコンテンツおよびサー…
Kotlinに何も考えずにTheoryとDataPointsを使ったテストを書こうとするとデータがJUnitから参照できずエラーになる。 Kotlinにstaticはないのでcompanion objectを作って@JvmFieldをつけることでJUnitから参照できるようになる。 @RunWith(Theories::class) …
なにも考えずに実装を行うとActivityが2重で開いてしまうことがある。 例えばボタンを押して次のActivityが開くとき、そのActivityやIntentに設定をしていなければ、素早く連打することで2重に開くことができる。 修正方法 AndroidManifestでActivityのlaunc…
ImageButtonを使えば簡単にできたので自分用にメモ。 <ImageButton android:id="@+id/ib_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/your_imgae" android:background="?android:selectableItemBackground" android:contentDescription="@string/your_image_desc" /> 参考 stacko…</imagebutton>
自分用にメモ。以下のコードを実行したときのAndroid OSバージョンごとのUIを調べた。 Intent intent = new Intent(context, MainActivity.class); PendingIntent pi = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); …
CircleCIで普通にビルドしていると毎回Android SDKとGradleのダウンロードが行われてビルド時間が長くなってくる。CircleCIにはデフォルトのキャッシュ以外にも自分でキャッシュの設定ができるので、Android SDKとGradleをキャッシュすることでビルドを短く…
追記 Kotlin対応 phicdy.hatenablog.com 最近UTを書くようになってきたのでカバレッジを取ってみました。Gradleにjacocoのプラグインがあるのでそれを使います。 build.gradleはDroidkaigi2017のbuild.gradleを参考にしました。 apply 'jacoco' apply plugin…
UI Automator 2.0を使ってListViewのContextMenuのテストを書きたかったのですが、UiObject2#longClick()ではどうもまくいきませんでした。 動きを見る感じロングクリックの時間が短いですね・・・ 調べるとUiDevice#swipe()でロングクリックしたい場所の座…
ALTER TABLE mytable DROP COLOMN mycolomnを実行すれば完了・・・と思いきや、SQLiteはDROP COLOMNをサポートしていないらしい。 http://www.sqlite.org/faq.html#q11 そのため、以下の手順でカラムを削除した テーブルのデータを全て取得 DROP TABLEでテー…
UI AutomatorはGoogleが開発しているAndroid向け自動UIテストフレームワークです。 2015年3月にバージョンが2.0になりGradleに対応しました。 有名なテストフレームワークのAppiumも中ではUI Automatorを実行しています。 Espressoとの違い Googleはテストフ…
MyCurationの1.2.1でチュートリアルを追加しました。というのもインストールされてもすぐアンインストールされているようで、説明が足りなかったかな・・・と思い始めたためです。 実装を自分でやってもよかったのですが、デザイン的なセンスがないのと、あ…
App StatndbyはAndroid 6.0になって追加された省電力の機能である。 Doze と App Standby 用に最適化する | Android Developers アプリが以下の場合でないとき、そのアプリは"Idle"状態になり、"Idle"状態が長時間続くとバックグラウンドでの通信を1日1回し…
ネットワーク環境に問題がないときは、Googleのページのやり方で設定すればJUnitの環境設定は簡単だけど、Proxyなどでmaven centralに繋がらない場合の対処法 jarファイルのダウンロード リモートリポジトリに繋がらないので、jarファイルをlibsフォルダに置…
MyCuration -キュレーションを作るフィードリーダー - Google Play の Android アプリ だらだらと自分用に作ってたアプリがある程度まとまったので公開しました。 Android4.0以上対応です。 背景 開発の背景としては以下のような背景がありました。 feedlyが…
(追記) 2018/11/15 書き直しました。 phicdy.hatenablog.com Androidの設定画面について AndroidではAPI1から設定画面を生成してくれるPreferenceActivityが用意されている Android 3.0で各設定画面をFragmentに分けるためのPreferenceFragmentが追加された …
Androidでテストを同時並行に実行したいなーと思っていたので作ってみた。 phicdy/Docker-android-envgithub.com Javaのインストール dockerfile/javagithub.com こちらからコードを拝借。ただ、add-aptがデフォルトではUbuntuに入っていないのでatp-getでイ…
adb shell cat /system/build.prop | grep ro\.product\.model | awk -F"=" 'NR==1 {print $2}' | tr -d ' ' | awk -v RS='\r\n' '{print $1}' 詳細はこちらから adbコマンドあれこれ - shima111の日記d.hatena.ne.jp ほとんどの機種は上記記事のコマンドで…
uiautomatorでNoSuchMethodErrorが発生して困っていた問題が解決したのでメモ。 発生までの流れ http://www.atmarkit.co.jp/ait/articles/1410/07/news029.html に従ってテストプロジェクトを作り、ターゲットは、API16(4.1, 4.1.1)としていた。 そして(Andr…
検索してもなぜか、同じActivityで受け取る例ばかり出てくるので、自分のメモ用に。検索を行うActivityをDoSearchActivity、検索結果を受け取るActivityをSearchResultActivityとする。 AndroidManifest 検索を行う側(DoSearchActivity)にandroid.app.defaul…
前月ソニーモバイルコミュニケーションズから発売されたAndroid Wear端末のSmartWatch3を買いました。 SmartWatch 3を買いました - pluea engineering blog SmartWatch 3を買いました - pluea engineering blog SmartWatch3 SWR50 | ソニーモバイルコミュニ…
11/28にソニーからSmartWatch 3が発売されたので早速買ってきました。 SmartWatch3 SWR50 | ソニーモバイルコミュニケーションズ SmartWatch3 SWR50 | ソニーモバイルコミュニケーションズ 値段はビックカメラで26870円でした。 予約なしで買えるのかなと少…
Androidアプリ内で重たい処理を行う場合、処理をメインスレッドで行うと処理が終わるまで画面が止まってしまう。 そのため、スレッドを分けて処理を行わせる。 その際に、処理結果を別スレッドから受け取るときの一つの方法としてHandlerとMessageを使う方法…