我已经生成了我的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'
}
我在弄乱我的代码时遗漏了什么?
提前致谢!
答案 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')
}
}