【问题标题】:Data Binding with Android Studio 3.0 Canary 3与 Android Studio 3.0 Canary 3 的数据绑定
【发布时间】:2017-11-05 05:01:03
【问题描述】:

我正在尝试在我现有的项目中使用 DataBinding。根据文档,我在 app 模块的 build.gradle 中添加了以下几行并编译了项目。

 dataBinding {
    enabled = true
}

我收到以下错误:

Could not resolve all dependencies for configuration ':app:devDebugCompileClasspath'.

找不到 com.android.databinding:baseLibrary:3.0.0-alpha3。 在以下位置搜索: 文件:/C:/Users/incnayak/AppData/Local/Android/sdk/extras/m2repository/com/android/databinding/baseLibrary/3.0.0-alpha3/baseLibrary-3.0.0-alpha3.pom 文件:/C:/Users/incnayak/AppData/Local/Android/sdk/extras/m2repository/com/android/databinding/baseLibrary/3.0.0-alpha3/baseLibrary-3.0.0-alpha3.jar 文件:/C:/Users/incnayak/AppData/Local/Android/sdk/extras/google/m2repository/com/android/databinding/baseLibrary/3.0.0-alpha3/baseLibrary-3.0.0-alpha3.pom 文件:/C:/Users/incnayak/AppData/Local/Android/sdk/extras/google/m2repository/com/android/databinding/baseLibrary/3.0.0-alpha3/baseLibrary-3.0.0-alpha3.jar 文件:/C:/Users/incnayak/AppData/Local/Android/sdk/extras/android/m2repository/com/android/databinding/baseLibrary/3.0.0-alpha3/baseLibrary-3.0.0-alpha3.pom 文件:/C:/Users/incnayak/AppData/Local/Android/sdk/extras/android/m2repository/com/android/databinding/baseLibrary/3.0.0-alpha3/baseLibrary-3.0.0-alpha3.jar https://jcenter.bintray.com/com/android/databinding/baseLibrary/3.0.0-alpha3/baseLibrary-3.0.0-alpha3.pom https://jcenter.bintray.com/com/android/databinding/baseLibrary/3.0.0-alpha3/baseLibrary-3.0.0-alpha3.jar https://jitpack.io/com/android/databinding/baseLibrary/3.0.0-alpha3/baseLibrary-3.0.0-alpha3.pom https://jitpack.io/com/android/databinding/baseLibrary/3.0.0-alpha3/baseLibrary-3.0.0-alpha3.jar https://maven.fabric.io/public/com/android/databinding/baseLibrary/3.0.0-alpha3/baseLibrary-3.0.0-alpha3.pom https://maven.fabric.io/public/com/android/databinding/baseLibrary/3.0.0-alpha3/baseLibrary-3.0.0-alpha3.jar 要求: 项目:应用程序 找不到 com.android.databinding:baseLibrary:3.0.0-alpha3。 在以下位置搜索: 文件:/C:/Users/incnayak/AppData/Local/Android/sdk/extras/m2repository/com/android/databinding/baseLibrary/3.0.0-alpha3/baseLibrary-3.0.0-alpha3.pom 文件:/C:/Users/incnayak/AppData/Local/Android/sdk/extras/m2repository/com/android/databinding/baseLibrary/3.0.0-alpha3/baseLibrary-3.0.0-alpha3.jar 文件:/C:/Users/incnayak/AppData/Local/Android/sdk/extras/google/m2repository/com/android/databinding/baseLibrary/3.0.0-alpha3/baseLibrary-3.0.0-alpha3.pom 文件:/C:/Users/incnayak/AppData/Local/Android/sdk/extras/google/m2repository/com/android/databinding/baseLibrary/3.0.0-alpha3/baseLibrary-3.0.0-alpha3.jar 文件:/C:/Users/incnayak/AppData/Local/Android/sdk/extras/android/m2repository/com/android/databinding/baseLibrary/3.0.0-alpha3/baseLibrary-3.0.0-alpha3.pom 文件:/C:/Users/incnayak/AppData/Local/Android/sdk/extras/android/m2repository/com/android/databinding/baseLibrary/3.0.0-alpha3/baseLibrary-3.0.0-alpha3.jar https://jcenter.bintray.com/com/android/databinding/baseLibrary/3.0.0-alpha3/baseLibrary-3.0.0-alpha3.pom https://jcenter.bintray.com/com/android/databinding/baseLibrary/3.0.0-alpha3/baseLibrary-3.0.0-alpha3.jar https://jitpack.io/com/android/databinding/baseLibrary/3.0.0-alpha3/baseLibrary-3.0.0-alpha3.pom https://jitpack.io/com/android/databinding/baseLibrary/3.0.0-alpha3/baseLibrary-3.0.0-alpha3.jar https://maven.fabric.io/public/com/android/databinding/baseLibrary/3.0.0-alpha3/baseLibrary-3.0.0-alpha3.pom https://maven.fabric.io/public/com/android/databinding/baseLibrary/3.0.0-alpha3/baseLibrary-3.0.0-alpha3.jar 要求: 项目:app > com.android.databinding:library:1.3.1 项目:app > com.android.databinding:adapters:1.3.1

谁能帮我解决这个问题?我正在使用 Android Studio 3.0 Canary 3。

我的项目级gradle

buildscript {
repositories {
    jcenter()
    maven {
        url 'https://maven.google.com'
    }
}
dependencies {
    classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.1.2-4'
    classpath 'com.google.firebase:firebase-plugins:1.1.0'
    classpath 'com.android.tools.build:gradle:3.0.0-alpha3'
    classpath 'com.google.gms:google-services:3.0.0'
    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
}
}

allprojects {
repositories {
    jcenter()
    maven { url 'https://jitpack.io' }
}
}

应用级分级

buildscript {
dependencies {
    //noinspection GradleDynamicVersion
    classpath 'io.fabric.tools:gradle:1.+'
}

repositories {
    mavenCentral()
    maven { url 'https://maven.fabric.io/public' }
}
}
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'com.google.firebase.firebase-perf'
apply plugin: 'io.fabric'
apply from: "../constants.gradle"

repositories {
    maven { url 'https://maven.fabric.io/public' }
}
android {
compileSdkVersion project.ext.compileSdk
buildToolsVersion "${project.ext.buildtools}"
signingConfigs {
    config {
        keyAlias keystoreProperties['keyAlias']
        keyPassword keystoreProperties['keyPassword']
        storeFile file(keystoreProperties['storeFile'])
        storePassword keystoreProperties['storePassword']
    }
}

// Data Binding Library
dataBinding {
    enabled = true
}
defaultConfig {
        applicationId "com.chanse.cee2048"
        minSdkVersion project.ext.minSdk
        targetSdkVersion project.ext.targetSdk
        versionCode versionCodeNo
        versionName versionNameMajor + "." + versionNameMinor + "." + versionNamePatch + "." + versionNameBuild
        vectorDrawables.useSupportLibrary = true
        versionNameSuffix ' (Beta)'
        signingConfig signingConfigs.config
    }
buildTypes {
    release {
//            debuggable true
//            shrinkResources true
        signingConfig signingConfigs.config
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    debug {
        signingConfig signingConfigs.config
    }
}
compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}
flavorDimensions "chanse"
productFlavors {
    dev {
        applicationIdSuffix '.debug'
        minSdkVersion project.ext.minSdkDebug

        // Build only for english and xxhdpi density
        resConfigs ("en", "xxhdpi")


        // Have a different application name for dev version
        resValue "string", "app_name", "Chanse Games Dev"
    }
    prod {
        // The actual minSdkVersion for the application.
        minSdkVersion project.ext.minSdk


        // Have a different application name for dev version
        resValue "string", "app_name", "Chanse Games"
    }
}
return void
}

dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile "com.android.support:appcompat-v7:${project.ext.support_library_version}"
compile "com.android.support:cardview-v7:${project.ext.support_library_version}"
compile "com.android.support:recyclerview-v7:${project.ext.support_library_version}"
compile "com.android.support:design:${project.ext.support_library_version}"
compile 'com.android.support.constraint:constraint-layout:1.0.2'
implementation 'com.android.databinding:library:1.3.1'
implementation 'com.android.databinding:adapters:1.3.1'
compile 'org.jetbrains.kotlin:kotlin-stdlib:1.1.2-4'
apply plugin: 'com.google.gms.google-services'
}

【问题讨论】:

    标签: android android-studio build.gradle android-databinding


    【解决方案1】:

    将这些行添加到您的模块级 build.gradle 作为依赖项; Android Studio 3.0 改变了它提取您之前通过 SDK 管理器下载的库的方式 - https://developer.android.com/studio/build/dependencies.html#google-maven

    implementation 'com.android.databinding:library:1.3.1'
    implementation 'com.android.databinding:adapters:1.3.1'
    

    您可能不需要第二行,这取决于您使用数据绑定的方式。

    除了implementation,您还可以使用旧的compile。使用implementation 将避免生成警告;它是 Android Gradle 插件现在默认使用的新 Gradle Java 库插件的一部分。

    如果您还没有,您还需要添加类似以下内容(通常在您的模块级别 build.gradle) - 这会添加 Google 的新 Maven 存储库以用于 Android 依赖项:

    repositories {
        maven {
            url 'https://maven.google.com'
        }
    }
    

    【讨论】:

    • 需要这个吗?我认为 dataBinding { enabled = true } 就足够了。你能给我看一下这样说的文件吗?
    • 在 3.0 之前就足够了。在 3.0 中,情况发生了变化。 3.0 仍然是 alpha,因此大多数文档仍然描述了遗留方式。我已经用关键参考和附加信息更新了我的答案。试试看。
    • 那太糟糕了。您是否确保包含我添加到答案中的新 maven.google.com 存储库?我可以确认我有 baseLibrary-3.0.0-alpha3.jar,但我不知道它来自哪里。我看到对我来说 baseLibrary-3.0.0-alpha2.jar 来自 maven.google.com,但我不确定 alpha3 来自哪里。
    • 是的,我已经添加了。此外,如果您看到我的日志,我在 gradle 的搜索列表中找不到 maven.google.com。有问题吗?
    • 如果我要删除 dataBinding { enabled = true } 并添加实现细节,我会收到错误消息 - 错误:无法解析:com.android.databinding:baseLibrary:2.3.0-dev
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-13
    • 2017-10-28
    • 2017-10-17
    • 1970-01-01
    • 2017-12-11
    相关资源
    最近更新 更多