言い訳から始めるのもどうかなと思いますが、とりあえず、Javaは、かなり昔に独学でかじった程度なんです。そんなわけで、出展もはっきり覚えていませんが、Javaというのは、ソースツリーのディレクトリもまたアーキテクチャの一つとしてとらえている言語だったように記憶しています。
隠者は、もともとTags系(etagsとかgtagsとか)を使いません。隠者は、ソースコードを格納するディレクトリも、アーキテクチャをしっかり考え、意味あるものにすべきだと考えてきており、ディレクトリ構成も含めて「アーキテクチャ」として考えられているのであれば、おおよそコードのある位置を覚えてしまう方が、都合がよいからです。そんなわけで、どこに目的のコードがあるかを意識しにくくなるタグジャンプは、記憶力の悪い隠者に便利すぎるツールになってしまうからです。
そのような理由から、普段からソースコードは手作業で追いかけているわけですが、この場合、主にgrepを使う事になります。
ただし、ファイル数が多かったりディレクトリが深くなったりすると、find等もいろいろ組み合わせ結構コマンドを打つのも手間になったりします。
そんなgrepに関して、Androidのbuild/envsetup.shの中に、少しだけ便利になる関数が定義されています。それは
- cgrep PATTERN
- jgrep PATTERN
- resgrep PATTERN
- sgrep PATTERN
です。それぞれ、Cソースコード、Javaソースコード、Resourceファイル、すべてのソースファイルにPATTERNでgrepをかけて、検索したキーワードを色分けして表示してくれるというコマンドです。長々とgrepコマンドを書くことなく、grepがかけられるので、grepで解析する派のあなたには重宝するツールになるでしょう。
ちなみに、他にもいくつかのコマンドが定義されています。ビルド時に使われるものもあれば、開発作業に有用なものもありますので、中身を一度チェックしてみるとよいかもしれません。
なお、以下にコマンドの一覧と、わかるものには簡単な解説なり、コメントの抜書きなりを記載しておきます。
ずいぶん大量に穴があいてますが、穴埋めは今後の課題ということでお許しください。
- help
- helpを表示する(一部のコマンドのみ)
- get_abs_build_var
- Get the value of a build variable as an absolute path.
- get_build_var
- Get the exact value of a build variable.
- check_product
- check to see if the supplied product is one we can build
- check_variant
- check to see if the supplied variant is valid
- setpaths
- printconfig
- set_stuff_for_environment
- set_sequence_number
- settitle
- choosesim
- choosetype
- chooseproduct
- choosevariant
- choosecombo
- add_lunch_combo
- print_lunch_menu
- lunch
- tapas
- Configures the build to build unbundled apps.Run tapas with one ore more app names (from LOCAL_PACKAGE_NAME)
- gettop
- topディレクトリを表示する
- m
- プロジェクトのトップディレクトリでmakeを行う。
- findmakefile
- 現在のディレクトリを上に遡りながら、Android.mkファイルを見つける
- mm
- 現在のディレクトリのAndroid.mk内のモジュールをトップディレクトリからmakeする
- mmm dirname
- dirnameで指定したディレクトリのAndroid.mk内のモジュールをトップディレクトリからmakeする
- croot
- トップディレクトリに移動する
- cproj
- ディレクトリを上に遡りAndroid.mkのあるディレクトリに移動する
- pid program
- adb接続した先のprogramのPIDを取得する
- systemstack
- systemstack - dump the current stack trace of all threads in the system process to the usual ANR traces file
- gdbclient [EXE] [PORT] [PROG]
- arm-eabi-gdbを起動し、各種シンボルを読み込んでgdbserverへ接続する
- sgrep PATTERN
- .*\.(c|h|cpp|S|java|xml|sh|mk)に対してPATTERNでgrepをかける
- jgrep PATTERN
- .*\.javaに対してPATTERNでgrepをかける
- cgrep PATTERN
- .*\.cに対してPATTERNでgrepをかける
- resgrep PATTERN
- *\.xmlに対してPATTERNでgrepをかける
- mgrep PATTERN
- .*/(Makefile|Makefile\..*|.*\.make|.*\.mak|.*\.mk)に対してPATTERNでgrepをかける
- treegrep PATTERN
- .*\.(c|h|cpp|S|java|xml)に対して、grep -iをかける
- getprebuilt
- ANDROID_PREBUILTS変数の値を取得する
- tracedmdump tracename
- tracenameのdmtraceを実行する
- runhat [ -d | -e | -s serial ] target-pid [output-file]
- communicate with a running device or emulator, set up necessary state,and run the hat command.
- getbugreports
- /sdcard/bugreportsのバグレポートファイルを取得する
- startviewserver
- stopviewserver
- isviewserverstarted
- smoketest
- SmokeTestApp.apk SmokeTest.apkを再インストールし実行する?
- runtest args
- argsを引数として/development/testrunner/runtest.pyを実行する
- godir regexp
- PATTERNにマッチするディレクトリのリストを表示し、選択されたディレクトリに移動する
- set_java_home
- JAVA_HOME環境変数がない場合に固定値を設定する
0 件のコメント:
コメントを投稿