Gui*_*lhE 3 obfuscation android proguard gson
我想混淆我的.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
Run Code Online (Sandbox Code Playgroud)
我正在使用4个外部库:
我想我在使用gson时遇到了麻烦:
private static Type MY_DATA_TYPE = new TypeToken<Pair<Map<Point, Void>, Integer>>() {}.getType();
Run Code Online (Sandbox Code Playgroud)
我每次使用它:
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)
Run Code Online (Sandbox Code Playgroud)
我正在使用这个选项,但我想它不会有帮助:
-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.** { *; }
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题并创建一个可以正常工作的混淆的.apk?
谢谢你的时间.
猜猜这是一个gson"问题",这是解决方案:
-keepattributes Signature
-keep class sun.misc.Unsafe { *; }
-keep class com.google.gson.examples.android.model.** { *; }
Run Code Online (Sandbox Code Playgroud)
感谢https://groups.google.com/forum/#!topic/google-gson/6XuHfOoZIKo
| 归档时间: |
|
| 查看次数: |
3406 次 |
| 最近记录: |