【问题标题】:android jetpack project gives archlifecycleversion build errorandroid jetpack 项目给出 archlifecycleversion 构建错误
【发布时间】:2018-05-14 12:05:58
【问题描述】:

我是 android 开发新手,刚刚按照本教程在 android studio 3.2 (canary) 中创建了我的第一个“hello world”项目。 https://developer.android.com/jetpack/docs/getting-started

然后我只是做了 Build-> make project 项目尝试构建并给了我以下错误。

无法为 org.gradle.api.Project 类型的根项目“JetpackHelloWorld”获取未知属性“archLifecycleVersion”。

更新

依赖关系

以下是我的应用程序文件夹 build.gradle 文件中的依赖项标记

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation"org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
    implementation 'com.android.support:appcompat-v7:27.1.1'
    implementation 'com.android.support.constraint:constraint-layout:1.1.0'
    implementation 'android.arch.lifecycle:extensions:1.1.1'
    implementation "android.arch.lifecycle:extensions:$rootProject.archLifecycleVersion"
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

【问题讨论】:

    标签: android android-studio kotlin android-jetpack


    【解决方案1】:

    用实际版本替换$rootProject.archLifecycleVersion,我猜现在是1.1.1

    【讨论】:

    • 我想我两个都已经有了,请查看问题的更新部分
    • 然后删除它,你不能有两个相同的库:-/
    • 确定我删除并尝试再次构建,但奇怪的是它是在项目中默认生成的。并且没有对依赖项进行任何更改,我得到了构建错误。
    • 好的,通过这种方式修复了错误,现在我有一个新错误:带有目录目标的“-d”选项被忽略,因为指定了“-Xbuild-file”
    【解决方案2】:

    在你的应用 Gradle 文件(build.gradle,你应该在它的右边看到“app”),你可能有

    implementation 'android.arch.lifecycle:extensions:$rootProject.archLifecycleVersion'
    

    改成:

    implementation 'android.arch.lifecycle:extensions:1.1.1'
    

    或将其添加到您的实施行的顶部

    def archLifecycleVersion = 1.1.1
    

    【讨论】:

    • 我想我两个都已经有了,请查看问题的更新部分
    【解决方案3】:

    我认为部分(如果不是全部)代码来自此代码实验室:https://codelabs.developers.google.com/codelabs/android-room-with-a-view/

    在代码实验室的第三部分,标题为“更新 gradle 文件”,他们使用这些行(在模块的 build.gradle 中)来导入 Room 和 Lifecycle 组件:

    // Room components
    implementation "android.arch.persistence.room:runtime:$rootProject.roomVersion"
    annotationProcessor "android.arch.persistence.room:compiler:$rootProject.roomVersion"
    androidTestImplementation "android.arch.persistence.room:testing:$rootProject.roomVersion"
    
    // Lifecycle components
    implementation "android.arch.lifecycle:extensions:$rootProject.archLifecycleVersion"
    annotationProcessor "android.arch.lifecycle:compiler:$rootProject.archLifecycleVersion"
    

    因此,这些“roomVersion”和“archLifecycleVersion”是您必须在主 build.gradle 文件中定义的变量。在示例中,他们使用这些值:

    ext {
       roomVersion = '1.0.0'
       archLifecycleVersion = '1.1.0'
    }
    

    但我实际上对这两个变量都使用了“1.1.1”并且它有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多