2017-01-13 8 views
1

Я пытаюсь построить базовое приложение с помощью Котлин/Анко, но я получаю следующее дубликата исключение файлаDuplicateFileException в APK сборке используя Котлин

Execution Сбой задачи «: приложение: transformResourcesWithMergeJavaResForDebug».> com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Дублирующие файлы скопированы в APK kotlin/internal/internal.kotlin_builtins Файл1: C: \ Users \ mahesh.gradle \ caches \ модули-2 \ файлы-2,1 \ org.jetbrains.kotlin \ Котлин-среды выполнения \ 1.0.6. \ 3562c66f648480d3bd4f76cff722488ced13445b \ Котлин-среда-1.0.6.jar Файл2: C: \ Users \ mahesh.gradle \ caches \ modules-2 \ files-2.1 \ org.jetbrains.kotlin \ kotlin-compiler-embeddable \ 1.0.6 \ 4008eb91a337b377dae7e4572b8b543e5321f549 \ kotlin-compiler-embeddable-1.0.6. баночка

Ниже код для Gradle файла уровня приложения:

apply plugin: 'com.android.application' 
apply plugin: 'kotlin-android' 

buildscript { 
    ext.kotlin_version = '1.0.6' 

    repositories { 
     jcenter() 
    } 

    dependencies { 
     classpath 'com.android.tools.build:gradle:2.2.3' 
     classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 
    } 
} 

repositories { 
    jcenter() 
} 

android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.2" 

    defaultConfig { 
     applicationId "com.example.kotlin.androdikotlinexample" 
     minSdkVersion 15 
     targetSdkVersion 23 
     versionCode 1 
     versionName "1.0" 
    } 

    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
    sourceSets { 
     main.java.srcDirs += 'src/main/kotlin' 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    testCompile 'junit:junit:4.12' 
    compile 'com.android.support:appcompat-v7:23.1.1' 
    compile 'com.android.support:design:23.1.1' 

    //kotlin 
    compile "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version" 
    compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" 

    //anko 
    compile "org.jetbrains.anko:anko-design:0.8.3" 
    compile "org.jetbrains.anko:anko-support-v4:0.8.3" 
    compile "org.jetbrains.anko:anko-sdk15:0.8.3" 
    compile 'org.jetbrains.anko:anko-appcompat-v7:0.8.3' 

} 

Ниже приведен код для уровня проекта Gradle файла:

buildscript { 
    ext.kotlin_version = '1.0.6' 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:2.2.3' 
     classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 

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

allprojects { 
    repositories { 
     jcenter() 
    } 
} 

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

И это основной код для Файл MainUI

class MainUI : AnkoComponent<MainActivityKotlin> { 
    override fun createView(ui: AnkoContext<MainActivityKotlin>): View = with(ui) { 
     coordinatorLayout { 
      verticalLayout { 
       // maybe put some content here 
      } 
      floatingActionButton { 
       imageResource = android.R.drawable.ic_menu_edit 
       onClick { 
        ui.owner.startActivityForResult<MainActivityKotlin>(1) 
       } 
      }.lparams { 
       gravity = Gravity.BOTTOM or Gravity.END 
      } 
     } 
    } 
} 

И содержание устанавливается на MainActivityKotlin файл, используя метод MainUI().setContentView(this) в onCreatemethod.

Я попытался удалить кегель градиента и снова построить проект, но ничего не работает. Пожалуйста, дайте мне знать, где я ошибаюсь?

ответ

1

Удалить compile "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version" из вашего Gradle

Снимите также все buildscript участок от вас приложения уровня Gradle

+0

Я удалил 'compile 'org.jetbrains.kotlin: kotlin-android-extensions: $ kotlin_version" из градиента уровня проекта. Тем не менее, я получаю ту же ошибку. Не могли бы вы рассказать мне, что не так с кодом? –

+0

Это сообщение, наконец, облегчило мое 4-дневное разочарование этой проблемой дублирования: ** Удалить компиляцию «org.jetbrains.kotlin: kotlin-android-extensions: $ kotlin_version» из вашей градитуры **. Спасибо @Tomasz Czura –

1

Попробуйте это:

compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" 
compile ("org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version") { 
    transitive = false 
} 

Также вам не нужно зависимость андроид-расширений больше , так как он подключен к плагину. Просто хватит apply plugin: 'kotlin-android-extensions' в вашей градации.

+0

Это был самый полезный бит информации «** вам больше не нужна зависимость андроидов-расширений, так как она связана с плагином **« Я столкнулся в течение 4 дней с этой проблемой! ! БОЛЬШИЕ СПАСИБО @VeteR_OK –