日々精進

新しく学んだことを書き留めていきます

2015-02-01から1ヶ月間の記事一覧

finderで表示中のフォルダをターミナルで開くcd toが便利

mac

なかなか便利。 jbtule/cdto インストールは基本上記サイトに書いてある通りでOKだが、.appが複数あるので注意。 iTermを使っている場合はitermフォルダにあるやつを使えばOK。

adb, gradleコマンドを補完する

補完ライブラリの解説は以下参照。 Android開発を爆速にする10のコマンドラインスクリプト - クックパッド開発者ブログ adbの補完ライブラリはbash用のようだったが、↓によるとbash補完ライブラリはzshでも使えるらしい。 I have a bash-tab-completion scri…

APKの署名の設定をlocal.propertiesに書いてビルドする

下記サイトに書いてある通りにやるとできた。 http://wada811.blogspot.com/2014/10/avoid-exposing-signing-config-using-gradle-properties.html できたAPKがちゃんと署名されているかどうかはkeytoolとjarsignerを使うと調べることが出来る。 調べ方は以…

ライブラリのコードを変更し、動作確認するのを楽にする

gradleでライブラリをインストールした場合、ライブラリはコンパイル済みなのでコードを変更してアプリと一緒に動かしてみるということが気軽に出来ない。 ライブラリをアプリのプロジェクトからプロジェクト参照すればライブラリの修正・動作確認が非常に楽…

コードからViewインスタンスを生成する時にStyleを設定する

以下のコンストラクタの第三引数にスタイルを渡せばOK。 View(Context context, AttributeSet attrs, int defStyle) インスタンスを生成した後で変更することはできないっぽい。 参考: http://fujiiyuuki.blogspot.jp/2012/02/android-viewstyle.html

Android StudioのADB pluginが便利

ADB Ideaというpluginをインストールすると、いくつかのadbコマンドをAndroid Studioからワンアクションで実行できるようになり大変便利。 https://plugins.jetbrains.com/plugin/7380?pr=idea 使うのはほぼADB Uninstall Appだけだけど。。ADB Killを実行す…

アプリアイコンにGitのブランチ名、コミットハッシュ値などを表示する

以下のgradle pluginを使う。 splatte/gradle-android-appiconoverlay インストール手順は上記ページのUsageを参考にすればいいが、いくつか注意点が。 なお、確認した環境は以下。 OS X 10.9.5 gradle 2.2.1 以下注意点。 ImageMagickの他にGhostScriptもイ…

ImageMagickのconvertを実行すると「Error while running convert: convert: unable to read font」エラー

原因はghostscriptがインストールされていないため。 Macであれば以下を実行してインストールすると直った。 brew install ghostscript 参考: ImageMagick: Error while running convert: convert: unable to read font

gradleでshell commandを実行する

gradleというかgroovyの機能。以下のようにしてshell commandを実行し、その結果を取得できる。 def proc = 'echo "test"'.execute() proc.waitFor() proc.in.text // 標準出力に出力された文字列を取得する 参考: Groovy - Executing External Processes F…

Dev, Staging等の各環境毎に異なるデータはbuildConfigFieldで指定する

下記記事でpro, freeなどのバージョン毎にリソースをまとめて定義する方法を書いたが、サーバのURLなどDev, Staging等の各環境毎に異なる値にしたいこともある。 2015-02-18 - 日々精進 そういう場合は、buildConfigFieldで指定し、BuildConfigクラスから取…

複数のProductFlavorでリソースを共有する

同じコードベースからpro版, free版を作成する場合などは以下のように6つProductFlavorを作ることが多い。 proDev, proStaging, proProduction, freeDev, freeStaging, freeProduction しかし、Dev,Stagingなどの環境毎にリソースを分けたくない。(文言など…

build variantの一部をビルド対象としない

product flavorを開発環境・テスト環境・本番環境などで分けることはよくあると思うが、 その場合開発環境・テスト環境版はreleaseビルドさせたくないだろう。 そういう場合にbuild variantの一部をビルド対象としないようにするにはvariantFilterを使う。 a…

androidannotationsを使っているプロジェクトでproductFlavorsを追加するとビルドエラーになる

環境: apt plugin: 'com.neenbedankt.gradle.plugins:android-apt:1.4' gradle version:2.2.1 androidannotationsを使っているプロジェクトでproductFlavorsを追加すると':app:proDebugTestCompile' taskが失敗した旨のエラーメッセージが出た。 resourcePa…

mergeタグを使うとdesign viewでviewが崩れる問題

今のところ、design viewを表示するときはmergeタグをLinearLayoutなどに変更するしかなさそう。 ググって解決策がいくつか書いてあるサイトを見つけたが、どれもイマイチだった。 http://gotoanswer.stanford.edu/?q=Preview+layout+with+merge+root+tag+in…

TabHostの高さを設定する

以下のように設定する。 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…

ビルドが成功しているのにsupport libraryに入っているクラス・メソッドが赤文字になっている現象

Android Studio1.1.0を使っているが、ちょくちょくビルドが成功しているのにsupport libraryに入っているクラス・メソッドが赤文字になっている現象が発生する。 そんな時は以下で直る。 赤字になっているところでAlt+Enterを押すとsupport libraryへのclass…

zsh-autosuggestionsをインストールすると.zshrcが削除されたのでincr-0.2.zshにした

zsh-autosuggestionsをインストールすると.zshrcが削除された。。 無言で削除するのはだめでしょう。.zshrcをgitで管理しててよかった。。 .zshrcを復活させても設定が効かなくなっていたのでzsh-autosuggestionsを諦め、incr-0.2.zshを使うことにした。 し…

iTerm2上でCmd+left, Cmd+rightで行頭・行末にカーソルを移動する

手順は以下。 iTerm2の設定でCmd+left, Cmd+rightにエスケープシーケンスを割り当てる bindkeyでエスケープシーケンスに行頭・行末にカーソルを移動する機能を割り当てる 詳細は下記参照 How to bind command key in zsh? iTerm2の設定を使わないといけない…

cd-bookmarkとpecoでお気に入りフォルダへの移動を素早くする

手順は以下。 cd bookmarkをインストールする。手順は以下参照 mollifier/cd-bookmark ショートカット(Ctrl+b)を設定する。.zshrcに以下を追加した。 # パスをブックマークする antigen bundle mollifier/cd-bookmark alias cdb='cd-bookmark' function peco…

antigenでzsh pluginのインストールを楽にする

antigenというzsh pluginマネージャがあることを知り、早速インストールしてみた。 手順は以下のサイトに詳しく書かれています。感謝。 zshのプラグインマネージャーantigenでoh-my-zshの良いとこ取りをする - Glide Note - グライドノート いくつかplugin入…

「最新事例から学ぶ!モバイル向けテスト手法勉強会」で発表してきます

以下の勉強会で発表してきます。 【iOS/Android】最新事例から学ぶ!モバイル向けテスト手法勉強会 (2015/02/28 14:30〜) 発表資料: http://hosokawa0825.github.io/slides/RobolectricPitfalls/#/

RobolectricでAsyncTaskのテストを行った時に、onPostExecuteが実行されない

非同期処理のテストをする場合はRobolectric.runBackgroundTasks()を実行するだけではだめ。 それだとonPostExecuteが呼ばれないため。runUiThreadTasksも呼ぶ必要がある。 AsyncTask task = ...; task.execute(); Robolectric.runBackgroundTasks(); Robole…

Androidのmatryoshka problem(Fragmentが入れ子になると起こる不具合)

matryoshka problemについて詳しく書いているサイトがあったのでメモ。 Android's matryoshka problem だいぶやばいバグだな。。最近FragmentManagerとFragmentTransactionに悩まされてるしFragmentつらい。

テスト用FixtureをYAMLで書くか、JSONで書くか

テストデータをテストコードに直書きするのがつらい場合があるので、 なんらかのフォーマットで別ファイルに切り出すことにした。 YAMLにするかJSONにするかで迷ったが、JSONにした。主な理由は以下。 サーバとのやりとりにJSONを使っているので統一したかっ…

ActivityNotFoundException No Activity found to handle Intentエラー

原因はIntentで指定したaction/URI Schemeを解釈するアプリが無いため。 エミュレータで動かしていたのでGooglePlayアプリが入っていないことが直接の原因だった。 実機で動かしたら正しく動いた。 参考: No Activity found to handle Intent : android.int…

Androidの実機をPCに繋いだが認識されない

具体的にはRunした時に出てくるChoose Deviceウィンドウに繋いだ実機が表示されなくて困った。 直し方は以下。 ターミナルからadb devicesを実行する。デバイスが出てこなかったらadbが認識できてない。 USBコネクタを一旦抜いてまた挿してみる。ダメなら次…

基本的に実行時例外を使うようにするという方針

Javaは例外を無視できないよう、メソッド定義のthrows句でthrowする例外を指定する。 メソッドをの呼び出し側もこれを意識してcatchするなりthrows句に例外を指定するなりしないといけない。 これによって静的なチェックが可能になり、アプリが堅牢になる、…

オブジェクトがあるクラスのインスタンスであることを完全一致で判定する

obj instanceOf Klassだと、KlassのサブタイプでもOKだが厳密にKlassのインスタンスであることを判定したい場合は obj.getClass() == Klass.classとする。 参考: Javaのinstanceof演算子 - とあるソフトウェア開発者のブログ