错误:生成APK时任务':app:transformClassesAndResourcesWithProguardForRelease'执行失败

时间:2016-12-29 09:43:52

标签: android proguard mpandroidchart android-proguard

我已经生成了我的Android应用程序的APK(作为尝试),我没有任何问题,APK已经正确生成。

现在,我想在生成APK时对代码进行模糊处理,因此我在release文件的build.gradle块上使用了以下行。

minifyEnabled true

问题是现在它引发了以下错误:

  

错误:任务':app:transformClassesAndResourcesWithProguardForRelease'的执行失败。   java.io.IOException:请先纠正上述警告。

有很多警告。更确切地说,1018警告。

他们中的大多数都像:

  

警告:com.itextpdf.text.pdf.security.PdfPKCS7:找不到引用的类org.spongycastle.asn1.tsp.MessageImprint

  

警告:com.github.mikephil.charting.data.realm.base.RealmBaseDataSet:找不到引用的类io.realm.Sort

总是同样的错误。无法找到引用类的类。

我正在使用 MPAndroidChart ,所以我认为这是相关的(因为警告上显示的软件包的名称),但我无法纠正这些警告。< / p>

编辑:作为证明,我尝试使用以下方法保留课程:

-keep public class com.itextpdf.text.pdf.**

在我的proguard-rules.pro文件上,但我仍然有相同的警告。

release文件中的build.gradle部分是:

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

我在弄乱我的代码时遗漏了什么?

提前致谢!

2 个答案:

答案 0 :(得分:2)

最后,我发现MPAndroidChart document ,其中告诉您如何配置Proguard。

使用以下配置:

-keep class com.github.mikephil.charting.** { *; }
-dontwarn io.realm.**

我能够在没有任何警告的情况下创建混淆APK。

另外,我注意到itextpdf是我过去使用的库,但我现在不需要它所以我只需要从gradle文件的依赖项中删除它,警告也消失了

答案 1 :(得分:1)

我在apk版本中找到了解决此问题的解决方案。

打开build.gradle(app)并更改构建类型,如下所示。

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