Error:Execution failed for task ':app:transformClassesAndResourcesWithProguardForRelease' while generating APK
Error:Execution failed for task ':app:transformClassesAndResourcesWithProguardForRelease' while generating APK
我已经为我的 Android 应用程序生成了一个 APK(作为尝试),我没有遇到任何问题,APK 已正确生成。
现在,我想在生成 APK 时混淆我的代码,所以我在 build.gradle
文件的 release
块中使用了以下行。
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
总是一样的错误。无法找到引用的 class.
的 class
我正在使用 MPAndroidChart
所以我认为它是相关的(因为警告中出现的包的名称)但我无法更正这些警告。
编辑: 作为证明,我尝试使用以下方式保留 classes:
-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 文件的依赖项中删除它警告也消失了。
我在 apk 生成过程中找到了这个问题的解决方案。
打开 build.gradle(app)
并按如下方式更改构建类型。
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt')
}
}
我已经为我的 Android 应用程序生成了一个 APK(作为尝试),我没有遇到任何问题,APK 已正确生成。
现在,我想在生成 APK 时混淆我的代码,所以我在 build.gradle
文件的 release
块中使用了以下行。
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
总是一样的错误。无法找到引用的 class.
的 class我正在使用 MPAndroidChart
所以我认为它是相关的(因为警告中出现的包的名称)但我无法更正这些警告。
编辑: 作为证明,我尝试使用以下方式保留 classes:
-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 文件的依赖项中删除它警告也消失了。
我在 apk 生成过程中找到了这个问题的解决方案。
打开 build.gradle(app)
并按如下方式更改构建类型。
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt')
}
}