是否可以启用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。'错误)。
答案 0 :(得分:1)
要使ProGuard完全忽略您可以使用的包:
-keepclasseswithmembers class com.my.package.** {*;}
但是,您获得的错误意味着其他内容,您应该尝试从ProGuard文件中删除 -libraryjars libs / heyzap-ads-sdk.jar ,因为可能正在添加此库在 build.gradle 文件中的其他地方,可能是这一行:
compile fileTree(dir: 'libs', include: ['*.jar'])