그래서 나는 여기와 다른 곳에서 수천 개의 스레드를 읽으며 여전히 나를 위해 일하지 않는다. 해당 오류 중 하나는 참조 된 클래스 sun.misc.Unsafe를 찾을 수 없거나 해당 클래스에서 dontwarn을 사용하면 컴파일되지만 gson 부분은 어느 시점에서 ClassCastExecption을 반환합니다.gson obfuscation proguard errors
지금 - 나는 직렬화 된 클래스가 난독 설정에서 -keep로 표시 shuold 것을 알고있다, 그러나 나는 내가 여전히 제대로 내 코드를 당황하게하지, -keepattributes 주석 및 서명에 대해 알고.
내 난독 화 - project.txt 부착
-optimizationpasses 2
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontskipnonpubliclibraryclassmembers
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic
-allowaccessmodification
-renamesourcefileattribute SourceFile
-keepattributes SourceFile,LineNumberTable
-repackageclasses ''
-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.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*(...);
}
-keepattributes Signature
-keepattributes *Annotation*
# Gson specific classes
-keep class sun.misc.Unsafe { *; }
-keep class com.google.gson.stream.** { *; }
# Application classes that will be serialized/deserialized over Gson
-keep class my.package.model.** { *; }
-keep class com.google.gson.** { *; }
-keepclasseswithmembernames class * {
native <methods>;
}
-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keepclassmembers class **.R$* {
public static <fields>;
}
-keep class net.sqlcipher.** {
*;
}
-assumenosideeffects class android.util.Log {
public static *** e(...);
public static *** w(...);
public static *** wtf(...);
public static *** d(...);
public static *** v(...);
public static *** i(...);
}
나는이 gson example proguard settings
명백하게 -keepattributes 예외, 내부 클래스, 서명, 사용되지 않음, SourceFile, LineNumberTable, * Annotation *, EnclosingMethod sorta helped. 나는 어떤 단서를 얻었는지 모르겠지만, 로그가 출력을 차단하지 못하면 그냥 StringBuffer로 바뀐다. lol –
당신은 당신 자신의 대답으로이 코멘트를 게시 할 수있다. – giampaolo