2

my project have 2 modules which are app and apphelper as a library. I have been trying to use kotlin with android Databinding with it but I can't figure it out why it keep showing me these errors when I built project:

FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring project ':app'.
> Could not resolve all dependencies for configuration ':app:stagingRuntimeClasspath'.
   > Unable to find a matching configuration in project :apphelper:
       - Configuration 'debugApiElements':
           - Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'AndroidTypeAttr{name=Aar}' and found compatible value 'AndroidTypeAttr{name=Aar}'.
           - Required com.android.build.gradle.internal.dependency.BuildTypeAttr 'BuildTypeAttr{name=staging}' and found incompatible value 'BuildTypeAttr{name=debug}'.
           - Found com.android.build.gradle.internal.dependency.VariantAttr 'VariantAttr{name=debug}' but wasn't required.
           - Required org.gradle.api.attributes.Usage 'for runtime' and found incompatible value 'for compile'.
       - Configuration 'debugRuntimeElements':
           - Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'AndroidTypeAttr{name=Aar}' and found compatible value 'AndroidTypeAttr{name=Aar}'.
           - Required com.android.build.gradle.internal.dependency.BuildTypeAttr 'BuildTypeAttr{name=staging}' and found incompatible value 'BuildTypeAttr{name=debug}'.
           - Found com.android.build.gradle.internal.dependency.VariantAttr 'VariantAttr{name=debug}' but wasn't required.
           - Required org.gradle.api.attributes.Usage 'for runtime' and found compatible value 'for runtime'.
       - Configuration 'releaseApiElements':
           - Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'AndroidTypeAttr{name=Aar}' and found compatible value 'AndroidTypeAttr{name=Aar}'.
           - Required com.android.build.gradle.internal.dependency.BuildTypeAttr 'BuildTypeAttr{name=staging}' and found incompatible value 'BuildTypeAttr{name=release}'.
           - Found com.android.build.gradle.internal.dependency.VariantAttr 'VariantAttr{name=release}' but wasn't required.
           - Required org.gradle.api.attributes.Usage 'for runtime' and found incompatible value 'for compile'.
       - Configuration 'releaseRuntimeElements':
           - Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'AndroidTypeAttr{name=Aar}' and found compatible value 'AndroidTypeAttr{name=Aar}'.
           - Required com.android.build.gradle.internal.dependency.BuildTypeAttr 'BuildTypeAttr{name=staging}' and found incompatible value 'BuildTypeAttr{name=release}'.
           - Found com.android.build.gradle.internal.dependency.VariantAttr 'VariantAttr{name=release}' but wasn't required.
           - Required org.gradle.api.attributes.Usage 'for runtime' and found compatible value 'for runtime'.

The error log above is shown when I simply click on the build button and it is weirder if I click run button to install an app to a device which is like:

:app:transformDexArchiveWithDexMergerForDebug
AGPBI: {"kind":"error","text":"Error converting bytecode to dex:\nCause: com.android.dex.DexException: Multiple dex files define Lorg/intellij/lang/annotations/PrintFormatPattern;","sources":[{}],"original":"UNEXPECTED TOP-LEVEL EXCEPTION:\ncom.android.dex.DexException: Multiple dex files define Lorg/intellij/lang/annotations/PrintFormatPattern;\n","tool":"Dex"}
AGPBI: {"kind":"error","text":"com.android.dex.DexException: Multiple dex files define Lorg/intellij/lang/annotations/PrintFormatPattern;","sources":[{}]}
AGPBI: {"kind":"error","text":"\tat com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:608)","sources":[{}]}
AGPBI: {"kind":"error","text":"\tat com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:563)","sources":[{}]}
AGPBI: {"kind":"error","text":"\tat com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:545)","sources":[{}]}
AGPBI: {"kind":"error","text":"\tat com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:167)","sources":[{}]}
AGPBI: {"kind":"error","text":"\tat com.android.dx.merge.DexMerger.merge(DexMerger.java:194)","sources":[{}]}
AGPBI: {"kind":"error","text":"\tat com.android.builder.dexing.DexArchiveMergerCallable.mergeDexes(DexArchiveMergerCallable.java:66)","sources":[{}]}
AGPBI: {"kind":"error","text":"\tat com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:54)","sources":[{}]}
AGPBI: {"kind":"error","text":"\tat com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:37)","sources":[{}]}
AGPBI: {"kind":"error","text":"\tat java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1424)","sources":[{}]}
AGPBI: {"kind":"error","text":"\tat java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)","sources":[{}]}
AGPBI: {"kind":"error","text":"\tat java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)","sources":[{}]}
AGPBI: {"kind":"error","text":"\tat java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)","sources":[{}]}
AGPBI: {"kind":"error","text":"\tat java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)","sources":[{}]}

 FAILED
:app:buildInfoGeneratorDebug

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:transformDexArchiveWithDexMergerForDebug'.
> com.android.build.api.transform.TransformException: com.android.dex.DexException: Multiple dex files define Lorg/intellij/lang/annotations/PrintFormatPattern;

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED in 4s
74 actionable tasks: 7 executed, 67 avoided (91%)

I downgrade kotlin version to be '1.1.2-2' to avoid the error and also added 'kotlin.incremental=false' to local.properties

Here are all my build.gradle files:

app Module:

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply from: 'test-environment.gradle'
apply plugin: 'io.fabric'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'


repositories {
    maven { url 'https://maven.fabric.io/public' }
    maven { url "https://jitpack.io" }
    mavenCentral()
}

allprojects {
    repositories {
        jcenter()
        mavenCentral()
        maven { url 'https://maven.fabric.io/public' }

    }
}

android {
    compileSdkVersion Integer.parseInt(project.ANDROID_BUILD_SDK_VERSION)
    buildToolsVersion project.ANDROID_BUILD_TOOLS_VERSION
    defaultConfig {
        applicationId "com.myapp.android"
        minSdkVersion Integer.parseInt(project.ANDROID_BUILD_MIN_SDK_VERSION)
        targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION)
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        vectorDrawables.useSupportLibrary = true
        versionCode 1
        versionName "1.0"
    }

    dataBinding {
        enabled = true
    }

    dexOptions {
        jumboMode = true
    }

    if (System.getenv("CIRCLE")) {
        defaultConfig {
            versionCode Integer.parseInt(System.getenv("CIRCLE_BUILD_NUM"))
            versionName "1.0." + System.getenv("CIRCLE_BUILD_NUM")
        }
    } else {
        defaultConfig {
            versionCode 1
            versionName "1.0"
        }
    }



    signingConfigs {
        debug {
            storeFile file("../myappdebug.keystore")
            storePassword "myapprocks"
            keyAlias "myapp"
            keyPassword "myapprocks"
        }
        staging {
            storeFile file("../myapp_staging.keystore")
            storePassword "myapprocks"
            keyAlias "myapp"
            keyPassword "myapprocks"
        }


        release {
            storeFile rootProject.file('myapp.keystore')
            storePassword System.getenv("KEYSTORE_PASS")
            keyAlias System.getenv("ALIAS_NAME")
            keyPassword System.getenv("ALIAS_PASS")
        }
    }

    buildTypes {
        debug {
            ext.betaDistributionNotifications = false
            signingConfig signingConfigs.debug
            applicationIdSuffix ".dev"
            minifyEnabled false
            shrinkResources false
            proguardFile 'proguard-release.cfg'
            testProguardFile 'proguard-release.cfg'
            manifestPlaceholders = [providerSuffix: ".dev"]
        }
        staging {
            ext.betaDistributionEmailsFilePath = "staging_distribution_emails.txt"
            ext.betaDistributionReleaseNotesFilePath = "release_notes.txt"
            signingConfig signingConfigs.staging
            applicationIdSuffix ".staging"
            shrinkResources true
            minifyEnabled true
            proguardFile 'proguard-release.cfg'
            manifestPlaceholders = [providerSuffix: ".staging"]

        }

        release {
            signingConfig signingConfigs.release
            shrinkResources true
            minifyEnabled true
            proguardFile 'proguard-release.cfg'

        }
    }
}


kapt {
    generateStubs = true
}


dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    api project(':apphelper')
    compile 'com.android.support:appcompat-v7:' + project.ANDROID_SUPPORT_LIBRARY_VERSION
    compile 'com.android.support:cardview-v7:' + project.ANDROID_SUPPORT_LIBRARY_VERSION
    compile 'com.android.support:design:' + project.ANDROID_SUPPORT_LIBRARY_VERSION
    compile 'com.android.support:support-v13:' + project.ANDROID_SUPPORT_LIBRARY_VERSION
    compile 'hanks.xyz:smallbang-library:0.1.2'
    compile 'com.github.bumptech.glide:glide:3.7.0'
    compile 'com.facebook.device.yearclass:yearclass:1.0.1'
    compile 'com.facebook.android:facebook-android-sdk:4.+'
    compile group: 'com.google.code.gson', name: 'gson', version: '2.7'
    compile('com.crashlytics.sdk.android:crashlytics:2.6.2@aar') {
        transitive = true
    }
    compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
    compile "android.arch.lifecycle:runtime:" + project.ANDROID_ARCH_VERSION
    compile "android.arch.lifecycle:extensions:" + project.ANDROID_ARCH_VERSION
    annotationProcessor "android.arch.lifecycle:compiler:" + project.ANDROID_ARCH_VERSION
    compile "android.arch.persistence.room:runtime:" + project.ANDROID_ARCH_VERSION
    annotationProcessor "android.arch.persistence.room:compiler:" + project.ANDROID_ARCH_VERSION
    kapt "com.android.databinding:compiler:$android_plugin_version"


}

library module:

apply plugin: 'com.android.library'

apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'

android {
    compileSdkVersion Integer.parseInt(project.ANDROID_BUILD_SDK_VERSION)
    buildToolsVersion project.ANDROID_BUILD_TOOLS_VERSION


    defaultConfig {
        minSdkVersion Integer.parseInt(project.ANDROID_BUILD_MIN_SDK_VERSION)
        targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION)
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    }

    packagingOptions {
        exclude 'META-INF/DEPENDENCIES.txt'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/notice.txt'
        exclude 'META-INF/license.txt'
        exclude 'META-INF/dependencies.txt'
        exclude 'META-INF/LGPL2.1'
        exclude 'META-INF/maven/com.squareup.okio/okio/pom.properties'
        exclude 'META-INF/maven/com.squareup.okio/okio/pom.xml'
        exclude 'META-INF/maven/com.squareup.retrofit/retrofit/pom.xml'
        exclude 'META-INF/maven/com.squareup.retrofit/retrofit/pom.properties'
    }
}

kapt {
    generateStubs = true
}


dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.google.code.gson:gson:2.6.2'
    compile 'com.squareup.retrofit2:retrofit:2.1.0'
    compile group: 'com.squareup.retrofit2', name: 'converter-gson', version: '2.1.0'
    compile group: 'com.squareup.okhttp3', name: 'logging-interceptor', version: '3.4.1'
    compile 'org.jetbrains:annotations-java5:15.0'
    compile 'hanks.xyz:smallbang-library:0.1.2'
    compile 'com.android.support:support-annotations:' + project.ANDROID_SUPPORT_LIBRARY_VERSION
    compile 'com.android.support:support-v13:' + project.ANDROID_SUPPORT_LIBRARY_VERSION
    compile 'com.android.support:appcompat-v7:' + project.ANDROID_SUPPORT_LIBRARY_VERSION
    compile 'com.android.support:design:' + project.ANDROID_SUPPORT_LIBRARY_VERSION
    compile 'com.android.support:customtabs:' + project.ANDROID_SUPPORT_LIBRARY_VERSION
    compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"

    compile 'com.github.bumptech.glide:glide:3.7.0'
}

repositories {
    mavenCentral()
}

main gradle build script:

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    ext.kotlin_version = '1.1.2-2'
    ext.android_plugin_version = '3.0.0-alpha2'

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

    }
    dependencies {
        classpath 'io.fabric.tools:gradle:1.+'
        classpath "com.android.tools.build:gradle:$android_plugin_version"
        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()
        maven { url 'https://maven.google.com' }
        mavenCentral()
    }
}

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

Anyone has same problems as mine please share the solution. Thanks.

Jutikorn
  • 838
  • 1
  • 11
  • 25

3 Answers3

1

Remove:

kapt {
    generateStubs = true
}

and add to dependencies:

kapt "com.android.databinding:compiler:$android_plugin_version"
John
  • 1,304
  • 1
  • 9
  • 17
  • Thanks @John for your answer but it doesn't work even remove these two things and it comes up with new errors which look similarly – Jutikorn May 27 '17 at 16:25
  • Try to enable multiDex with multiDexEnabled true – John May 27 '17 at 16:29
  • Also try to use 3.0.0-alpha1, I have some problems with alpha2 either – John May 27 '17 at 18:20
  • It seems that downgrade to 3.0 alpha1 isn't allowed. It asks me to update since it isn't compatible version of the Android plugin – Jutikorn May 27 '17 at 18:50
0

It works just for now, I just downgrade com.android.tools.build:gradle to 2.3.2, change the distributionUrl to be https://services.gradle.org/distributions/gradle-3.3-all.zip and use the stable Android Studio (2.3.2). This problem should be wipe out when the Android Studio 3.0 stable is released.

Jutikorn
  • 838
  • 1
  • 11
  • 25
0

I think, that correct sollution is wait for Google fix it: https://issuetracker.google.com/issues/62170415

or for now use workaround as I described here: https://stackoverflow.com/a/44346259/4024146

mtrakal
  • 6,121
  • 2
  • 25
  • 35