2015-01-26 3 views
0

내 프로젝트에서 proguard를 실행 한 후 모든 것이 잘되었지만 문제가 있습니다. 규칙에 gson에 대한 사양을 사용하지만 난 여전히 이런 종류의 오류 있어요. 일반적으로이 코드는 잘 작동합니다. 흠 any1 어떤 아이디어가 있습니까? proguarding android project gson

com.google.gson.p: java.lang.NumberFormatException: Invalid double: "1271.jpg" 
      at com.google.gson.b.a.q$29.a(Unknown Source) 
      at com.google.gson.b.a.q$29.b(Unknown Source) 
      at com.google.gson.b.a.k$1.a(Unknown Source) 
      at com.google.gson.b.a.l.b(Unknown Source) 
      at com.google.gson.d.a(Unknown Source) 
      at com.google.gson.d.a(Unknown Source) 
      at com.google.gson.d.a(Unknown Source) 
      at pl.app.model.f.a(Unknown Source) 
      at pl.app.fragment.g.a.a(Unknown Source) 
      at android.support.v4.app.Fragment.i(Unknown Source) 
      at android.support.v4.app.m.a(Unknown Source) 
      at android.support.v4.app.m.b(Unknown Source) 
      at android.support.v4.app.Fragment.f(Unknown Source) 
      at android.support.v4.app.o.b(Unknown Source) 
      at android.support.v4.view.ViewPager.a(Unknown Source) 
      at android.support.v4.view.ViewPager.c(Unknown Source) 
      at android.support.v4.view.ViewPager.onMeasure(Unknown Source) 
      at android.view.View.measure(View.java:17479) 
      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5364) 
      at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1410) 
      at android.widget.LinearLayout.measureVertical(LinearLayout.java:695) 
      at android.widget.LinearLayout.onMeasure(LinearLayout.java:588) 
      at android.view.View.measure(View.java:17479) 
      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5364) 
      at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
      at android.view.View.measure(View.java:17479) 
      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5364) 
      at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
      at android.view.View.measure(View.java:17479) 
      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5364) 
      at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
      at android.view.View.measure(View.java:17479) 
      at net.simonvt.menudrawer.OverlayDrawer.onMeasure(Unknown Source) 
      at android.view.View.measure(View.java:17479) 
      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5364) 
      at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
      at android.view.View.measure(View.java:17479) 
      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5364) 
      at com.android.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:412) 
      at android.view.View.measure(View.java:17479) 
      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5364) 
      at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
      at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2532) 
      at android.view.View.measure(View.java:17479) 
      at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2262) 
      at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1391) 
      at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1590) 
      at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1249) 
      at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6585) 
      at android.view.Choreographer$CallbackRecord.run(Choreographer.java:803) 
      at android.view.Choreographer.doCallbacks(Choreographer.java:603) 
      at android.view.Choreographer.doFrame(Choreographer.java:573) 
      at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:789) 
      at android.os.Handler.handleCallback(Handler.java:733) 
      at android.os.Handler.dispatchMessage(Handler.java:95) 
      at android.os.Looper.loop(Looper.java:136) 
      at android.app.ActivityThread.main(ActivityThread.java:5586) 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:515) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084) 
      at dalvik.system.NativeStart.main(Native Method) 
    Caused by: java.lang.NumberFormatException: Invalid double: "1271.jpg" 
      at java.lang.StringToReal.invalidReal(StringToReal.java:63) 
      at java.lang.StringToReal.parseDouble(StringToReal.java: 

내 난독 파일 :

내 GSON의 proguarding이 설정을 사용
-optimizationpasses 5 
-dontusemixedcaseclassnames 
-dontskipnonpubliclibraryclasses 
-dontpreverify 
-verbose 
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/* 

-keepattributes Signature,RuntimeVisibleAnnotations,AnnotationDefault,*Annotation* 
-keep public class * extends android.app.Activity 
-keep public class * extends android.app.Application 
-keep public class * extends android.app.Service 
-keep public class * extends android.content.BroadcastReceiver 
-keep public class * extends android.content.ContentProvider 
-keep public class * extends android.app.backup.BackupAgentHelper 
-keep public class * extends android.preference.Preference 
-keep public class com.android.vending.licensing.ILicensingService 
-keep public class * extends android.app.backup.BackupAgent 
-keep public class * extends android.app.Fragment 

-keepclasseswithmembernames class * { 
    native <methods>; 
} 

-keep public class * extends android.view.View { 
    public <init>(android.content.Context); 
    public <init>(android.content.Context, android.util.AttributeSet); 
    public <init>(android.content.Context, android.util.AttributeSet, int); 
    public void set*(...); 
} 

-keepclasseswithmembers class * { 
    public <init>(android.content.Context, android.util.AttributeSet); 
} 

-keepclasseswithmembers class * { 
    public <init>(android.content.Context, android.util.AttributeSet, int); 
} 

-keepclassmembers class * extends android.app.Activity { 
    public void *(android.view.View); 
} 

-keepclassmembers enum * { 
    public static **[] values(); 
    public static ** valueOf(java.lang.String); 
} 

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

-keepclassmembers class **.R$* { 
    public static <fields>; 
} 

-dontwarn android.support.** 
-dontwarn com.google.android.gms.** 
-dontwarn okio.** 
-dontwarn org.xmlpull.v1.** 
-dontwarn com.commonsware.cwac.merge.** 

-keep class org.xmlpull.** { *; } 
-dontwarn org.xmlpull.v1.** 


## Gson 
-keepattributes Signature 
-keep class sun.misc.Unsafe { *; } 
-keep class com.google.gson.stream.** { *; } 
-keep class com.google.gson.examples.android.model.** { *; } 

## Joda time 
-dontwarn org.joda.convert.** 

## Guava 
-keep,allowoptimization class com.google.inject.** { *; } 
-keep,allowoptimization class javax.inject.** { *; } 
-keep,allowoptimization class javax.annotation.** { *; } 
-keep,allowoptimization class com.google.inject.Binder 

## CouchBase-Lite 
-keepattributes *Annotation*,EnclosingMethod 
-keep public enum * { public static **[] values(); public static ** valueOf(java.lang.String); } 
-keepnames class com.codehaus.jackson.** { *; } 
-keep class org.ektorp.** { *; } 
-keep class com.couchbase.cblite.router.CBLRouter { *; } 
-keep class com.couchbase.touchdb.TDCollateJSON { *; } 
-keepclasseswithmembers class * { native <methods>; } 

## Picasso 
-dontwarn com.squareup.okhttp.** 

## Zxing 
-keep class com.google.zxing.client.android.camera.open.** 
-keep class com.google.zxing.client.android.common.executor.** 

-keepclasseswithmembers public class * { 
    public static void main(java.lang.String[]); 
} 

-keepclassmembers,allowoptimization class com.google.common.* { 
    void finalizeReferent(); 
    void startFinalizer(java.lang.Class,java.lang.Object); 
} 

#eventbus 
-keepclassmembers class ** { 
    public void onEvent*(**); 
} 


-dontnote android.** 
-dontnote java.** 
-dontnote javax.** 
-dontnote junit.** 
-dontnote org.** 
-dontnote dalvik.** 
-dontnote com.android.internal.** 

# Stop warnings about missing unused classes 
-dontwarn com.google.common.** 
-dontnote com.google.common.** 
+2

당신이하려는 클래스를 당황 했 알려 드 -) 직렬화? 이로 인해 Java 및 JSON 필드 간의 매핑이 중단 될 수 있습니다. – JimmyB

+0

모델을 난처하게합니다. 하지만 내 애플 리케이션의 모든 모듈에 모델을 사용합니다. 그리고 1에서 그것은 작동하지 않습니다. – Kamil

+0

당신이 옳았다. 이 모델에는 작동하지 않는 독특한 필드가 있습니다. – Kamil

답변

0

, 그것을 시도하고 (나

## GSON 2.2.4 specific rules ## 

# Gson uses generic type information stored in a class file when working with fields. Proguard 
# removes such information by default, so configure it to keep all of it. 
-keepattributes Signature 

# For using GSON @Expose annotation 
-keepattributes *Annotation* 

-keepattributes EnclosingMethod 

# Gson specific classes 
-keep class sun.misc.Unsafe { *; } 
-keep class com.google.gson.stream.** { *; }