android - 错误 :Execution failed for task ':app:transformClassesAndResourcesWithProguardForRelease' while generating APK

标签 android proguard mpandroidchart android-proguard

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

现在,我想在生成 APK 时混淆我的代码,所以我在 build.gradle 文件的 release block 中使用了以下行。

minifyEnabled true

问题是现在它抛出以下错误:

Error:Execution failed for task ':app:transformClassesAndResourcesWithProguardForRelease'. java.io.IOException: Please correct the above warnings first.

有很多警告。更准确地说,是 1018 条警告。

他们中的大多数是这样的:

Warning:com.itextpdf.text.pdf.security.PdfPKCS7: can't find referenced class org.spongycastle.asn1.tsp.MessageImprint

Warning:com.github.mikephil.charting.data.realm.base.RealmBaseDataSet: can't find referenced class io.realm.Sort

总是一样的错误。找不到引用类的类。

我正在使用 MPAndroidChart 所以我认为这是相关的(因为警告中出现的包的名称)但我无法更正这些警告。

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

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

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

我在 build.gradle 文件上的 release 部分是:

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

我在混淆我的代码时是否遗漏了什么?

提前致谢!

最佳答案

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

具有以下配置:

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

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

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

关于android - 错误 :Execution failed for task ':app:transformClassesAndResourcesWithProguardForRelease' while generating APK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41377007/

相关文章:

android - 无法在源集主上找到属性 'aild'

java - 图表和图例之间的空间太大,x 标签也会被切断

android - 如何更改 MPAndroidChart 中饼图描述的文本颜色?

java - 安卓位图操作

Android:跨 Activity 传递 Facebook session

scala - 使用 SBT,我怎样才能有两个不同设置的不同 proguard 任务?

Android 使用 Parse.com - Proguard 上缺少类

android - MPChart 条形图 : draw x axis line on zero value

Android框架源码中启用Fast Scroll的Android Listview代码

android - Retrofit2 proguard 删除参数