2013年5月14日火曜日

sqliteのdbの内容を確認する

実際にandroidの開発をしていると実機での動作確認中に動作確認しているアプリのsqliteのdbの中身を確認したくなることがあります。
その確認する方法の忘備です。

【前提】:対象アプリがデバッグモードであること
①adb shellを実行
adb shell

② run-asコマンドでアプリを起動しdataディレクトリに入る
run-as [対象アプリのパッケージ名]
上記コマンドを実行すると/data/data/[対象アプリのパッケージ名]/へカレントディレクトリが移動し、[files][databases][shared_pref]ディレクトリが見えるようになります。

③sqliteのdbが保存されているディレクトリに移動
cd databases
sqliteのdbはdatabases配下に保存されています。

④dbファイルをsdcardにコピー
cat /data/data/[対象アプリのパッケージ名]/databases/[dbファイル名] > /sdcard/[dbファイル名]

⑤dbファイルを取得
adb pull /sdcard/[dbファイル名] C:tmp[dbファイル名]
上記例では、 WindowsPCの「C:tmp」配下に取得しています。

⑥dbファイルの中身の確認
取得したdbファイルをSQLite Manager等のツールで開き、中身を確認します。
この方法は、すべての実機で実行可能ではないのが残念です。
私の場合、Nexus7で④dbファイルをsdcardにコピーする際にcatの権限がないので確認できませんでした。他の端末ではうまくいったのに。。。

2013年5月13日月曜日

Jot Pro Dampeningを購入

仕事でipad miniのアプリで手書きでメモを取りたかったので、Jot Pro Dampeningを購入しました。

タッチペンとしてこだわったのは、ただ一点で「とにかくペン先が細いもの」でJot Pro Dampeningを選択しました。
以下の点は、気になったもののそれ以外は満足してちゃんとメモをとれているのですごく満足しています。

 ①書く位置が少しずれる
 ②書くときにカツカツ音がする。

後、ペン先の透明ディスク外しちゃいないんですね。私は、ペン先の透明ディスクを外して、文字が書けないというドツボにしばらくはまっていましたorz。


2013年5月10日金曜日

Android Maven Plugin 3.5.0以降で注意する点

以下のAndroid Maven Pluginのサイトの変更履歴を見ると、 3.5.0以降でnon-release apkを作成できるようになっており、そのためrelease apkを作成するためのオプションが追加されています。

https://code.google.com/p/maven-android-plugin/wiki/Changelog

release apkを作成するためのオプションが設定されていないと、デフォルトでnon-releaseモードでapkを作成するため、Android Maven Pluginの3.5.0以下バージョンを使用していたのを、3.5.0以降にバージョンにバージョンアップしてrelease apkをビルドする際はrelease apkを作成するためのオプションが設定されているかの注意が必要になります。

release apkを作成するためのオプションの具体的な指定の仕方は、先ほどのAndroid Maven Pluginのサイトの変更履歴にあるとおり、pomのAndroid Maven Pluginのconfigurationのreleaseにtrueを設定するか、

<groupId>com.jayway.maven.plugins.android.generation2</groupId>
<artifactId>android-maven-plugin</artifactId>
<configuration>
    <release>true</release>

release apkビルド時のmvnコマンドのオプションに「-Dandroid.release=true」を指定する必要があります。

mvn clean deploy -Dandroid.release=true

SharedPreferencesの内容を確認する

実際にandroidの開発をしていると実機での動作確認中に動作確認中のアプリのSharedPreferencesの中身を確認したくなることがあります。

その方法の忘備です。

 

【前提】:対象アプリがデバッグモードであること

①adb shellを実行

adb shell

 

② run-asコマンドでアプリを起動しdataディレクトリに入る

run-as [対象アプリのパッケージ名]

上記コマンドを実行すると/data/data/[対象アプリのパッケージ名]/へカレントディレクトリが移動し、[files][databases][shared_pref]ディレクトリが見えるようになります。

 

③SharedPreferencesが保存されているディレクトリに移動

cd shared_pref

SharedPreferencesはshared_pref配下にxmlで保存されています。

 

④SharedPreferencesの内容の確認

cat [対象SharedPreferencesのファイル名]

 

なお、Windowsのコマンドプロンプト上から、日本語が含まれているSharedPreferencesを確認する場合は、中身を確認した際に日本語の部分が文字化けするので、adb sehll実行前に「コマンドプロンプトのプロパティ」の「フォント」でMSゴシックを指定し、以下のコマンドを実行してコマンドプロンプトの文字コードをUTF-8にしてください。

chcp 65001

 

この方法は、すべての実機で実行可能ではないのでないのが残念です。

私の場合、Nexus7で④のSharedPreferencesの内容の確認する際にcatの権限がないので確認できませんでした。他の端末ではうまくいったのに。。。

2013年5月9日木曜日

HttpClientの通信をdumpする

web apiとやり取りをするandroidアプリの開発でデバッグ時にアプリからどんなリクエストが行われているのか、またどんなレスポンスが返ってきているか確認したい場合があります。
その方法の忘備です。

①ソースコードに以下のコードを追加
java.util.logging.Logger.getLogger("org.apache.http.wire").setLevel(java.util.logging.Level.FINEST); 
java.util.logging.Logger.getLogger("org.apache.http.headers").setLevel(java.util.logging.Level.FINEST);

②adb shellで以下の値を設定
adb shell setprop log.tag.org.apache.http.wire VERBOSE
adb shell setprop log.tag.org.apache.http.headers VERBOSE

ただし、リリース時にはHttpの通信ログ出力によるパフォーマンスの低下やセキュリティ上の観点から、①で記述したコードを削除もしくは、通らないようにする必要があるので注意が必要です。