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

SDLでAndroidアプリを作成

SDL(Simple DirectMedia Layer)を使ってAndroidアプリを作成する手順の覚え書き

※事前にAndroid SDK、Android NDKとSDLはインストールしておきます。

1. android-projectを適当なディレクトリにコピー

$ cp -r /path/SDL/android-projec project

2. project/jniディレクトリにSDLへのシンボリックリンクを作成

$ cd project/jni
$ ln -s /path/SDL

3. ソースコードの準備

project/jni/srcにソースコードを作成し、Android.mkLOCAL_SRC_FILESでファイル名を設定します。

$ cd src
$ vi example.cpp
$ vi Android.mk
$ cd ../..

4. ビルドの準備

local.propertiessdk.dirを指定します。

$ vi local.properties
$ cat local.properties
sdk.dir=/path/Sdk

必要に応じて、AndroidManifest.xmlでSDKのversion指定や、jni/Application.mkAPP_PLATFORMを追加したりします。

$ vi AndroidManifest.xml
$ vi jni/Application.mk

5. ndk-buildでビルド

$ ndk-build

6. デバッグ

$ ant debug
$ ant debug install

ログの出力

$ adb logcat

ログのクリア

$ adb logcat -c

以上です。

もう少し簡単にビルドしたい場合はbuild-scripts/androidbuild.shを実行するだけでもアプリを作成できます。

$ ./androidbuild.sh com.yourcompany.yourapp example.cpp

リンク

Simple DirectMedia Layer – Homepage
http://www.libsdl.org/

Mercurial repositories index
https://hg.libsdl.org/

Download Android Studio and SDK Tools | Android Developers
http://developer.android.com/sdk/index.html

Android NDK | Android Developers
http://developer.android.com/tools/sdk/ndk/index.html

coreのダンプとgdbでのデバッグ

coreをダンプするように設定して、デバッグする手順

1. プログラムのコンパイル

$ g++ -O0 -g example.cpp

最適化無効、デバッグ情報付加でビルド

2. coreをダンプするように設定

$ ulimit -c unlimited

最近の環境ではデフォルトでcoreを出力しない設定になっていることが多いです。

3. ビルドしたプログラムの実行

$ ./a.out
$ ls
a.out core example.cpp

4. デバッグ

$ gdb a.out core