2016-05-25 25 views
5

Naprawdę chcę użyć tej funkcji Proguard z moją aplikacją, ale widząc te tysiące ostrzeżeń, zastanawiam się, czy jest ona warta ... Co powinienem dodać, aby ją zbudować z powodzeniem? Albo daj mi znać, jeśli jest to utracone przyczyn ...Wiele ostrzeżeń podczas budowania przy użyciu aplikacji Proguard

Oto moja Gradle file:

(...)

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

    packagingOptions { 
     exclude 'META-INF/LICENSE' 
     exclude 'META-INF/LICENSE-FIREBASE.txt' 
     exclude 'META-INF/NOTICE' 
     exclude 'META-INF/services/javax.annotation.processing.Processor' 
     exclude 'META-INF/DEPENDENCIES' 
     exclude 'META-INF/LICENSE.txt' 
     exclude 'META-INF/NOTICE.txt' 
    } 

    lintOptions { 
     disable 'InvalidPackage' 
     disable 'LongLogTag' 
    } 

    dexOptions { 
     jumboMode = true 
     javaMaxHeapSize "4g" 
    } 

    productFlavors { 
     // Define separate dev and prod product flavors. 
     dev { 
      // dev utilizes minSDKVersion = 21 to allow the Android gradle plugin 
      // to pre-dex each module and produce an APK that can be tested on 
      // Android Lollipop without time consuming dex merging processes. 
      minSdkVersion 16 
      targetSdkVersion 19 
     } 
     prod { 
      // The actual minSdkVersion for the application. 
      minSdkVersion 16 
      targetSdkVersion 21 
     } 
    } 

} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:multidex:1.0.0' 
    compile "com.android.support:appcompat-v7:${supportLibVersion}" 
    compile 'com.android.support:percent:23.4.0' 
    compile("com.android.support:design:${supportLibVersion}") { 
     exclude module: 'support-v4' 
    } 
    compile("com.android.support:cardview-v7:${supportLibVersion}") { 
     exclude module: 'support-v4' 
    } 
    compile 'com.google.android.gms:play-services-gcm:8.4.0' 
    compile('com.firebase:firebase-client-android:2.4.0') { 
     exclude module: 'jackson-databind' 
    } 
    compile('com.github.nkzawa:socket.io-client:0.4.1') { 
     exclude group: 'org.json', module: 'json' 
    } 
    compile('com.astuetz:pagerslidingtabstrip:1.0.1') { 
     exclude module: 'support-v4' 
    } 
    compile('com.google.android.gms:play-services-location:8.4.0') { 
     exclude module: 'support-v4' 
    } 
    // This one use Maven : url "https://jitpack.io" 
    compile('org.glassfish.jersey.media:jersey-media-json-jackson:2.22.2') { 
     exclude group: 'javax.inject', module: 'javax.inject' 
    } 
    compile('com.github.jakob-grabner:Circle-Progress-View:v1.2.9') { 
     exclude group: 'support-annotations' 
    } 
    compile('com.github.ganfra:material-spinner:1.1.1') { 
     exclude group: 'com.android.support', module: 'appcompat-v7' 
     exclude group: 'com.android.support', module: 'support-v4' 
    } 
    compile 'com.jakewharton:butterknife:7.0.1' 
    compile 'commons-io:commons-io:2.4' 
    compile 'info.guardianproject.iocipher:IOCipher:0.3' 
    compile 'org.apache.commons:commons-lang3:3.4' 

    compile ("com.squareup.retrofit2:retrofit:2.0.0"){ 
     exclude module: 'okhttp' 
    } 
    compile ("com.squareup.retrofit2:converter-jackson:2.0.0"){ 
     exclude module: 'okhttp' 
    } 
    compile 'com.squareup.picasso:picasso:2.5.2' 
    compile 'com.amazonaws:aws-android-sdk-sns:2.+' 
    compile 'com.github.rtoshiro.securesharedpreferences:securesharedpreferences:1.0.+' 
    compile 'de.hdodenhof:circleimageview:2.0.0' 
    compile 'com.felipecsl.asymmetricgridview:library:1.1.0' 
    compile 'com.joanzapata.android:android-iconify:1.0.9' 
    compile 'com.koushikdutta.async:androidasync:2.+' 
    compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.4' 
    compile 'com.squareup.okhttp3:logging-interceptor:3.0.1' 
    compile 'com.github.johnpersano:supertoasts:[email protected]' 
    compile 'com.github.ybq:Android-SpinKit:1.0.3' 
    compile 'com.timehop.stickyheadersrecyclerview:library:[email protected]' 
    compile 'com.bigkoo:pickerview:2.0.8' 
    compile 'com.takwolf.android:lock9view:0.0.11' 
    compile 'com.kyleduo.switchbutton:library:1.4.0' 
    compile 'com.hanks.animatecheckbox:library:0.1' 
    compile 'com.code-troopers.betterpickers:library:2.5.5' 
} 

apply plugin: ('com.google.gms.google-services') 

Oto moja proguard-rule.pro file:

########################## 
#  RETROFIT  # 
########################## 

# Add any project specific keep options here: 
-dontwarn retrofit2.** 
-keep class retrofit2.** { *; } 
-keepattributes Signature 
-keepattributes Exceptions 
-keepattributes Annotation 

########################## 
#  BUTTERKNIFE  # 
########################## 

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

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

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

########################## 
#  JACKSON-PARSER  # 
########################## 
-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*(); 
} 


-assumenosideeffects class android.util.Log { 
public static *** d(...); 
public static *** v(...); 
public static *** i(...); 
public static *** w(...); 
public static *** e(...); 
public static *** wtf(...); 
    } 

a są pozostałe ostrzeżeń:

(…) 
Warning:com.fasterxml.jackson.module.jaxb.deser.DataHandlerJsonDeserializer$1: can't find superclass or interface javax.activation.DataSource 
Warning:javax.ws.rs.core.Link$JaxbAdapter: can't find superclass or interface javax.xml.bind.annotation.adapters.XmlAdapter 
Warning:org.glassfish.hk2.osgiresourcelocator.Activator: can't find superclass or interface org.osgi.framework.BundleActivator 
Warning:org.glassfish.hk2.osgiresourcelocator.ServiceLoaderImpl$BundleTracker: can't find superclass or interface org.osgi.framework.BundleListener 
Warning:org.glassfish.jersey.internal.OsgiRegistry: can't find superclass or interface org.osgi.framework.SynchronousBundleListener 
Warning:org.glassfish.jersey.message.internal.DataSourceProvider$ByteArrayDataSource: can't find superclass or interface javax.activation.DataSource 
Warning:com.fasterxml.jackson.module.jaxb.AdapterConverter: can't find referenced class javax.xml.bind.annotation.adapters.XmlAdapter 
Warning:com.fasterxml.jackson.module.jaxb.JaxbAnnotationIntrospector: can't find referenced class javax.xml.bind.annotation.XmlElement 
Warning:com.fasterxml.jackson.module.jaxb.JaxbAnnotationIntrospector: can't find referenced class javax.xml.bind.annotation.XmlRootElement 
Warning:com.fasterxml.jackson.module.jaxb.JaxbAnnotationIntrospector: can't find referenced class javax.xml.bind.annotation.XmlElement 
Warning:com.fasterxml.jackson.module.jaxb.JaxbAnnotationIntrospector: can't find referenced class javax.xml.bind.annotation.XmlAttribute 
Warning:com.fasterxml.jackson.module.jaxb.JaxbAnnotationIntrospector: can't find referenced class javax.xml.bind.annotation.XmlValue 
Warning:com.fasterxml.jackson.module.jaxb.JaxbAnnotationIntrospector: can't find referenced class javax.xml.bind.annotation.XmlElements 
Warning:com.fasterxml.jackson.module.jaxb.JaxbAnnotationIntrospector$1: can't find referenced class javax.xml.bind.annotation.XmlAccessType 
Warning:com.fasterxml.jackson.module.jaxb.deser.DataHandlerJsonDeserializer: can't find referenced class javax.activation.DataHandler 
Warning:com.fasterxml.jackson.module.jaxb.deser.DataHandlerJsonDeserializer$1: can't find referenced class javax.activation.DataSource 
Warning:com.fasterxml.jackson.module.jaxb.ser.DataHandlerJsonSerializer: can't find referenced class javax.activation.DataHandler 
Warning:com.felipecsl.asymmetricgridview.library.widget.AnimatorProxy: can't find referenced method 'float floor(float)' in library class android.util.FloatMath 
Warning:com.felipecsl.asymmetricgridview.library.widget.AnimatorProxy: can't find referenced method 'float ceil(float)' in library class android.util.FloatMath 
Warning:com.google.common.base.Equivalence: can't find referenced class javax.annotation.Nullable 
Warning:com.google.common.base.Equivalences$Impl$1: can't find referenced class javax.annotation.Nullable 
Warning:com.google.common.base.Equivalences$Impl$2: can't find referenced class javax.annotation.Nullable 
Warning:com.google.common.base.Function: can't find referenced class javax.annotation.Nullable 
Warning:com.google.common.base.Functions: can't find referenced class javax.annotation.Nullable 
Warning:com.google.common.base.Functions$ConstantFunction: can't find referenced class javax.annotation.Nullable 
Warning:com.squareup.picasso.OkHttpDownloader: can't find referenced class com.squareup.okhttp.OkHttpClient 
Warning:com.squareup.picasso.OkHttpDownloader: can't find referenced class com.squareup.okhttp.Cache 
Warning:com.squareup.picasso.OkHttpDownloader: can't find referenced class com.squareup.okhttp.OkHttpClient 
Warning:com.squareup.picasso.OkHttpDownloader: can't find referenced class com.squareup.okhttp.CacheControl 
Warning:com.squareup.picasso.OkHttpDownloader: can't find referenced class com.squareup.okhttp.CacheControl$Builder 
Warning:com.squareup.picasso.OkHttpDownloader: can't find referenced class com.squareup.okhttp.Request$Builder 
Warning:com.squareup.picasso.OkHttpDownloader: can't find referenced class com.squareup.okhttp.OkHttpClient 
Warning:com.squareup.picasso.OkHttpDownloader: can't find referenced class com.squareup.okhttp.Call 
Warning:javassist.tools.rmi.ObjectImporter: can't find referenced class java.applet.Applet 
Warning:javassist.util.HotSwapper: can't find referenced class com.sun.jdi.connect.AttachingConnector 
Warning:javassist.util.HotSwapper: can't find referenced class com.sun.jdi.connect.Connector$Argument 
Warning:javassist.util.HotSwapper: can't find referenced class com.sun.jdi.connect.AttachingConnector 
Warning:javassist.util.HotSwapper: can't find referenced class com.sun.jdi.VirtualMachine 
Warning:javassist.util.HotSwapper: can't find referenced class com.sun.jdi.Bootstrap 
Warning:javassist.util.HotSwapper: can't find referenced class com.sun.jdi.VirtualMachineManager 
Warning:javassist.util.HotSwapper: can't find referenced class com.sun.jdi.connect.Connector 
Warning:javassist.util.HotSwapper: can't find referenced class com.sun.jdi.event.EventQueue 
Warning:javassist.util.HotSwapper: can't find referenced class com.sun.jdi.VirtualMachine 
Warning:javax.ws.rs.core.Link$JaxbAdapter: can't find referenced class javax.xml.bind.annotation.adapters.XmlAdapter 
Warning:javax.ws.rs.core.Link$JaxbLink: can't find referenced class javax.xml.bind.annotation.XmlAttribute 
Warning:javax.ws.rs.core.Link$JaxbLink: can't find referenced class javax.xml.bind.annotation.XmlAnyAttribute 
Warning:jersey.repackaged.com.google.common.base.Absent: can't find referenced class javax.annotation.Nullable 
Warning:jersey.repackaged.com.google.common.base.Converter: can't find referenced class javax.annotation.Nullable 
Warning:jersey.repackaged.com.google.common.base.Equivalence: can't find referenced class javax.annotation.Nullable 
Warning:jersey.repackaged.com.google.common.base.Function: can't find referenced class javax.annotation.Nullable 
Warning:jersey.repackaged.com.google.common.base.Joiner: can't find referenced class javax.annotation.CheckReturnValue 
Warning:jersey.repackaged.com.google.common.base.Joiner$1: can't find referenced class javax.annotation.Nullable 
Warning:jersey.repackaged.com.google.common.base.MoreObjects: can't find referenced class javax.annotation.Nullable 
Warning:jersey.repackaged.com.google.common.base.MoreObjects$ToStringHelper: can't find referenced class javax.annotation.Nullable 
Warning:jersey.repackaged.com.google.common.base.Objects: can't find referenced class javax.annotation.CheckReturnValue 
Warning:jersey.repackaged.com.google.common.base.Objects: can't find referenced class javax.annotation.Nullable 
Warning:jersey.repackaged.com.google.common.base.Predicates$ObjectPredicate$3: can't find referenced class javax.annotation.Nullable 
Warning:jersey.repackaged.com.google.common.base.Predicates$ObjectPredicate$4: can't find referenced class javax.annotation.Nullable 
Warning:jersey.repackaged.com.google.common.base.Predicates$OrPredicate: can't find referenced class javax.annotation.Nullable 
Warning:okio.DeflaterSink: can't find referenced class org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement 
Warning:okio.Okio: can't find referenced class java.nio.file.Files 
Warning:okio.Okio: can't find referenced class java.nio.file.Path 
Warning:okio.Okio: can't find referenced class java.nio.file.OpenOption 
Warning:okio.Okio: can't find referenced class java.nio.file.Path 
Warning:okio.Okio: can't find referenced class java.nio.file.OpenOption 
Warning:okio.Okio: can't find referenced class org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement 
Warning:okio.Okio: can't find referenced class java.nio.file.Path 
Warning:okio.Okio: can't find referenced class java.nio.file.OpenOption 
Warning:okio.Okio: can't find referenced class java.nio.file.Path 
Warning:okio.Okio: can't find referenced class java.nio.file.OpenOption 
Warning:okio.Okio: can't find referenced class org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement 
Warning:org.glassfish.hk2.osgiresourcelocator.Activator: can't find referenced class org.osgi.framework.BundleActivator 
Warning:org.glassfish.hk2.osgiresourcelocator.Activator: can't find referenced class org.osgi.framework.BundleContext 
Warning:org.glassfish.hk2.osgiresourcelocator.ResourceFinderImpl: can't find referenced class org.osgi.framework.BundleReference 
Warning:org.glassfish.hk2.osgiresourcelocator.ResourceFinderImpl: can't find referenced class org.osgi.framework.Bundle 
Warning:org.glassfish.hk2.osgiresourcelocator.ResourceFinderImpl: can't find referenced class org.osgi.framework.BundleContext 
Warning:org.glassfish.hk2.osgiresourcelocator.ResourceFinderImpl: can't find referenced class org.osgi.framework.Bundle 
Warning:org.glassfish.hk2.osgiresourcelocator.ResourceFinderImpl: can't find referenced class org.osgi.framework.BundleContext 
Warning:org.glassfish.hk2.osgiresourcelocator.ResourceFinderImpl: can't find referenced class org.osgi.framework.Bundle 
Warning:org.glassfish.hk2.utilities.reflection.BeanReflectionHelper: can't find referenced class java.beans.Introspector 
Warning:org.glassfish.jersey.internal.OsgiRegistry: can't find referenced class org.osgi.framework.BundleReference 
Warning:org.glassfish.jersey.internal.OsgiRegistry: can't find referenced class org.osgi.framework.FrameworkUtil 
Warning:org.glassfish.jersey.internal.OsgiRegistry: can't find referenced class org.osgi.framework.Bundle 
Warning:org.glassfish.jersey.internal.OsgiRegistry: can't find referenced class org.osgi.framework.BundleEvent 
Warning:org.glassfish.jersey.internal.OsgiRegistry$2: can't find referenced class org.osgi.framework.Bundle 
Warning:org.glassfish.jersey.internal.OsgiRegistry$BundleSpiProvidersLoader: can't find referenced class org.osgi.framework.Bundle 
Warning:org.glassfish.jersey.internal.util.ReflectionHelper: can't find referenced class org.osgi.framework.FrameworkUtil 
Warning:org.glassfish.jersey.internal.util.ReflectionHelper: can't find referenced class org.osgi.framework.Bundle 
Warning:org.glassfish.jersey.internal.util.ReflectionHelper: can't find referenced class org.osgi.framework.FrameworkUtil 
Warning:org.glassfish.jersey.internal.util.ReflectionHelper: can't find referenced class org.osgi.framework.Bundle 
Warning:org.glassfish.jersey.internal.util.collection.ConcurrentHashMapV8: can't find referenced class sun.misc.Unsafe 
Warning:org.glassfish.jersey.internal.util.collection.ConcurrentHashMapV8$1: can't find referenced class sun.misc.Unsafe 
Warning:org.glassfish.jersey.internal.util.collection.ConcurrentHashMapV8$TreeBin: can't find referenced class sun.misc.Unsafe 
Warning:org.glassfish.jersey.internal.util.collection.LinkedTransferQueue: can't find referenced class sun.misc.Unsafe 
Warning:org.glassfish.jersey.internal.util.collection.LinkedTransferQueue$1: can't find referenced class sun.misc.Unsafe 
Warning:org.glassfish.jersey.internal.util.collection.LinkedTransferQueue$Node: can't find referenced class sun.misc.Unsafe 
Warning:org.glassfish.jersey.message.filtering.SecurityEntityFilteringFeature: can't find referenced class org.glassfish.jersey.server.filter.RolesAllowedDynamicFeature 
Warning:org.glassfish.jersey.message.filtering.ServerScopeProvider: can't find referenced class org.glassfish.jersey.server.ExtendedUriInfo 
Warning:org.glassfish.jersey.message.filtering.ServerScopeProvider: can't find referenced class org.glassfish.jersey.server.model.ResourceMethod 
Warning:org.glassfish.jersey.message.filtering.ServerScopeProvider: can't find referenced class org.glassfish.jersey.server.model.Invocable 
Warning:org.glassfish.jersey.message.filtering.ServerScopeProvider: can't find referenced class org.glassfish.jersey.server.model.MethodHandler 
Warning:org.glassfish.jersey.message.filtering.ServerScopeProvider: can't find referenced class org.glassfish.jersey.server.ExtendedUriInfo 
Warning:org.glassfish.jersey.message.filtering.ServerScopeProvider: can't find referenced class org.glassfish.jersey.server.model.ResourceMethod 
Warning:org.glassfish.jersey.message.filtering.ServerScopeProvider: can't find referenced class org.glassfish.jersey.server.ExtendedUriInfo 
Warning:org.glassfish.jersey.message.filtering.ServerScopeProvider: can't find referenced class org.glassfish.jersey.server.model.ResourceMethod 
Warning:org.glassfish.jersey.message.filtering.spi.FilteringHelper: can't find referenced class javax.xml.bind.JAXBElement 
Warning:org.glassfish.jersey.message.internal.DataSourceProvider: can't find referenced class javax.activation.DataSource 
Warning:org.glassfish.jersey.message.internal.DataSourceProvider$ByteArrayDataSource: can't find referenced class javax.activation.DataSource 
Warning:org.glassfish.jersey.message.internal.RenderedImageProvider: can't find referenced class java.awt.image.RenderedImage 
Warning:org.glassfish.jersey.message.internal.RenderedImageProvider: can't find referenced class java.awt.image.BufferedImage 
Warning:org.glassfish.jersey.message.internal.RenderedImageProvider: can't find referenced class javax.imageio.ImageIO 
Warning:org.glassfish.jersey.message.internal.RenderedImageProvider: can't find referenced class javax.imageio.ImageReader 
Warning:org.glassfish.jersey.message.internal.RenderedImageProvider: can't find referenced class javax.imageio.ImageIO 
Warning:org.glassfish.jersey.message.internal.RenderedImageProvider: can't find referenced class javax.imageio.ImageReader 
Warning:org.glassfish.jersey.message.internal.RenderedImageProvider: can't find referenced class java.awt.image.RenderedImage 
Warning:org.glassfish.jersey.message.internal.RenderedImageProvider: can't find referenced class javax.imageio.ImageWriter 
Warning:org.glassfish.jersey.message.internal.RenderedImageProvider: can't find referenced class java.awt.image.RenderedImage 
(…) 
Note: there were 4 references to unknown classes. 
     You should check your configuration for typos. 
     (http://proguard.sourceforge.net/manual/troubleshooting.html#unknownclass) 
Note: there were 11 classes trying to access enclosing classes using reflection. 
     You should consider keeping the inner classes attributes 
     (using '-keepattributes InnerClasses'). 
     (http://proguard.sourceforge.net/manual/troubleshooting.html#attributes) 
Note: there were 143 unkept descriptor classes in kept class members. 
     You should consider explicitly keeping the mentioned classes 
     (using '-keep'). 
     (http://proguard.sourceforge.net/manual/troubleshooting.html#descriptorclass) 
Note: there were 30 unresolved dynamic references to classes or interfaces. 
     You should check if you need to specify additional program jars. 
     (http://proguard.sourceforge.net/manual/troubleshooting.html#dynamicalclass) 
Warning:there were 1911 unresolved references to classes or interfaces. 
     You may need to add missing library jars or update their versions. 
     If your code works fine without the missing classes, you can suppress 
     the warnings with '-dontwarn' options. 
     (http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedclass) 
Warning:there were 2 unresolved references to library class members. 
     You probably need to update the library versions. 
     (http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedlibraryclassmember) 
Warning:Exception while processing task java.io.IOException: Please correct the above warnings first. 
:app:transformClassesAndResourcesWithProguardForProdRelease FAILED 
Error:Execution failed for task ':app:transformClassesAndResourcesWithProguardForProdRelease'. 
> java.io.IOException: Please correct the above warnings first. 
Information:BUILD FAILED 
Information:Total time: 7.152 secs 
Information:1 error 
Information:901 warnings 
Information:See complete output in console 

Odpowiedz

7

Zazwyczaj muszę przekazać proguardowi, aby utrzymywał biblioteki stron trzecich, aby mogły z powodzeniem tworzyć. Na przykład Id dodać następujące dla Okio i fasterxml:

-keep class okio.** { *; } 
-dontwarn okio.** 

-keep class com.fasterxml.** { *; } 
-dontwarn com.fasterxml.** 

Dodaj powyższym dla każdej biblioteki strony trzeciej już zawarte w projekcie. Z twoich logów widzę glassfish, jersey, squareup, google, Okio i fasterxml.

Oto kilka informacji na temat wyżej wymienionych zasad PROGUARD:

Using "dontwarn" in proguard

Android Proguard - is it best practice to -keep all 3rd party libs?

+0

Podobne okio problem: https://github.com/square/okio/issues/60 – robd