2017-01-13 3 views
1

Ich versuche, eine grundlegende app Kotlin/Anko zu bauen, aber ich erhalte die folgende doppelte Datei AusnahmeDuplicateFileException in apk Build mit Kotlin

Ausführung für Aufgabe gescheitert ': App: transformResourcesWithMergeJavaResForDebug'.> com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Doppelte Dateien kopiert in APK Kotlin/intern/internal.kotlin_builtins File1: C: \ Benutzer \ mahesh.gradle \ Cache \ module-2 \ files-2.1 \ org.jetbrains.kotlin \ kotlin-runtime \ 1.0.6. \ 3562c66f648480d3bd4f76cff722488ced13445b \ kotlin-runtime-1.0.6.jar File2: C: \ Benutzer \ mahesh.gradle \ caches \ modules-2 \ files-2.1 \ org.jetbrains.kotlin \ kotlin-compiler-embeddable \ 1.0.6 \ 4008eb91a337b377dae7e4572b8b543e5321f549 \ kotlin-compiler-embeddable-1.0.6. jar

für die App-Ebene gradle Datei der Code ist Folgende:

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' 

} 

nach dem Code für Projektebene gradle Datei:

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 
} 

Und das ist der Grund-Code für die Haupt-UI-Datei

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

und der Inhalt wird auf MainActivityKotlin Datei setzen Sie die Methode MainUI().setContentView(this) in seiner onCreatemethod verwenden.

Ich habe versucht, den Gradle-Cache zu löschen und das Projekt wieder aufzubauen, aber nichts funktioniert. Bitte lassen Sie mich wissen, wo ich falsch liege?

Antwort

1

entfernen compile "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version" von Ihrem gradle

Entfernen Sie auch alle buildscript Abschnitt von Ihnen App-Ebene gradle

+0

Ich habe "kompilieren" org.jetbrains.kotlin: kotlin-android-extensions: $ kotlin_version "' aus dem Projekt Level Gradle entfernt. Trotzdem bekomme ich den gleichen Fehler. Können Sie mir bitte sagen, was mit dem Code nicht stimmt? –

+0

Dieser Beitrag hat endlich meine 4-tägige Frustration mit diesem Duplikationsproblem gelindert: ** Entferne die Kompilierung "org.jetbrains.kotlin: kotlin-android-extensions: $ kotlin_version" von deiner Klasse **. Danke @Tomasz Czura –

1

Try this one:

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

Auch brauchen Sie nicht über die Android-Erweiterungen Abhängigkeit mehr , wie es im Plugin enthalten ist. Einfach die apply plugin: 'kotlin-android-extensions' in Ihrer Größe zu haben ist genug.

+0

Dies war das nützlichste Bit der Informationen "** Sie brauchen nicht mehr die Android-Erweiterungen Abhängigkeit, wie es in das Plugin ** ** Ich kam in den 4 Tagen des Kämpfens mit diesem Problem kam! ! GROSSE DANK @VeteR_OK –