====== Android開発コマンド ====== ===== エミュレータ ===== * SDカードイメージを指定してAVDを作成 * パス指定 android create avd -n -t 2 -c * サイズ指定 android create avd -n -t 2 -c 512M * エミュレータ起動 emulator -avd * エミュレータに接続 telnet localhost 5554 * リダイレクト(ホストに届いたパケットをエミュレータに転送) * (例) ホストの 1234ポートに届いたパケットをエミュレータの 5678 に転送。 redir add tcp:1234:5678 * リダイレクトを解除 redir del tcp:1234 * リダイレクトの一覧を表示 redir list ---- ===== 位置情報 ===== * 現在位置を設定 geo fix 135.00 34.500 ===== adb ===== * シェル起動 adb shell * 接続されている実機の一覧を表示。 adb devices * エミュレータと実機の両方が存在する場合に、実機(デバイス)に対してコマンドを発行。 adb -d shell * エミュレータと実機の両方が存在する場合に、エミュレータに対してコマンドを発行。 adb -e shell * 複数の実機が接続されている場合に、シリアルNoを指定してコマンドを発行。 adb -s <シリアルNo> shell * コマンド実行\\ (例) "ls -l /" でルートディレクトリを表示 adb shell ls -l / * Activity 起動 adb shell am start -n (例) adb shell am start -n com.package/.Activity * パッケージ一覧表示 adb shell pm list packages * パッケージインストール adb install -r xxx.apk-r: 再インストール * デバイスの状態を表示 adb bugreport * デバッグ接続可能なプロセスの一覧を表示 adb jdwp * 標準出力、エラー出力を使用可能に設定 adb shell stop adb shell setprop log.redirect-stdio true adb shell start ===== ファイル転送 ===== * android のファイルをローカルに転送 adb pull /etc/wifi/wifi.conf . * ローカルのファイルを android に転送 adb push readme.txt <転送先android上のディレクトリ> ===== ログ出力 ===== * ログを継続表示 adb logcat * ログを一度だけ表示 adb logcat -d * ログレベルを指定して表示 adb logcat *:E * 指定可能なログレベル\\ V:Verbose\\ D:Debug\\ I:Information\\ W:Warning\\ E:Error\\ F:Fatal\\ S:Silent * 特定のプログラムに対してログレベルを指定 adb logcat *:E MediaPlayer:D * ログの書式を指定 adb logcat -v time * 指定可能な書式\\ brief: デフォルト\\ process: プロセスIDのみ表示\\ tag: タグのみ表示\\ thread: スレッドIDも表示\\ raw: メッセージのみ表示\\ time: 発生日時を表示\\ long: すべて表示 * 出力するログバッファを指定 adb logcat -b events * ログバッファをクリア adb logcat -c * ログバッファの容量を確認 adb logcat -g * ファイル経由せずにログを MacVim で表示 adb logcat -c adb logcat -v time -d | Vim -g - ===== APKファイル署名 ===== jarsigner -verbose -storepass -keypass <エイリアスパスワード> -keystore <キーストアファイル名> -signedjar <署名後のファイル名>.apk <署名するファイル名>.apk <キーペアのエイリアス>\\ -signedjar を省略すると、対象ファイルに署名して上書きされます。 ===== ビルド ===== * build.xml を生成 android update project -p <プロジェクトのパス> -n <プロジェクト名>(例) android update project -p /usr/local/android-ndk-r7/samples/hello-jni -n hello-jni --target 8AndroidManifest.xml に target 指定がない場合は、次のメッセージが表示されますので、target(Android SDK のバージョン)を指定します。 Error: The project either has no target set or the target is invalid. * その後、ant を実行してビルドします。 adb clean debug adb clean release * release ビルドする場合は、ant.properties をプロジェクトに作成して署名の情報を記述します。 key.store=/home/hoge/my.keystore key.alias=samples key.store.password=storepass key.alias.password=aliaspass * JNI javah javah -classpath ../bin/classes -d . pkg.MyClassname-classpath native メソッドを定義したクラスがビルドされたディレクトリ\\ -d ヘッダーファイルの出力先ディレクトリ android.mk application.mk ndk-build * zipalign\\ zipalign -v 4 元apk 最適化後apk\\ (例) zipalign -v 4 sample_org.apk sample.apk * apktool java -jar apktool.jar d 対象apk(例) java -jar ~/apktool.jar d sample.apk