2017-10-30 15 views
1

Android Studio 3.0がリリースされました。同じ日に私はIDEのバージョンとGradleプラグインのバージョンを含むすべての依存関係を更新しました。私のGradleファイルの現在のバージョンでは、^Android Studioのアップデート後にGradleがdexをマージできない

build.gradle(プロジェクト)

buildscript { 
    repositories { 
     jcenter() 
     google() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:3.0.0' 
     classpath 'com.google.gms:google-services:3.1.0' 
     // NOTE: Do not place your application dependencies here; they belong 
     // in the individual module build.gradle files 
    } 
} 

allprojects { 
    repositories { 
     jcenter() 
     maven { url "http://jzaccone.github.io/SlidingMenu-aar" } 
     maven { url "https://jitpack.io" } 
     flatDir { dirs "libs" } 
    } 
} 

build.gradleです(mmodule:アプリ)

buildscript { 
    repositories { 
     maven { url 'https://maven.fabric.io/public' } 
    } 

    dependencies { 
     classpath 'io.fabric.tools:gradle:1.24.0' 
    } 
} 

apply plugin: 'com.google.gms.google-services' 
apply plugin: 'com.android.application' 
apply plugin: 'io.fabric' 

repositories { 
    maven { url 'https://maven.fabric.io/public' } 
    google() 
} 

android { 
    compileSdkVersion 26 
    buildToolsVersion '26.0.2' 
    defaultConfig { 
     minSdkVersion 18 
     targetSdkVersion 26 
     multiDexEnabled true 
     vectorDrawables.useSupportLibrary = true 
    } 

    compileOptions { 
     sourceCompatibility JavaVersion.VERSION_1_8 
     targetCompatibility JavaVersion.VERSION_1_8 
    } 

    /*Нельзя собрать мужское приложение для казахстана например, не понятно как это делать*/ 
    flavorDimensions "country", "section" 

    productFlavors { 

     kz { 
      applicationId 'kz.kupivip.android' 
      dimension "country" 
      buildConfigField "String", "DOMEN", "\"kz\"" 
      buildConfigField "String", "KNG_API_URL", "\"https://kng.kupivip.kz\"" 
      buildConfigField "String", "PRE_API_URL", "\"http://kng.pre.kupivip.kz\"" 
      buildConfigField "String", "DEV_API_URL", "\"http://kng.dev.kupivip.kz\"" 
      buildConfigField "String", "CALL_CENTER_PHONE_NUMBER", "\"+77172727559\"" 
      buildConfigField "String", "FCM_APP_NAME", "\"kazahstan\"" 
      buildConfigField "Integer", "PHONE_DIGIT_LENGTH", "10" 
      buildConfigField "Integer", "BASKET_LIMIT", "6" 
     } 

     by { 
      applicationId 'by.kupivip.android' 
      dimension "country" 
      buildConfigField "String", "DOMEN", "\"by\"" 
      buildConfigField "String", "KNG_API_URL", "\"https://kng.kupivip.by\"" 
      buildConfigField "String", "PRE_API_URL", "\"http://kng.pre.kupivip.by\"" 
      buildConfigField "String", "DEV_API_URL", "\"http://kng.dev.kupivip.by\"" 
      buildConfigField "String", "CALL_CENTER_PHONE_NUMBER", "\"+375255400529\"" 
      buildConfigField "String", "FCM_APP_NAME", "\"belarus\"" 
      buildConfigField "Integer", "PHONE_DIGIT_LENGTH", "9" 
      buildConfigField "Integer", "BASKET_LIMIT", "10" 
     } 

     ru { 
      applicationId 'ru.kupivip.android' 
      dimension "country" 
      buildConfigField "String", "DOMEN", "\"ru\"" 
      buildConfigField "String", "KNG_API_URL", "\"https://kng.kupivip.ru\"" 
      buildConfigField "String", "PRE_API_URL", "\"http://pre.web.kupivip.local\"" 
      buildConfigField "String", "DEV_API_URL", "\"http://dev.web.kupivip.local\"" 
      buildConfigField "String", "CALL_CENTER_PHONE_NUMBER", "\"+7(495)99-444-99\"" 
      buildConfigField "Integer", "PHONE_DIGIT_LENGTH", "10" 
      buildConfigField "Integer", "BASKET_LIMIT", "10" 
     } 

     kupivip { 
      dimension "section" 
      versionCode 83 
      versionName "3.8.0" 
      buildConfigField "boolean", "SEARCH_SUGGESTS_ON", "true" 
      buildConfigField "String", "SEARCH_FILTER", "\"ALL\"" 
      buildConfigField "String", "FCM_APP_NAME", "\"native\"" 
     } 

     kupivipmale { 
      dimension "section" 
      applicationId 'ru.kupivip.android.men' 
      versionName '3.6.2' 
      versionCode 21 
      buildConfigField "boolean", "SEARCH_SUGGESTS_ON", "false" 
      buildConfigField "String", "SEARCH_FILTER", "\"MALE\"" 
      buildConfigField "String", "FCM_APP_NAME", "\"men\"" 
     } 

     kupivipkids { 
      dimension "section" 
      applicationId 'ru.kupivip.android.kids' 
      versionName '3.6.2' 
      versionCode 10 
      buildConfigField "boolean", "SEARCH_SUGGESTS_ON", "false" 
      buildConfigField "String", "SEARCH_FILTER", "\"KIDS\"" 
      buildConfigField "String", "FCM_APP_NAME", "\"kids\"" 
      buildConfigField "String", "FCM_ALL_APP_NAME", "\"kids\"" 
     } 

     kupivipluxe { 
      dimension "section" 
      applicationId 'ru.kupivip.android.luxe' 
      versionName '3.6.2' 
      versionCode 10 
      buildConfigField "boolean", "SEARCH_SUGGESTS_ON", "false" 
      buildConfigField "String", "SEARCH_FILTER", "\"ALL\"" 
      buildConfigField "String", "FCM_APP_NAME", "\"premium\"" 
      buildConfigField "String", "FCM_ALL_APP_NAME", "\"premium\"" 
     } 
    } 

    packagingOptions { 
     exclude 'META-INF/DEPENDENCIES' 
     exclude 'META-INF/LICENSE' 
     exclude 'META-INF/LICENSE.txt' 
     exclude 'META-INF/license.txt' 
     exclude 'META-INF/NOTICE' 
     exclude 'META-INF/NOTICE.txt' 
     exclude 'META-INF/notice.txt' 
     exclude 'META-INF/ASL2.0' 
     exclude 'META-INF/services/javax.annotation.processing.Processor' // butterknife 
    } 

    buildTypes { 
     release { 
      minifyEnabled false 
      buildConfigField "String", "AMPLITUDE_KEY", "\"a2e3631d72a8242c628d2580a82c857b\"" 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
      buildConfigField "String", "PARTNER", "\"none\"" 
     } 

     release_yandex.initWith(buildTypes.release) 
     release_yandex { 
      buildConfigField "String", "PARTNER", "\"yandex2016\"" 
     } 

     release_aff_admon.initWith(buildTypes.release) 
     release_aff_admon { 
      buildConfigField "String", "PARTNER", "\"AFF_ADMON\"" 
     } 

     alpha.initWith(buildTypes.debug) 
     alpha { 
      debuggable true 
      buildConfigField "String", "AMPLITUDE_KEY", "\"f62648415b602438f2059f46de739b29\"" 
      buildConfigField "String", "PARTNER", "\"none\"" 
      minifyEnabled false 
     } 
    } 

    lintOptions { 
     disable "ResourceType" 
     // butterknife без этого не дает собрать релиз https://github.com/JakeWharton/u2020/issues/216 
    } 

    dexOptions { 
     jumboMode = true 
    } 
} 

dependencies { 
    implementation 'com.android.support:multidex:1.0.2' 
    implementation fileTree(include: ['*.jar'], dir: 'libs') 
    testCompile 'junit:junit:4.12' 
    testCompile 'org.mockito:mockito-core:1.10.19' 

    // Support 
    implementation 'com.android.support:appcompat-v7:26.1.0' 
    implementation 'com.android.support:recyclerview-v7:26.1.0' 
    implementation 'com.android.support:cardview-v7:26.1.0' 
    implementation 'com.android.support:design:26.1.0' 
    implementation 'com.android.support:customtabs:26.1.0' 
    implementation 'com.android.support.constraint:constraint-layout:1.0.2' 

    // Google Services 
    implementation 'com.google.android.gms:play-services-maps:11.4.2' 
    implementation 'com.google.android.gms:play-services-analytics:11.4.2' 
    implementation 'com.google.android.gms:play-services-location:11.4.2' 

    // Firebase 
    implementation 'com.google.firebase:firebase-core:11.4.2' 
    implementation 'com.google.firebase:firebase-messaging:11.4.2' 
    implementation 'com.google.firebase:firebase-appindexing:11.4.2' 
    implementation 'com.google.firebase:firebase-config:11.4.2' 

    // ImageView with zoom and pan capabilities 
    implementation 'it.sephiroth.android.library.imagezoom:imagezoom:2.3.0' 

    // Dagger 
    implementation 'com.google.dagger:dagger-android:2.11' 
    implementation 'com.google.dagger:dagger-android-support:2.11' // if you use the support libraries 
    annotationProcessor 'com.google.dagger:dagger-android-processor:2.11' 
    annotationProcessor 'com.google.dagger:dagger-compiler:2.11' 

    // Butterknife 
    implementation 'com.jakewharton:butterknife:8.8.1' 
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1' 

    // Robospice 
    implementation 'com.octo.android.robospice:robospice:1.4.14' 

    // RxJava 
    implementation 'io.reactivex.rxjava2:rxandroid:2.0.1' 
    implementation 'io.reactivex.rxjava2:rxjava:2.1.3' 

    // Retrofit 
    implementation 'com.squareup.retrofit:retrofit:1.9.0' 
    implementation 'com.squareup.okhttp:okhttp:2.5.0' 
    implementation 'com.squareup.okhttp:okhttp-urlconnection:2.5.0' 

    // Picasso 
    implementation 'com.squareup.picasso:picasso:2.5.2' 

    //Заменить на нативный 
    implementation 'com.daimajia.swipelayout:library:[email protected]' 
    implementation 'me.zhanghai.android.materialprogressbar:library:1.1.6' 
    implementation 'org.florescu.android.rangeseekbar:rangeseekbar-library:0.3.0' 
    implementation 'com.commit451:PhotoView:1.2.4' 

    implementation 'io.branch.sdk.android:library:1.14.5' 

    //BottomSheet выводит дилог шаринга снизу 
    implementation 'com.flipboard:bottomsheet-core:1.5.3' 
    implementation 'com.flipboard:bottomsheet-commons:1.5.3' 

    // Crashlytics 
    implementation('com.crashlytics.sdk.android:crashlytics:[email protected]') { 
     transitive = true; 
    } 

    implementation 'com.amplitude:android-sdk:2.7.1' 
    implementation 'com.facebook.android:facebook-android-sdk:4.20.0' 

    implementation 'com.github.bmelnychuk:atv:1.2.9' 

    // Appsflyer 
    implementation 'com.appsflyer:af-android-sdk:[email protected]' 

    implementation ('com.github.tony19:timber-loggly:1.0.1') 
} 

////

すべて依存関係は、gradle syncプロセス中にエラーを解決しました。ユニットテストは問題なく実行されます。しかし、私がアプリケーションを作成しようとすると - grale show dexエラーをマージすることができません。 Gradleのコンソールから

スタックトレース:

* Exception is: 
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:transformDexArchiveWithDexMergerForRuKupivipAlpha'. 
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:100) 
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:70) 
    at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:63) 
    at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54) 
    at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58) 
    at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:88) 
    at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:52) 
    at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52) 
    at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54) 
    at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43) 
    at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34) 
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:248) 
    at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336) 
    at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328) 
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:197) 
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:107) 
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:241) 
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:230) 
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.java:124) 
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.java:80) 
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:105) 
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:99) 
    at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.java:625) 
    at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:580) 
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:99) 
    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63) 
    at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46) 
    at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55) 
Caused by: java.lang.RuntimeException: com.android.build.api.transform.TransformException: com.android.dex.DexException: Multiple dex files define Lorg/apache/commons/io/filefilter/CanReadFileFilter; 
    at com.android.builder.profile.Recorder$Block.handleException(Recorder.java:55) 
    at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:104) 
    at com.android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.java:213) 
    at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73) 
    at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$IncrementalTaskAction.doExecute(DefaultTaskClassInfoStore.java:173) 
    at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.execute(DefaultTaskClassInfoStore.java:134) 
    at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.execute(DefaultTaskClassInfoStore.java:121) 
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:122) 
    at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336) 
    at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328) 
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:197) 
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:107) 
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:111) 
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:92) 
    ... 27 more 
Caused by: com.android.build.api.transform.TransformException: com.android.dex.DexException: Multiple dex files define Lorg/apache/commons/io/filefilter/CanReadFileFilter; 
    at com.android.build.gradle.internal.transforms.DexMergerTransform.transform(DexMergerTransform.java:230) 
    at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:222) 
    at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:218) 
    at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:102) 
    ... 39 more 
Caused by: com.android.dex.DexException: Multiple dex files define Lorg/apache/commons/io/filefilter/CanReadFileFilter; 
    at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:661) 
    at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:616) 
    at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:598) 
    at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171) 
    at com.android.dx.merge.DexMerger.merge(DexMerger.java:198) 
    at com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:61) 
    at com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:36) 

何がここで間違っていることができますか?

+0

私は同じ問題があったと思います。プロジェクトをクリーニングしてみてください。 – Lukasz

答えて

1

多分、誰かのためにこのヘルプ。

このエラーは、commons/ioとrobospiceのためです。 (あるいは他の依存関係にコモンズ/依存関係があるかもしれません)私の場合、それはロボスピスでした。 Gradleの4.1とは、Googleで見つけることができる-IO commosとエラーに関する追加情報3.0+ ASで

implementation('com.octo.android.robospice:robospice:1.4.14') { 
    exclude module: 'commons-io' 
} 

: あなたはこのようRobospiceを追加する必要があります。このアプローチは私を癒した。

関連する問題