Gentoo」カテゴリーアーカイブ

Gentoo Linuxおよび他のディストリビューションを含むLinux全般についてのカテゴリーです。

LinuxでAndroidアプリをデバッグする手順

Android端末のセットアップ

USB debuggingの有効化

Setting >> About Phone

下にスクロールして、「Build number」と書かれている部分を複数回タップします。

You are now a developer!

と表示され、Settingsに「Developer options」という項目が追加されますので、そこから「USB debugging」をOnに設定します。

PC(Linux)側のセットアップ

udev rulesの設定

rootでログインして、udev ruluesに使いたい端末の情報とデバッグするユーザーの情報を追加します。

# vi /etc/udev/rules.d/51-android.rules
# cat /etc/udev/rules.d/51-android.rules
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="android"

GROUPはデバッグで使いたいユーザーの所属するグループです。

ATTR{idVendor}ばデバッグで使いたいAndroid端末のVendor IDを設定します。Vendor IDは公開されている情報を参照するか、lsusbなどのコマンドを使って確認できます。

$ lsusb
Bus 001 Device 001: ID 18d1:**** Google Inc. Nexus 4 (debug)

udev rulesが設定できたらリロードします。

# udevadm control --reload-rules

デバッグ

後はプログラムをビルドして、デバッグしていきます。

ビルドとデバッグに必要なAndroid SDKは下記リンクよりダウンロードできます。

Installing the Android SDK | Android Developers
http://developer.android.com/sdk/installing/index.html


以下、よく使うコマンドをいくつかメモしておきます。

adb devices

接続されている端末の表示

$ adb devices
List of devices attached
01234567        device

adb start-server/adb kill-server

adb serverの実行

$ adb start-server

adb serverの停止

$ adb kill-server

apkのインストール

$ adb install bin/yourapp.apk

-rオプションで上書きインストールできます。

$ adb install -r bin/yourapp.apk

adb logcat

ログの表示

$ adb logcat

-cオプションでログ情報のクリアします。

$ adb logcat -c

タグを指定してフィルタリング

$ adb logcat -s "Tag"

screencap(おまけ)

screencapを使うとコマンドラインからスクリーンキャプチャーを取得することができます。

$ adb shell screencap -p /sdcard/example.png

screenrecord(おまけ)

4.4 Kitkat以降のデバイスでは、screenrecordコマンドを使って画面表示を動画で記録できます。

$ adb shell screenrecord /sdcard/example.mp4

記録した動画ファイルをPCへの転送はadb pullで行えます。

$ adb pull /sdcard/example.mp4 /tmp/

Android端末の動画ファイルはshellのrmコマンドで行えます。

$ adb shell rm -i /sdcard/example.mp4

リンク

Using Hardware Devices | Android Developers
http://developer.android.com/tools/device.html

Android Debug Bridge | Android Developers
http://developer.android.com/tools/help/adb.html

Failed to emerge cross-i686-mingw32/gcc-4.8.3

/var/tmp/portage/cross-i686-mingw32/gcc-4.8.3/work/gcc-4.8.3/libsanitizer/interception/interception_win.cc: In function ‘void __interception::WriteJumpInstruction(char*, char*)’:
   /var/tmp/portage/cross-i686-mingw32/gcc-4.8.3/work/gcc-4.8.3/libsanitizer/interception/interception_win.cc:52:3: error: ‘ptrdiff_t’ was not declared in this scope

cross-i686-mingw32/gcc-4.8.3のビルドエラーです。

USE=-sanitize

でとりあえずビルドが通るようです。

リンク

Gentoo Forums :: View topic – [solved] cross-mingw32/gcc-4.8.3 fails to rebuild
http://forums.gentoo.org/viewtopic-p-7636368.html

QEMUでfloppy diskイメージの使い方

QEMUでホストとのファイル共有のため、floppy diskイメージを使うことがあります。その際に使うコマンドを少しまとめておこうと思います。

floppy diskイメージの作成

$ qemu-img create -f raw floppy.img 1440k
$ mkfs.msdos floppy.img

floppy diskイメージを読み込んだ状態でQEMUを起動する

$ qemu -hda disk.img -fda floppy.img

disk.imgはhard diskイメージ、floppy.imgはfloppy diskイメージ

floppy diskイメージの交換

1. floppy diskの取り出し

QEMU上でCtrl-Alt-2キーを押して、下記を入力します。

(qemu) eject floppy0

floppy0の部分は環境によって変わることががります。Tabキーで補間されるので、分かると思います。

2. floppy diskイメージの交換

QEMU上でCtrl-Alt-2を押して、下記を入力します。

(qemu) change floppy0 floppy.img

floppy.imgの部分は実際には、floppy diskイメージへのパスを指定します。

ループバックでfloppy diskイメージをマウントする方法

floppy.img/mnt/floppyにマウント

# mount -o loop floppy.img /mnt/floppy

アンマウントは普通にumountでできます。

# umount /mnt/floppy