2015-04-21 54 views
3

大家都在更改build.gradle屬性後minifyEnabled true我收到以下錯誤。我看書上說如果我們使用minifyEnabled true然後minifyEnabled true生成很多警告

The ProGuard tool shrinks, optimizes, and obfuscates your code by removing unused code and renaming classes, fields, and methods with semantically obscure names. The result is a smaller sized .apk file that is more difficult to reverse engineer 

我想使用上述典型應用該類超支。

Warning:butterknife.internal.ButterKnifeProcessor: can't find superclass or  interface javax.annotation.processing.AbstractProcessor 
Warning:retrofit.RxSupport$1: can't find superclass or interface rx.Observable$OnSubscribe 
Warning:library class dagger.internal.codegen.GraphAnalysisErrorHandler extends or implements program class dagger.internal.Linker$ErrorHandler 
Warning:library class dagger.internal.codegen.GraphAnalysisInjectBinding extends or implements program class dagger.internal.Binding 
Warning:library class dagger.internal.codegen.GraphAnalysisLoader extends or implements program class dagger.internal.Loader 
Warning:library class dagger.internal.codegen.GraphAnalysisProcessor$1 extends or implements program class dagger.internal.BindingsGroup 
Warning:library class dagger.internal.codegen.GraphAnalysisProcessor$2 extends or implements program class dagger.internal.BindingsGroup 
Warning:library class dagger.internal.codegen.GraphAnalysisProcessor$ProviderMethodBinding extends or implements program class dagger.internal.ProvidesBinding 
Warning:library class dagger.internal.codegen.GraphAnalysisStaticInjection extends or implements program class dagger.internal.StaticInjection 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.annotation.processing.AbstractProcessor 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced cla ss javax.annotation.processing.ProcessingEnvironment 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.TypeElement 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.Element 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.annotation.processing.Filer 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.tools.JavaFileObject 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.annotation.processing.RoundEnvironment 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.Element 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.Modifier 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.TypeElement 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.Element 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.TypeElement 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.ElementKind 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.TypeElement 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.Element 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.type.TypeVariable 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.Element 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.type.TypeMirror 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.util.Types 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.type.TypeMirror 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.type.TypeKind 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.type.ArrayType 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.type.DeclaredType 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.type.TypeMirror 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.ExecutableElement 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.Element 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.ElementKind 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.ExecutableElement 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.VariableElement 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.type.DeclaredType 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.TypeElement 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.type.TypeKind 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.SourceVersion 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced field 'javax.annotation.processing.ProcessingEnvironment processingEnv' in program class butterknife.internal.ButterKnifeProcessor 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.annotation.processing.ProcessingEnvironment 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.tools.Diagnostic$Kind 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.annotation.processing.Messager 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.util.Elements 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.PackageElement 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.annotation.processing.AbstractProcessor 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.annotation.processing.RoundEnvironment 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.TypeElement 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.Element 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.type.TypeMirror 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.type.DeclaredType 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.ExecutableElement 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.VariableElement 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.annotation.processing.ProcessingEnvironment 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.annotation.processing.Filer 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.tools.JavaFileObject 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.annotation.processing.RoundEnvironment 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.Modifier 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.ElementKind 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.util.Types 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.type.TypeKind 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.SourceVersion 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.tools.Diagnostic$Kind 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.annotation.processing.Messager 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.util.Elements 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.PackageElement 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.tools.Diagnostic 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.util.Elements 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.util.Types 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.annotation.processing.Filer 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.annotation.processing.ProcessingEnvironment 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.annotation.processing.RoundEnvironment 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.tools.JavaFileObject 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.TypeElement 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.annotation.processing.RoundEnvironment 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.TypeElement 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.annotation.processing.RoundEnvironment 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.Element 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.annotation.processing.RoundEnvironment 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.TypeElement 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.annotation.processing.RoundEnvironment 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.TypeElement 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.Element 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.TypeElement 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.Modifier 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.Element 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.type.TypeVariable 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.Element 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.TypeElement 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.type.TypeMirror 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.TypeElement 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.Element 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.TypeElement 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.Element 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.type.ArrayType 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.type.DeclaredType 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.type.TypeVariable 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.Element 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.TypeElement 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.type.TypeMirror 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.TypeElement 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.Element 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.TypeElement 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.annotation.processing.RoundEnvironment 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.Element 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.annotation.processing.RoundEnvironment 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.TypeElement 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.annotation.processing.RoundEnvironment 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.TypeElement 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.Element 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.type.TypeVariable 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.VariableElement 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.type.TypeMirror 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.Element 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.ExecutableElement 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.TypeElement 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.type.TypeMirror 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.TypeElement 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.VariableElement 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.Element 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.TypeElement 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.type.TypeMirror 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.type.DeclaredType 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.Element 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.TypeElement 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.type.TypeMirror 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.TypeElement 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.type.TypeMirror 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.TypeElement 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.SourceVersion 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.Element 
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.TypeElement 
Warning:com.fasterxml.jackson.databind.ext.DOMSerializer: can't find referenced class org.w3c.dom.bootstrap.DOMImplementationRegistry 
Warning:com.squareup.okhttp.internal.huc.HttpsURLConnectionImpl: can't find referenced method 'long getContentLengthLong()' in program class com.squareup.okhttp.internal.huc.HttpURLConnectionImpl 
    Warning:com.squareup.okhttp.internal.huc.HttpsURLConnectionImpl: can't find referenced method 'long getHeaderFieldLong(java.lang.String,long)' in program class com.squareup.okhttp.internal.huc.HttpURLConnectionImpl  


(http://proguard.sourceforge.net/manual/troubleshooting.html#dependency) 
    Warning:there were 5 unresolved references to program class members. 
    Your input classes appear to be inconsistent. 
    You may need to recompile the code. 
       (http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedprogramclassmember) 
:app:proguardRelease FAILED 
    Error:Execution failed for task ':app:proguardRelease'. 
> java.io.IOException: Please correct the above warnings first. 
Information:BUILD FAILED 
Information:Total time: 13.828 secs 
Information:1 error 
Information:201 warnings 
Information:See complete output in console 

如何解決此問題。任何建議將不勝感激。提前致謝。

+0

您是否配置了您的proguard文件,並將「ButterKnife」的排除項例如? –

+1

檢查下面的答案,然後您需要搜索您使用的每個庫的proguard配置。您還需要配置項目中的特定文件。更多信息:http://proguard.sourceforge.net/ –

回答

10

你需要找到與proguard的規則(proguard-rules.pro默認)的文件,並添加以下行到它:

-keep class butterknife.** { *; } 
 
-dontwarn butterknife.internal.** 
 
-keep class **$$ViewInjector { *; } 
 

 
-keepclasseswithmembernames class * { 
 
    @butterknife.* <fields>; 
 
} 
 

 
-keepclasseswithmembernames class * { 
 
    @butterknife.* <methods>; 
 
} 
 

 
-keepattributes *Annotation*,EnclosingMethod,Signature 
 
-keepnames class com.fasterxml.jackson.** { *; } 
 
-dontwarn com.fasterxml.jackson.databind.** 
 
-keep class org.codehaus.** { *; } 
 
-keepclassmembers public final enum org.codehaus.jackson.annotate.JsonAutoDetect$Visibility { 
 
public static final org.codehaus.jackson.annotate.JsonAutoDetect$Visibility *; } 
 
-keep public class your.class.** { 
 
    public void set*(***); 
 
    public *** get*(); 
 
} 
 

 
-dontwarn com.squareup.okhttp.**

your.class替代與序列化/反序列化的一個。

這可能不足以消除所有與proguard相關的錯誤,但是可以從頭開始。

正如@Deividi Cavarzan指出的那樣,如果您使用其他庫,我會建議搜索他們推薦的proguard設置以避免更多問題。如果不存在這樣的配置,但您仍然有錯誤來自圖書館的課程,您可以嘗試:

-keep class com.[library package].** {*;}。另外,並非所有的proguard副作用都會在構建時被捕獲,您可以很容易地得到您的縮小版本與運行時錯誤崩潰,其中調試版本可以順利運行,因此之後需要進行測試。