android
それぞれの特徴は以下。 Serializable Serializeロジックを自分で実装しなくて良いので楽。Serializeしたくないフィールドにはtransientを付ける。 Parcelable アプリ間でデータをやりとりすることができる ロジックを自分で書かないといけないので面倒。joh…
Debugではこのエラーが出るが、Runだと出ない サーバに接続できないとこのようなエラーが出るという報告が以下の記事であるが、サーバには接続できている Can't debugging JUnit + Roboloctric test in Android Studino with gradle gradlew buildを実行して…
説明しづらいけど、現象は以下。 HOME画面のアイコンをタップしてアプリを起動する アプリ使用中にHOMEボタンをタップしてアプリをバックグラウンドに送る HOME画面のアイコンをタップして再度アプリをフォアグラウンドにする 起動画面が表示されてしまう(…
原因はビルドの中間成果物が残っていたことだった。 ./gradlew cleanを実行したら直った。
理由は以下。 Icepickはビルド時にクラス名にsuffixを付ける。(classファイルの中を調べるとクラス名が変わっている) AndroidAnnotationsはサブクラスを生成する。そのクラスにはsuffixが付いていない。 IcepickはSuffixが付いているクラスのみRestore/Sav…
Dialogを表示すると通常は上下左右とも真ん中寄せになるが、下寄せで幅は画面いっぱいにしたい場合は以下のコードをDialogFragmentのサブクラスに実装すればよい。 @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityC…
potatotipsで発表してきます。 【第15回】potatotips(iOS/Android開発Tips共有会) (2015/03/12 19:00〜) 発表資料は以下。 http://hosokawa0825.github.io/slides/GradleTips/#/
補完ライブラリの解説は以下参照。 Android開発を爆速にする10のコマンドラインスクリプト - クックパッド開発者ブログ adbの補完ライブラリはbash用のようだったが、↓によるとbash補完ライブラリはzshでも使えるらしい。 I have a bash-tab-completion scri…
下記サイトに書いてある通りにやるとできた。 http://wada811.blogspot.com/2014/10/avoid-exposing-signing-config-using-gradle-properties.html できたAPKがちゃんと署名されているかどうかはkeytoolとjarsignerを使うと調べることが出来る。 調べ方は以…
gradleでライブラリをインストールした場合、ライブラリはコンパイル済みなのでコードを変更してアプリと一緒に動かしてみるということが気軽に出来ない。 ライブラリをアプリのプロジェクトからプロジェクト参照すればライブラリの修正・動作確認が非常に楽…
以下のコンストラクタの第三引数にスタイルを渡せばOK。 View(Context context, AttributeSet attrs, int defStyle) インスタンスを生成した後で変更することはできないっぽい。 参考: http://fujiiyuuki.blogspot.jp/2012/02/android-viewstyle.html
ADB Ideaというpluginをインストールすると、いくつかのadbコマンドをAndroid Studioからワンアクションで実行できるようになり大変便利。 https://plugins.jetbrains.com/plugin/7380?pr=idea 使うのはほぼADB Uninstall Appだけだけど。。ADB Killを実行す…
以下のgradle pluginを使う。 splatte/gradle-android-appiconoverlay インストール手順は上記ページのUsageを参考にすればいいが、いくつか注意点が。 なお、確認した環境は以下。 OS X 10.9.5 gradle 2.2.1 以下注意点。 ImageMagickの他にGhostScriptもイ…
gradleというかgroovyの機能。以下のようにしてshell commandを実行し、その結果を取得できる。 def proc = 'echo "test"'.execute() proc.waitFor() proc.in.text // 標準出力に出力された文字列を取得する 参考: Groovy - Executing External Processes F…
下記記事でpro, freeなどのバージョン毎にリソースをまとめて定義する方法を書いたが、サーバのURLなどDev, Staging等の各環境毎に異なる値にしたいこともある。 2015-02-18 - 日々精進 そういう場合は、buildConfigFieldで指定し、BuildConfigクラスから取…
同じコードベースからpro版, free版を作成する場合などは以下のように6つProductFlavorを作ることが多い。 proDev, proStaging, proProduction, freeDev, freeStaging, freeProduction しかし、Dev,Stagingなどの環境毎にリソースを分けたくない。(文言など…
product flavorを開発環境・テスト環境・本番環境などで分けることはよくあると思うが、 その場合開発環境・テスト環境版はreleaseビルドさせたくないだろう。 そういう場合にbuild variantの一部をビルド対象としないようにするにはvariantFilterを使う。 a…
環境: apt plugin: 'com.neenbedankt.gradle.plugins:android-apt:1.4' gradle version:2.2.1 androidannotationsを使っているプロジェクトでproductFlavorsを追加すると':app:proDebugTestCompile' taskが失敗した旨のエラーメッセージが出た。 resourcePa…
今のところ、design viewを表示するときはmergeタグをLinearLayoutなどに変更するしかなさそう。 ググって解決策がいくつか書いてあるサイトを見つけたが、どれもイマイチだった。 http://gotoanswer.stanford.edu/?q=Preview+layout+with+merge+root+tag+in…
以下のように設定する。 for (int i = 0; i < host.getTabWidget().getTabCount(); i++) { host.getTabWidget().getChildAt(i).getLayoutParams().height = getResources().getDimensionPixelSize(R.dimen.tab_bar_height); } 参考: How to resize the heig…
Android Studio1.1.0を使っているが、ちょくちょくビルドが成功しているのにsupport libraryに入っているクラス・メソッドが赤文字になっている現象が発生する。 そんな時は以下で直る。 赤字になっているところでAlt+Enterを押すとsupport libraryへのclass…
以下の勉強会で発表してきます。 【iOS/Android】最新事例から学ぶ!モバイル向けテスト手法勉強会 (2015/02/28 14:30〜) 発表資料: http://hosokawa0825.github.io/slides/RobolectricPitfalls/#/
matryoshka problemについて詳しく書いているサイトがあったのでメモ。 Android's matryoshka problem だいぶやばいバグだな。。最近FragmentManagerとFragmentTransactionに悩まされてるしFragmentつらい。
テストデータをテストコードに直書きするのがつらい場合があるので、 なんらかのフォーマットで別ファイルに切り出すことにした。 YAMLにするかJSONにするかで迷ったが、JSONにした。主な理由は以下。 サーバとのやりとりにJSONを使っているので統一したかっ…
原因はIntentで指定したaction/URI Schemeを解釈するアプリが無いため。 エミュレータで動かしていたのでGooglePlayアプリが入っていないことが直接の原因だった。 実機で動かしたら正しく動いた。 参考: No Activity found to handle Intent : android.int…
具体的にはRunした時に出てくるChoose Deviceウィンドウに繋いだ実機が表示されなくて困った。 直し方は以下。 ターミナルからadb devicesを実行する。デバイスが出てこなかったらadbが認識できてない。 USBコネクタを一旦抜いてまた挿してみる。ダメなら次…
Javaは例外を無視できないよう、メソッド定義のthrows句でthrowする例外を指定する。 メソッドをの呼び出し側もこれを意識してcatchするなりthrows句に例外を指定するなりしないといけない。 これによって静的なチェックが可能になり、アプリが堅牢になる、…
obj instanceOf Klassだと、KlassのサブタイプでもOKだが厳密にKlassのインスタンスであることを判定したい場合は obj.getClass() == Klass.classとする。 参考: Javaのinstanceof演算子 - とあるソフトウェア開発者のブログ
カスタムThemeを定義し、それをActivityのThemeにすればよい。 詳細は下記サイトの例参照。 How to change the font size of tabhost in android
sizeがunknownな場合に-1を返す仕様らしい。 zipファイルをmacで作ると-1を返すようになり、Windowsで作ると正しいサイズをとれるようになった。 うーん、なぜだ。 参考: Inconsistency between ZipEntry size for ZipInputStream and JarInputStream