android - 让 Proguard 完全忽略包

标签 android android-studio android-gradle-plugin

是否可以启用 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 被指定了两次。'错误)。

最佳答案

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

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

但是,你得到的错误意味着别的东西,你应该尝试从你的 ProGuard 文件中删除 -libraryjars libs/heyzap-ads-sdk.jar,因为这个库可能被添加在你的 build.gradle 文件中的其他地方,可能是这一行:

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

关于android - 让 Proguard 完全忽略包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31128266/

相关文章:

android - 基于 ionic 的游戏服务测量问题

android - 您的设备与此版本 Play 商店不兼容

android - 如何将特定库 github 提交库集成到 Android 项目中?

android - Unresolved reference BuildConfig

android - 在不影响 Android Gradle 插件版本的情况下提升 Gradle 版本

android - 如何在运行我的 gradle 构建之前在 Android Studio 中设置环境变量

java - 如何解决这个 Android 项目依赖问题?

android - Instrumented Test 中的 Internet 访问

android - 如何解决 setBackgroundDrawable 被弃用的问题

gradle - 下载android studio使用的依赖源码