Android proguard minifyEnabled true + multidex = error

Posted

技术标签:

【中文标题】Android proguard minifyEnabled true + multidex = error【英文标题】: 【发布时间】:2017-10-16 20:46:43 【问题描述】:

当我启动我的应用程序时,我有很多警告和错误:

信息:Gradle 任务 [:app:assembleDebug] 警告:butterknife.compiler.ButterKnifeProcessor$IdScanner:不能 查找超类或接口 com.sun.tools.javac.tree.TreeScanner 警告:butterknife.compiler.ButterKnifeProcessor$RClassScanner:不能 查找超类或接口 com.sun.tools.javac.tree.TreeScanner 警告:butterknife.compiler.ButterKnifeProcessor$VarScanner:不能 查找超类或接口 com.sun.tools.javac.tree.TreeScanner 警告:org.apache.poi.hssf.usermodel.DummyGraphics2d:找不到 超类或接口 java.awt.Graphics2D 警告:org.apache.poi.hssf.usermodel.EscherGraphics:找不到 超类或接口 java.awt.Graphics 警告:org.apache.poi.hssf.usermodel.EscherGraphics2d:找不到 超类或接口 java.awt.Graphics2D 警告:org.apache.poi.poifs.crypt.dsig.SignatureMarshalListener: 找不到超类或接口 org.w3c.dom.events.EventListener 警告:org.apache.poi.xslf.usermodel.XSLFRenderingHint:找不到 超类或接口 java.awt.RenderingHints$Key …… 错误:任务执行失败 >':app:transformClassesAndResourcesWithProguardForDebug'。 作业失败,查看日志了解详情

我的程序规则是:

# Workaround for ProGuard not recognizing dontobfuscate
-dontobfuscate
-dontoptimize
-optimizations !code/allocation/variable
#Rules for javascript and webview
-keepclassmembers class fqcn.of.javascript.interface.for.webview 
   public *;

-keepattributes *Annotation*,EnclosingMethod,Signature
#Parcel
-keep class * implements android.os.Parcelable 
  public static final android.os.Parcelable$Creator *;

-keep class org.parceler.Parceler$$Parcels
-keep public class org.apache.poi.** *;
#BUTTERKNIFE
# Retain generated class which implement ViewBinder.
-keep public class * implements butterknife.internal.ViewBinder   

公开();

# Prevent obfuscation of types which use ButterKnife annotations since the simple name
# is used to reflectively look up the generated ViewBinder.
-keep class butterknife.*
-keepclasseswithmembernames class *  @butterknife.* <methods>; 
-keepclasseswithmembernames class *  @butterknife.* <fields>; 

我的毕业生:

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

如果我将 minifyEnabled 更改为 false。没有错误。我正在使用多索引模式。我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

试试这个 在 build.gradle 应用级依赖中添加这一行

编译'com.android.support:multidex:1.0.1'

dexOptions javaMaxHeapSize "4g"

minifyEnabled false

multiDexEnabled true

【讨论】:

Ashish,我拥有所有这些依赖项。如果我的 minifyEnabled false everthing 一切正常,我在上面写了,但我需要混淆代码。

以上是关于Android proguard minifyEnabled true + multidex = error的主要内容,如果未能解决你的问题,请参考以下文章

为啥使用“minifyEnabled true”时 Proguard 不起作用?

Android ProGuard警告 - 找不到引用的类“com.zhihu.matisse.R $ plurals”

坑:Android Studio gradle minifyEnabled 为 true debug断点失效

坑:Android Studio gradle minifyEnabled 为 true debug断点失效

是否添加“ minifyEnabled true”和“ proguard-android-optimize.txt”混淆了sqlite数据库并使其与以前的版本不兼容?

minifyEnabled仅对某些软件包或我的文件而言