2017-03-19 1 views
5

Je suis en train d'exécuter mon application android par Proguard, mais cela ne cesse d'apparaître:Proguard double Zip Entrée

Warning:Exception while processing task java.io.IOException: Can't write [C:\Users\Aliaksei\AndroidStudioProjects\SignOutSystem\app\build\intermediates\transforms\proguard\debug\jars\3\1f\main.jar] (Can't read [D:\Users\Aliaksei\.android\build-cache\f7a6034d02d095f18cc21950f131d07fa78b41c0\output\jars\classes.jar(;;;;;;**.class)] (Duplicate zip entry [android/support/v4/os/j.class == classes.jar:android/support/v4/os/ResultReceiver$MyResultReceiver.class])) 

Je suis conscient que cela signifie que le android.support.v4 est en cours déclaré deux fois quelque part, donc je l'ai essayé d'ajouter exclude group: 'com.android.support', module: 'support-v4' à toutes les dépendances possibles qui pourraient l'avoir inclus, mais cela n'a pas fonctionné, même après un nettoyage et une reconstruction.

En pensant que je dois avoir manqué une dépendance quelque part, j'ai procédé à l'ajouter à tout (Overkill), mais cela n'a toujours pas fonctionné.

autour de la recherche, j'ai trouvé cet extrait dans des postes similaires et a ajouté ceci dans la section Android ainsi:

packagingOptions { 
    exclude 'META-INF/DEPENDENCIES' 
    exclude 'META-INF/NOTICE' 
    exclude 'META-INF/LICENSE' 
    exclude 'META-INF/LICENSE.txt' 
    exclude 'META-INF/NOTICE.txt' 
} 

Je suis à court d'idées et la recherche de réponses me semble prendre pour des choses que je l'ai déjà a essayé. Quelque chose que je manque?

app build.gradle (désordre, avec tous les hacks ci-dessus):

apply plugin: 'com.android.application' 
apply plugin: 'realm-android' 
//apply plugin: 'com.getkeepsafe.dexcount' 

android { 
    compileSdkVersion 23 
    buildToolsVersion '25.0.0' 

    defaultConfig { 
     applicationId "com.aliakseipilko.signoutsystem" 
     minSdkVersion 19 
     targetSdkVersion 23 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled true 
      shrinkResources true 
      zipAlignEnabled true 
      proguardFile 'proguard-signoutsystem.txt' 
     } 
     debug { 
      minifyEnabled true 
      shrinkResources false 
      zipAlignEnabled true 
      proguardFile 'proguard-signoutsystem.txt' 
     } 
    } 
    packagingOptions { 
     exclude 'META-INF/DEPENDENCIES' 
     exclude 'META-INF/NOTICE' 
     exclude 'META-INF/LICENSE' 
     exclude 'META-INF/LICENSE.txt' 
     exclude 'META-INF/NOTICE.txt' 
    } 
} 

//dexcount { 
// format = "list" 
// includeClasses = false 
// includeFieldCount = true 
// includeTotalMethodCount = true 
// orderByMethodCount = true 
// verbose = false 
// maxTreeDepth = Integer.MAX_VALUE 
// teamCityIntegration = false 
// enableForInstantRun = false 
//} 

repositories { 
    maven { 
     url "https://jitpack.io" 
    } 
} 

dependencies { 
    compile('com.google.api-client:google-api-client-android:1.22.0') { 
     exclude group: 'org.apache.httpcomponents' 
     exclude group: 'com.android.support', module: 'support-v4' 
    } 
    compile('com.google.apis:google-api-services-sheets:v4-rev19-1.22.0') { 
     exclude group: 'org.apache.httpcomponents' 
     exclude group: 'com.android.support', module: 'support-v4' 
    } 
    compile('com.google.android.gms:play-services-identity:9.2.0') { 
     exclude group: 'com.google.guava' 
     exclude group: 'com.android.support', module: 'support-v4' 
    } 
    compile ('com.google.android.gms:play-services-auth:9.2.0') { 
     exclude group: 'com.android.support', module: 'support-v4' 
    } 

    compile ('com.android.support:appcompat-v7:23.4.0') { 
     exclude group: 'com.android.support', module: 'support-v4' 
    } 
    compile ('com.android.support:design:23.4.0') { 
     exclude group: 'com.android.support', module: 'support-v4' 
    } 
    compile 'com.android.support:support-v4:23.4.0' 
    compile ('com.android.support:percent:23.4.0') { 
     exclude group: 'com.android.support', module: 'support-v4' 
    } 

    compile ('com.squareup.okhttp3:okhttp:3.3.1') { 
     exclude group: 'com.android.support', module: 'support-v4' 
    } 
    compile ('com.squareup.okhttp3:logging-interceptor:3.3.1') { 
     exclude group: 'com.android.support', module: 'support-v4' 
    } 
    compile ('com.squareup.okio:okio:1.8.0') { 
     exclude group: 'com.android.support', module: 'support-v4' 
    } 
    compile ('com.squareup.picasso:picasso:2.5.2') { 
     exclude group: 'com.android.support', module: 'support-v4' 
    } 

    compile ('net.sf.biweekly:biweekly:0.4.6') { 
     exclude group: 'com.android.support', module: 'support-v4' 
    } 
    compile ('com.github.tibolte:agendacalendarview:1.0.4') { 
     exclude group: 'com.android.support', module: 'support-v4' 
    } 
    compile ('com.7heaven.widgets:segmentcontrol:1.14') { 
     exclude group: 'com.android.support', module: 'support-v4' 
    } 

    compile ('com.survivingwithandroid:weatherlib:1.6.0') { 
     exclude group: 'com.android.support', module: 'support-v4' 
    } 
    compile 'com.survivingwithandroid:weatherlib_okhttpclient:1.6.0' 

    compile files('libs/FDxSDKProAndroid.jar') 

    debugCompile ('com.squareup.leakcanary:leakcanary-android:1.5') { 
     exclude group: 'com.android.support', module: 'support-v4' 
    } 
    releaseCompile ('com.squareup.leakcanary:leakcanary-android-no-op:1.5') { 
     exclude group: 'com.android.support', module: 'support-v4' 
    } 
    testCompile ('com.squareup.leakcanary:leakcanary-android-no-op:1.5') { 
     exclude group: 'com.android.support', module: 'support-v4' 
    } 

    compile ('com.jakewharton:butterknife:8.5.1') { 
     exclude group: 'com.android.support', module: 'support-v4' 
    } 
    annotationProcessor ('com.jakewharton:butterknife-compiler:8.5.1') { 
     exclude group: 'com.android.support', module: 'support-v4' 
    } 
} 

projet build.gradle:

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:2.4.0-alpha1' 
     classpath "io.realm:realm-gradle-plugin:3.0.0" 
//  classpath 'com.getkeepsafe.dexcount:dexcount-gradle-plugin:0.5.5' 

     // NOTE: Do not place your application dependencies here; they belong 
     // in the individual module build.gradle files 
    } 
} 

allprojects { 
    repositories { 
     jcenter() 
     flatDir { 
      dirs 'libs' 
     } 
    } 
} 

task clean(type: Delete) { 
    delete rootProject.buildDir 
} 

règles Proguard:

#DEBUGGING 
#-dontobfuscate 
#-dontoptimize 
############### 
-optimizationpasses 5 
-dontusemixedcaseclassnames 
-dontskipnonpubliclibraryclasses 
-dontpreverify 
-verbose 
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/* 
-adaptresourcefilenames 

-keep class com.aliakseipilko.signoutsystem.** { *; } 
-keep public class * extends android.app.Activity 
-keep public class * extends android.app.Application 
-keep public class * extends android.app.Service 
-keep public class * extends android.content.BroadcastReceiver 
-keep public class * extends android.content.ContentProvider 
-keep public class * extends android.preference.Preference 
-keep public class com.android.vending.billing.IInAppBillingService 
-keep public class * extends android.view.View { 
    public <init>(android.content.Context); 
    public <init>(android.content.Context, android.util.AttributeSet); 
    public <init>(android.content.Context, android.util.AttributeSet, int); 
} 
-keepclasseswithmembers class * { 
    public <init>(android.content.Context, android.util.AttributeSet); 
} 
-keepclasseswithmembers class * { 
    public <init>(android.content.Context, android.util.AttributeSet, int); 
} 
-keepclassmembers class * extends android.content.Context { 
    public void *(android.view.View); 
    public void *(android.view.MenuItem); 
} 
-keepclassmembers enum * { 
    public static **[] values(); 
    public static ** valueOf(java.lang.String); 
} 

-dontwarn sun.misc.Unsafe 

-dontwarn okio.** 
-dontwarn com.squareup.okhttp.** 
-dontwarn biweekly.io.** 
-dontwarn com.github.tibolte.** 

-keep class com.github.tibolte.** 
-keep class okio.** 
-keep class biweekly.io.** 
-keep class com.squareup.okhttp.** 
-keep class SecuGen.FDxSDKPro.** 
-keep class com.survivingwithandroid.** 

-keep class android.support.v4.app.** { *; } 
-keep interface android.support.v4.app.** { *; } 
-dontwarn android.support.** 

-keep public class android.support.v7.widget.** { *; } 
-keep public class android.support.v7.internal.widget.** { *; } 
-keep public class android.support.v7.internal.view.menu.** { *; } 

-keep public class * extends android.support.v4.view.ActionProvider { 
    public <init>(android.content.Context); 
} 

-keepclasseswithmembernames class * { 
    native <methods>; 
} 

-keep class * implements android.os.Parcelable { 
    public static final android.os.Parcelable$Creator *; 
} 

-keep class *.R 

-keepclasseswithmembers class **.R$* { 
    public static <fields>; 
} 

# Retain generated class which implement Unbinder. 
-keep public class * implements butterknife.Unbinder { public <init>(**, android.view.View); } 

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

Toute aide serait apprécié

Répondre

6

La question est butterknife qui est compilé avec une version de support supérieur (25.1.0), vous voudrez peut-être rétrograder butterknife ou déplacer toutes les bibliothèques de soutien aux 25.1.0

Ici, j'ai rétrogradé butterknife-8.0.1:

dependencies { 
    compile('com.google.api-client:google-api-client-android:1.22.0') { 
     exclude module: 'httpclient' 
    } 
    compile('com.google.apis:google-api-services-sheets:v4-rev19-1.22.0') { 
     exclude module: 'httpclient' 
    } 

    compile 'com.google.android.gms:play-services-identity:9.2.0' 
    compile 'com.google.android.gms:play-services-auth:9.2.0' 

    compile 'com.android.support:appcompat-v7:23.4.0' 
    compile 'com.android.support:design:23.4.0' 
    compile 'com.android.support:percent:23.4.0' 

    compile 'com.squareup.okhttp3:okhttp:3.3.1' 
    compile 'com.squareup.okhttp3:logging-interceptor:3.3.1' 
    compile 'com.squareup.okio:okio:1.8.0' 
    compile 'com.squareup.picasso:picasso:2.5.2' 
    compile 'net.sf.biweekly:biweekly:0.4.6' 
    compile 'com.github.tibolte:agendacalendarview:1.0.4' 
    compile 'com.7heaven.widgets:segmentcontrol:1.14' 
    compile 'com.survivingwithandroid:weatherlib:1.6.0' 
    compile 'com.survivingwithandroid:weatherlib_okhttpclient:1.6.0' 
    compile files('libs/FDxSDKProAndroid.jar') 
    debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5' 
    releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5' 
    testCompile('com.squareup.leakcanary:leakcanary-android-no-op:1.5') 

    compile 'com.jakewharton:butterknife:8.0.1' 
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.0.1' 
} 

Puis dans votre proguard.pro pour traiter avertissement:

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

-keep class biweekly.io.json.** { *; } 
-dontwarn biweekly.io.json.** 

-dontwarn java.lang.invoke** 

-dontwarn sun.misc.Unsafe 

-dontwarn okio.** 

Notez que j'ai aussi permis de construire multidex avec succès: j'ai ajouté multiDexEnabled true à defaultConfig