Kotlin的Android Studio版本失败了

时间:2016-10-24 21:46:00

标签: android android-studio gradle android-gradle kotlin

    :app:mergeDebugAssets
            :app:processDebugJavaRes UP-TO-DATE
            :app:transformResourcesWithMergeJavaResForDebug FAILED

            FAILURE: Build failed with an exception.

            * What went wrong:
            Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'.
            > com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK kotlin/internal/internal.kotlin_builtins
            File1: /Users/KD/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-compiler-embeddable/1.0.4/172b43fbc03b521fed141484b212d6725fa671a9/kotlin-compiler-embeddable-1.0.4.jar
            File2: /Users/KD/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-runtime/1.0.4/8e25da5e31669f5acf514bdd99b94ff5c7003b3b/kotlin-runtime-1.0.4.jar

我的build.gradle:

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

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        applicationId "com.app2par.ctime"
        minSdkVersion 16
//        minSdkVersion 21
//        targetSdkVersion 23
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

        multiDexEnabled false
//        multiDexEnabled true
    }
    dexOptions {
        preDexLibraries true
        javaMaxHeapSize "2g" // Use gig increments depending on needs
        incremental true
    }
    buildTypes {
        debug {
            minifyEnabled false
//            testCoverageEnabled true
//            ext.betaDistributionReleaseNotes = getCrashlyticsBetaMessage()
//            ext.betaDistributionGroupAliases = 'team'
        }
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    sourceSets {
        main.java.srcDirs += 'src/main/kotlin'
    }
//    dataBinding {
//        enabled = true
// https://code.google.com/p/android/issues/detail?id=187443&q=attachments%3D0&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars
//    }
    lintOptions {
        abortOnError false
    }

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

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile project(':firebasesync')
    compile project(':liboid')
    compile project(':cloudtimemodel')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.1') {
        exclude group: 'com.android.support'
    }
    androidTestCompile('com.android.support.test.espresso:espresso-contrib:2.2.1') {
        exclude group: 'com.android.support'
    }
    compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    //    compile('com.crashlytics.sdk.android:crashlytics:2.5.5@aar') {
    //        transitive = true;
    //    }
    //    compile 'com.google.android.gms:play-services:5.0.89'
    //    compile 'com.google.android.gms:play-services:7.0.0'
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:design:23.1.1'
    compile "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"
    // compile   'com.firebase:firebase-client-android:2.0.3.+'
//    compile 'com.google.android.gms:play-services-safetynet:8.3.0'
//    compile 'com.google.android.gms:play-services-auth:8.3.0'

    compile 'com.google.android.gms:play-services-plus:7.0.0' // play-services-plus:7.0.0 : office-mover
//    compile 'com.google.android.gms:play-services-auth:8.3.0' // play-services-auth:8.3.0 : ShoppingList++

    //    compile 'com.google.android.gms:play-services-identity:7.0.0'
}
buildscript {
//    ext.kotlin_version = '1.0.0-rc-1036'
    ext.kotlin_version = '1.0.4'
    repositories {
        mavenCentral()
        maven { url 'https://maven.fabric.io/public' }
    }
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
//        classpath 'org.ajoberstar:grgit:1.1.0'
//        classpath 'io.fabric.tools:gradle:1.+'
//        classpath 'org.kt3k.gradle.plugin:coveralls-gradle-plugin:2.5.0-x'
    }
}
repositories {
    mavenCentral()
    maven { url 'https://maven.fabric.io/public' }
}

如何修复或诊断?

3 个答案:

答案 0 :(得分:2)

您应该从compile "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"部分移除dependencies并将其移至buildscript { dependencies { ... } }

答案 1 :(得分:2)

您确实将then放入了错误的compile "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"文件

您可以使用build.gradle插件的内置转换器来解决此问题。根据{{​​1}}:

  

在项目中配置Kotlin

     

添加新的Kotlin文件时,IntelliJ IDEA(和Android Studio)   自动提示我们是否要配置   项目的Kotlin运行时。但是,目前,转换   现有的Java文件不会提示此操作。所以我们必须   手动调用它(通过Find Action):

     

Config-Kotlin

     

然后我们被提示输入Kotlin的版本。选择最新的   可从已安装的版本列表中获取。

     

Config-Kotlin-Details

     

为我们配置Kotlin后,应用程序的build.gradle文件   应该更新。现在我们可以看到应用插件:'kotlin-android'   并且添加了依赖项。

     

(有关如何为项目设置gradle的更多详细信息,请检查   Using Gradle

     

最后要做的是同步项目。我们可以按kotlin   在提示中或调用操作使用Gradle文件同步项目

     

https://kotlinlang.org/assets/images/tutorials/kotlin-android/sync-project-with-gradle.png

     

来自:https://kotlinlang.org/docs/tutorials/kotlin-android.html

查看上面的链接以获取更多信息。

希望它会有所帮助。

答案 2 :(得分:0)

您需要只应用一个插件,在您的情况下apply plugin: 'kotlin-android-extensions',并且只需要compile "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"此依赖项。它对我有用