Android Proguard ExceptionInInitializerError и RuntimeException

Я хочу запутать мой .apk, и у меня возникают проблемы с Proguard. Использование eclipse я включил это:

# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt 

Я использую 4 внешних libs:

  • Android-поддержка-v4.jar
  • девять-старый андроид-lib.jar
  • gson-2.2.2.jar
  • Обще-ю-2.4.jar

Наверное, у меня проблемы с gson:

 private static Type MY_DATA_TYPE = new TypeToken<Pair<Map<Point, Void>, Integer>>() {}.getType(); 

Каждый раз, когда я его использую:

 FATAL EXCEPTION: main java.lang.ExceptionInInitializerError at com.myapp.MyActivity.onCreate(Unknown Source) ... Caused by: java.lang.RuntimeException: Missing type parameter. at com.google.gson.reflect.TypeToken.getSuperclassTypeParameter(Unknown Source) at com.google.gson.reflect.TypeToken.<init>(Unknown Source) 

Я использую эти параметры, но я думаю, что это не поможет:

 -keepattributes Exceptions, InnerClasses, *Annotation*, EnclosingMethod -dontskipnonpubliclibraryclassmembers -libraryjars .../libs/android-support-v4.jar -libraryjars .../libs/nine-old-android-lib.jar -libraryjars .../libs/gson-2.2.2.jar -libraryjars .../libs/commons-io-2.4.jar -keep class java.** { *; } -keep class android.** { *; } -keep class org.** { *; } -keep class com.google.** { *; } -keep class com.facebook.** { *; } -keep class com.nineoldandroids.** { *; } 

Как я могу решить эту проблему и создать запутанный .apk, который работает правильно?
Спасибо за ваше время.

Угадайте, что это проблема «gson», вот решение:

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

Благодаря https://groups.google.com/forum/#!topic/google-gson/6XuHfOoZIKo

Конфигурация Proguard, как показано в примере google gson proguard.

Ссылка на конфигурацию google gson proguard

 ##---------------Begin: proguard configuration for Gson ---------- # 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* # 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 com.google.gson.examples.android.model.** { *; } # Prevent proguard from stripping interface information from TypeAdapterFactory, # JsonSerializer, JsonDeserializer instances (so they can be used in @JsonAdapter) -keep class * implements com.google.gson.TypeAdapterFactory -keep class * implements com.google.gson.JsonSerializer -keep class * implements com.google.gson.JsonDeserializer ##---------------End: proguard configuration for Gson ----------