Android Studioの便利機能等

Toru Hosokawa
twitter:@anton0825
facebook:toru.hosokawa1
github:hosokawa0825
blog:http://d.hatena.ne.jp/anton0825/

2015.2.18

呼ばれたメソッドをログに出す

手書きは面倒。。


                    @Override
                    protected void onCreate(final Bundle savedInstanceState) {
                        super.onCreate(savedInstanceState);
                        Log.d("HomeActivity", "onCreate");
                    }
                

メソッド化


                    public class MyUtils {
                        public static void log(Object obj) {
                            Log.d(obj.getClass().getSimpleName(), "(" + obj.hashCode() + "):" + Thread.currentThread().getStackTrace()[3].getMethodName());
                        }
                    }
                

呼び出し側


                    @Override
                    protected void onCreate(final Bundle savedInstanceState) {
                        super.onCreate(savedInstanceState);
                        MyUtils.log(this);
                    }
                

吐かれたログ


                    D/Tab1Fragment﹕ (549828625):onViewCreated
                

使って良かったライブラリ

Icepick

InstanceStateのsaveとrestoreを簡単にできる


                    class ExampleActivity extends Activity {
                        @Icicle String username; // save/restoreされる

                        @Override public void onCreate(Bundle savedInstanceState) {
                            super.onCreate(savedInstanceState);
                            Icepick.restoreInstanceState(this, savedInstanceState);
                        }

                        @Override public void onSaveInstanceState(Bundle outState) {
                            super.onSaveInstanceState(outState);
                            Icepick.saveInstanceState(this, outState);
                        }
                    }
                
AssertJ

Assertionライブラリ。fest-androidの後継プロジェクト


                    assertThat(frodo.getName()).isEqualTo("Frodo");
                
JSONassert

JSONに特化したAssertionライブラリ


                    JSONObject data = getRESTData("/friends/367.json");
                    String expected = "{friends:[{id:123,name:\"Corby Page\"},{id:456,name:\"Carter Page\"}]}";
                    JSONAssert.assertEquals(expected, data, false);
                

Android Studio Tips

コマンドの検索


  • Mac: Cmd+Shift+a
  • windows: Ctrl+Shift+a

コード補完決定時のTabとEnterの挙動の違い。
Enterだと補完文字が挿入されるだけだが、Tabだと前方にある文字列を置換する。

パラメータの情報を表示する。


  • Mac: Cmd+P
  • windows: Ctrl+P

ActiveなPanel/Tabを切り替える


  • Mac/windows: Ctrl+Tab

データがどこから来たものか、どこに渡されるのかを表示する。ただし、静的解析なので参考程度に。


  • メニューのAnalyze → Analyze Data Flow to/from Here

ファイルをブランチ間で比較する


  • メニューのVCS -> Git -> Compare With Branch

Break Pointにヒットした時にログを出す


  • Break Pointを右クリック -> Suspendのチェックを外す -> Log evaluated Expressionに式を書く

Break PointをDisableにする


  • Break PointをAlt+左クリック

変数の中身を表示する


  • デバッグ実行中に変数をAlt+左クリック

オブジェクトにラベルを付ける


  • 変数を右クリックし、Mark Objectをクリック

選択範囲の拡大縮小


  • Mac: Alt+Up/Down
  • windows: Ctrl+w/Ctrl+Shift+w

ファイル履歴。incrementalに絞り込み可能。


  • Mac: Cmd+e
  • windows: Ctrl+e

メソッドの順序を入れ替える


  • Mac: Cmd+Alt+Up/Down
  • windows: Ctrl+Shift+Up/Down

行をまとめる


  • Mac: Ctrl+Shift+j
  • windows: Ctrl+Shift+j

Editorで表示しているファイルをFinderで開く。直接のショートカットは無いのでSelect inから行う。


  • Mac: Alt+F1の後、「R」を入力し、Enter
  • windows: Alt+F1の後、「R」を入力し、Enter

メソッド・インナークラスを移動する


  • Mac: Ctrl+Up/Down
  • windows: Alt+Up/Down

Editorの中にあるメソッドやクラスを検索する


  • Mac: Cmd+F12
  • windows: Ctrl+F12

メソッドの呼び出し階層を表示する


  • Mac: Ctrl+Alt+h
  • windows: Ctrl+Alt+h