忘れちゃいそうなアレやコレをメモっておくサイト。




ANR(Application Not Responsing)対策

ANRの内容を知る

スレッドダンプの内容がAndroid端末内に出力される。
コールスタックをみて原因を特定する。

adb shell cat /data/anr/traces.txt

ANRが発生する可能性を調査する


StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectAll().penaltyLog().penaltyDeath().build());
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectAll().penaltyLog().build());

http://developer.android.com/intl/ja/reference/and...

Proguard使用したときのスタックトレースを元に戻す

例外が発生してスタックトレースが表示されると
難読化されたメソッド名で何がなんだかわからない。

それを難読化前のメソッド名に戻す方法。
以下のコマンドを実行する。

Windowsのとき
<SDKのパス>/tools/proguard/bin/retrace.bat

Mac,Linuxのとき
<SDKのパス>/tools/proguard/bin/retrace.sh

第一引数はmapping.txt。
Proguardを使用したときプロジェクトフォルダの配下にproguardフォルダができている。
その中にあるファイル。
(ただしapkをビルドしたときのものを使用すること)
第二引数はスタックトレースが書き込まれたファイル。

http://developer.android.com/intl/ja/tools/help/pr...

APIバージョンを変更したとき

AndroidManifest.xmlのAPIバージョン<uses-sdk android:minSdkVersion>を変更したあとにビルドしても何もエラーが発生しない。
このためエラーに気がつかずに出荷してしまう。
これを防ぐためにAndroid Lintを再実行して警告を確認する。

lint <プロジェクトフォルダパス>

コマンド結果をリダイレクトでテキストに出力することができる。
APIの違いによるエラーのとき以下のようなものが出力される。

hogehoge.java:57: Error: Call requires API level 9 (current min is 8): java.lang.String#isEmpty [NewApi]
  if(tableName==null || tableName.isEmpty())
タグ
×

この広告は60日間更新がないwikiに表示されております。

フリーエリア

Menu

メニューサンプル1

メニューサンプル2

開くメニュー

閉じるメニュー

  • アイテム
  • アイテム
  • アイテム
【メニュー編集】

管理人のみ編集できます