2012年10月11日木曜日

Android Proguardのトレースデバッグ

Androidでアプリリリースする際、Proguardで暗号化は必須。

しかしリリース後のエラー報告には暗号化されたstactraceが通知されるので
実際にどこでエラーになっているかが判断つかない。

そこでproguardのリトレースツールを使用する。


c:\Android\android-sdk\tools\proguard\bin/retrace.bat


ビルド時のproguardフォルダ配下にあるmapping.txtと、エラーのバックトレースを
適当なファイルに保存し、上記ツールを実行すると本当のstactraceを見ることが可能。

◆コマンド
retrace.bat -verbose mapping.txt stacktrace.txt

ちなみにproguardの設定はelipseなら
①project.propertiesに以下の記載
proguard.config=proguard.cfg

②proguard.cfgに必要な記載を行う

自分の場合は、最初ServiceをBindでつかっていたらIInterfaceがproguardの対象になって
いなかったので暗号化したapkファイル動かすとClassないっていわれてエラーになった。

以下の記載を追記してあげれば、IInterfaceをつかっているものもクラス名の置換がおこなわれ
ないため、問題なくうごくー。


-keep public class * extends android.os.IInterface

試験結果

昨日の夜、CGーArtsエンジニアのベーシック、エキスパートの自己採点をした。 実は日曜日には回答が出ていたけど、自信がなく採点するのもやめようかと思っていたがタイミング&勢いでやってしまった。 <結果>  ベーシック:85点  エキスパート:72.5点 70点以上で合格なので...