10

私のアプリは難読化の前に正常に動作しますが、proguard を有効にすると次のエラーが発生します。

2013-05-02 13:43:58.772 E 30138/AndroidRuntime: FATAL EXCEPTION: main java.lang.NumberFormatException: Invalid long: "0.20"
    at java.lang.Long.invalidLong(Long.java:125)
    at java.lang.Long.parse(Long.java:362)
    at java.lang.Long.parseLong(Long.java:353)
    at java.lang.Long.parseLong(Long.java:319)
    at com.sourcetone.data.model.Station.long getId()(SourceFile:195)
    at com.sourcetone.STStationListFragment.void deleteStation(com.sourcetone.data.model.Station)(SourceFile:298)
    at com.sourcetone.STStationListFragment.void access$4(com.sourcetone.STStationListFragment,com.sourcetone.data.model.Station)(SourceFile:293)
    at com.sourcetone.STStationListFragment$ArrayListAdapter$1.void onClick(android.view.View)(SourceFile:274)
    at android.view.View.performClick(View.java:3528)
    at android.view.View$PerformClick.run(View.java:14217)
    at android.os.Handler.handleCallback(Handler.java:605)
    at android.os.Handler.dispatchMessage(Handler.java:92)
    at android.os.Looper.loop(Looper.java:137)
    at android.app.ActivityThread.main(ActivityThread.java:4482)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:511)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:794)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:561)
    at dalvik.system.NativeStart.main(Native Method)

2013-05-02 13:43:58.803 W 472/ActivityManager:   Force finishing activity com.sourcetone/.STMainActivity

私のproguard構成には次のものがあります:

-keep class * implements android.os.Parcelable {
  public static final android.os.Parcelable$Creator *;
}

では、Parcelable は正しく維持する必要がありますか? それがスローしている Invalid Long は、実際には私のリクエストの別の部分であるため、間違った番号を読み取っています。HttpResponse クラスも保持する必要がありますか? 他に何がありますか?

4

2 に答える 2

6
-keep class * implements android.os.Parcelable {
  public static final android.os.Parcelable$Creator *;
}

クラスのすべてのコンテンツをそのまま保持するわけではなく、クラス名と CREATOR メソッドを保持するだけです。

フィールドも Parcelable クラスに保持するようにして、次のようなものを追加します。

-keepclassmembers class * implements android.os.Parcelable {
 public <fields>;
}
于 2015-05-21T12:11:15.323 に答える