2017-03-19 2 views
5

내가 그러나이 나타나는 유지 Proguard와를 통해 내 안드로이드 응용 프로그램을 실행하려고 :Proguard와 중복 ZIP 엔트리

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])) 

나는 이것이 android.support.v4 두 번 어딘가에 선언되고 있음을 의미 알고, 그래서 추가 시도 exclude group: 'com.android.support', module: 'support-v4'이 포함되어있을 수있는 모든 종속성에 대한 정보를 제공하지만 정리되지 않아도 작동하지 않습니다.

어딘가에 의존성을 놓쳤음에 틀림 없다. 나는 그것을 모든 것에 추가했다. (과잉), 그러나 여전히 효과가 없다. 주변 검색

, 나는 비슷한 게시물이 조각을 발견뿐만 아니라 안드로이드 섹션에서 추가 :

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

나는 아이디어의 부족과 답변을 검색 하시나요 일에 데려다 것 한 나는 이미 시도했다. 내가 놓친 게있어?

응용 프로그램 build.gradle (위의 모든 해킹을 가진 혼란) :

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' 
    } 
} 

프로젝트 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 
} 

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>; } 

어떤 도움 감사하겠습니다.

답변

6

문제는 더 높은 지원 버전 (25.1.0)로 컴파일 butterknife, 그래서 당신은 butterknife를 다운 그레이드하거나 I 다운 그레이드 25.1.0 여기

모든 지원 라이브러리를 이동할 수 있습니다 butterknife8.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' 
} 

-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.** 

참고 나는 또한 구축 multidex을 설정 한 :

그런 다음 proguard.pro에 경고를 다루는 성공적으로 : multiDexEnabled truedefaultConfig에 추가했습니다.