ProGuard 破坏了我的 Androidplot 布局

ProGuard destroyed my Androidplot Layout

我是 android 开发的新手,我知道决定试一试 ProGuard。

在与数以千计的警告作斗争后,我设法获得了我的应用程序的稳定版本,它完全按照预期的方式工作。

所以剩下的唯一问题是 Proguard 完全破坏了我的 android情节的布局。

我真的不知道如何解决它,我也没有在网上找到类似的问题。

感谢任何类型的提示,因为我什至不知道应该从哪里开始搜索问题。

这里有两个屏幕截图(ProGuard 之前和之后):

-----更新:-----

致所有可能遇到相同问题的人:

我仍然不知道到底是什么导致了这个问题,但是从 Androidplot v1.1.0 更新到 v1.4.1 对我来说是个窍门。

For some situations, the default ProGuard configuration file (proguard-android.txt) is sufficient and ProGuard removes all—and only—the unused code. However, many situations are difficult for ProGuard to analyze correctly and it might remove code your app actually needs. Some examples of when it might incorrectly remove code include

使用混淆器时,请务必检查项目中使用的所有库的文档,并在 Android 项目的根级别的 proguard-rules.pro 中添加 givens 混淆器规则。

v4 示例

-dontwarn android.support.v4.** -keep class android.support.v4.app.** { *; } -keep interface android.support.v4.app.** { *; } -keep class android.support.v4.** { *; }

对于 android 情节试试这个:

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

但是你的问题不是这个库的强制性问题

Cedric 的回答是正确的,但鉴于您对他的解决方案的评论,听起来您的自定义混淆器规则可能根本没有被采纳。

取决于您的项目结构等(我假设您使用的是 gradle 和最新的 SDK 版本)可能会发生不同的事情。要检查的几件事:

  • 确保你的 proguard 配置(通常是 proguard-rules.pro)在正确的位置。 (通常是项目根目录)
  • 检查您的 build.gradle 以确保它包含您的混淆器配置。

通常是这样的:

android {
  buildTypes {
    release {
      minifyEnabled true
      proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'
    }
  }
  ...
}

注意:如果您已为开发版本启用混淆,则还需要为您的开发版本配置文件添加相同的内容。