2017-05-27 82 views
2

我的项目有两个模块,分别是appapphelper作为一个库。我一直在尝试使用android databinding与kotlin一起使用它,但是我无法弄清楚为什么当我构建项目时它会一直向我显示这些错误:Kotlin with Android DataBinding in Android Studio 3.0 canary 2

失败:构建失败,出现异常。

* 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'. 

上述错误日志所示,当我只需点击构建按钮和如果我点击运行按钮到一个应用安装到一个装置,该装置是像它是怪异:

: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%) 

我降级科特林版本要“1.1.2-2”避免error,并且还增加了“kotlin.incremental =假”至local.properties

这里是我的所有的build.gradle文件:

应用模块:

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:[email protected]') { 
     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" 


} 

库模块:

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

主要gradle这个构建脚本:

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

任何人有和我一样的问题请分享olution。 谢谢。

回答

1

删除:

kapt { 
    generateStubs = true 
} 

,并添加到依赖性:

kapt "com.android.databinding:compiler:$android_plugin_version" 
+0

感谢@约翰你的答案,但它不工作甚至删除这两件事情,它会出现类似的新错误 – Jutikorn

+0

尝试使用multiDexEnabled启用multiDex true – John

+0

也尝试使用3.0.0-alpha1,我有一些问题与alpha2 – John

0

它的工作原理只是现在,我只是降级com.android.tools.build:gradle到2.3.2,更改distributionUrl为https://services.gradle.org/distributions/ gradle-3.3-all .zip并使用稳定的Android Studio(2.3.2)。 Android Studio 3.0稳定版发布时应该清除这个问题。

+0

我最终这样做了:( – amouly

相关问题