使Proguard完全忽略包

时间:2015-06-30 01:48:07

标签: android android-studio android-gradle

是否可以启用Proguard,但保持一些课程完全不受Proguard的影响?我的proguard配置文件中有以下几行:

-keep class com.heyzap.** { *; }

但是正如我可以看到,在Proguard传递之后,Heyzap包中的类实际上已经被更改了(它们与我最初在Heyzap jar文件中的不同)。

我不知道Proguard究竟对Heyzap SDK做了什么,但是在这个构建过程失败后将jar文件转换为dex格式时出错:

EXCEPTION FROM SIMULATION: com.android.dx.rop.cst.CstInterfaceMethodRef cannot be cast to com.android.dx.rop.cst.CstMethodRef

此外,我在配置中启用了 -dontoptimize 选项。

Heyzap建议使用此行来保持其SDK不受影响:

-libraryjars libs/heyzap-ads-sdk.jar 

但Android Studio无法编译该项目,因为 heyzap-ads-sdk.jar 会自动添加到 -injars 列表中(它会抛出' >指定了两次相同的输入jar。'错误)。

1 个答案:

答案 0 :(得分:1)

要使ProGuard完全忽略您可以使用的包:

-keepclasseswithmembers class com.my.package.** {*;}

但是,您获得的错误意味着其他内容,您应该尝试从ProGuard文件中删除 -libraryjars libs / heyzap-ads-sdk.jar ,因为可能正在添加此库在 build.gradle 文件中的其他地方,可能是这一行:

compile fileTree(dir: 'libs', include: ['*.jar'])