Skip to content

Instantly share code, notes, and snippets.

@keijidosha
Created September 8, 2017 06:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save keijidosha/6554a1709cc389a32f9b134ff3acbff5 to your computer and use it in GitHub Desktop.
Save keijidosha/6554a1709cc389a32f9b134ff3acbff5 to your computer and use it in GitHub Desktop.

エミュレータ

  • SDカードイメージを指定してAVDを作成
    パス指定
  • android create avd -n <AVD名> -t 2 -c <SDイメージファイルパス>
    サイズ指定
  • android create avd -n <AVD名> -t 2 -c 512M
  • エミュレータ起動
    emulator -avd <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
  • コマンド実行
    adb shell ls -l /
  • Activity 起動
    adb shell am start -n <Activity のパッケージ/.クラス名>
    (例) 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 <STOREファイルパスワード> -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 8
    
    AndroidManifest.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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment