145

我正在使用Android Studio 3.2 Beta5将我的项目迁移到AndroidX。当我重建我的应用程序时,我收到了这些错误:

错误:[TAG] 无法解析变量“${animal.sniffer.version}”

错误:[TAG] 无法解析变量“${junit.version}”

完全清洁和重建不起作用!有人知道怎么修这个东西吗?


gradle.properties

android.enableJetifier=true
android.useAndroidX=true

构建.gradle

buildscript {
    repositories {
        google()
        jcenter()
        mavenCentral()
        maven { url 'https://maven.fabric.io/public' }
        maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.0-beta05'

        classpath 'com.google.gms:google-services:4.0.1'
        classpath "io.realm:realm-gradle-plugin:5.3.1"
        classpath 'io.fabric.tools:gradle:1.25.4'
        classpath 'com.google.firebase:firebase-plugins:1.1.5'
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        mavenCentral()
        maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
    }
}

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

应用程序/build.gradle

apply plugin: 'com.android.application'
apply plugin: 'realm-android'
apply plugin: 'io.fabric'
apply plugin: 'com.google.firebase.firebase-perf'

android {
    compileSdkVersion 28
    buildToolsVersion "28.0.0"
    defaultConfig {
        applicationId "com.iceteaviet.fastfoodfinder"
        minSdkVersion 16
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        multiDexEnabled true
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
        }
    }
    aaptOptions {
        cruncherEnabled = false
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    testImplementation 'junit:junit:4.12'

    implementation 'com.jakewharton:butterknife:9.0.0-SNAPSHOT'

    implementation 'androidx.appcompat:appcompat:1.0.0-rc01'
    implementation 'com.google.android.material:material:1.0.0-rc01'
    implementation 'androidx.legacy:legacy-support-v4:1.0.0-rc01'
    implementation 'androidx.cardview:cardview:1.0.0-rc01'

    implementation 'com.google.maps.android:android-maps-utils:0.5'
    implementation 'com.google.android.gms:play-services-maps:15.0.1'
    implementation 'com.google.android.gms:play-services-location:15.0.1'
    implementation 'com.google.firebase:firebase-core:16.0.1'
    implementation 'com.google.firebase:firebase-database:16.0.1'
    implementation 'com.google.firebase:firebase-auth:16.0.1'
    implementation 'com.google.android.gms:play-services-auth:15.0.1'

    implementation 'com.github.bumptech.glide:glide:4.7.1'

    implementation 'com.google.code.gson:gson:2.8.5'
    implementation 'com.squareup.retrofit2:retrofit:2.4.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.4.0'

    implementation 'org.greenrobot:eventbus:3.1.1'

    implementation 'de.hdodenhof:circleimageview:2.2.0'

    implementation 'io.realm:realm-android-library:5.3.1'

    implementation 'com.facebook.android:facebook-android-sdk:4.34.0'

    implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'
    implementation 'io.reactivex.rxjava2:rxjava:2.0.2'

    implementation 'androidx.multidex:multidex:2.0.0'

    implementation 'com.crashlytics.sdk.android:crashlytics:2.9.4'
    implementation 'com.google.firebase:firebase-perf:16.0.0'

    implementation 'com.jakewharton.timber:timber:4.7.1'

    annotationProcessor 'com.jakewharton:butterknife-compiler:9.0.0-SNAPSHOT'
    annotationProcessor 'com.github.bumptech.glide:compiler:4.7.1'
}

apply plugin: 'com.google.gms.google-services'
4

16 回答 16

117

我用两个步骤解决了这个问题

1)文件->使缓存无效/重新启动... 在此处输入图像描述

2) 构建 -> 清理项目 在此处输入图像描述

于 2018-09-07T15:30:46.617 回答
34

使用AndroidX Test dependencies更新我的 build.gradle 文件后,我遇到了同样的错误。原来我忘了删除旧的 junit 依赖项。所以对我来说,修复只是删除以下依赖项:

dependencies {
    ...
    testImplementation 'junit:junit:4.12'
}
于 2019-02-11T13:59:14.217 回答
17

为我添加对build.gradle文件的Java 8 支持已解决的问题

android {
     ...

     //Add the following configuration in order to target Java 8.
     compileOptions {
         sourceCompatibility JavaVersion.VERSION_1_8
         targetCompatibility JavaVersion.VERSION_1_8
     }
}
于 2018-12-27T14:56:59.080 回答
14

似乎是Glide的问题。

我有同样的错误,我刚刚将 Glide 的依赖项更新到 4.8 并且没有构建错误。

科特林:

// Glide
def glide_version = "4.8.0"
implementation "com.github.bumptech.glide:glide:$glide_version"
kapt "com.github.bumptech.glide:compiler:$glide_version"

爪哇:

// Glide
def glide_version = "4.8.0"
implementation "com.github.bumptech.glide:glide:$glide_version"
annotationProcessor "com.github.bumptech.glide:compiler:$glide_version"

确保在您的 gradle.properties 中启用:

android.useAndroidX=true
android.enableJetifier=true

来源:https ://github.com/bumptech/glide/issues/3124

希望对你有帮助!

于 2018-10-31T16:40:11.927 回答
7

通过转到主目录并键入来修复它flutter clean

于 2019-09-27T00:31:09.360 回答
5

删除 testInstrumentationRunner 对我有用:

defaultConfig {
...
...
//        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
于 2019-03-17T12:53:14.157 回答
4

如果您正在使用Kotlin,如果不使用kapt您在项目中使用的任何注释处理器的版本,则会弹出问题。
正如@Vince 提到的情况一样Glide,这可能发生在Dagger2,Butterknife等情况下。
如果您同时使用两者Java并且Kotlin您需要保留两个依赖项,如下所示($glideVersion是 的预定义版本Glide):

implementation "com.github.bumptech.glide:glide:$glideVersion"

kapt "com.github.bumptech.glide:compiler:$glideVersion"

如果您在Kotlin唯一的项目上,则kapt依赖项应该单独工作。

编辑
您应该记住的另一件事是,如果您已经在使用Androidx. Androidx是一个很好的重构,但是在迁移时可能会导致一些依赖项崩溃。主流库已经更新到Androidx,但是,其中一些没有,甚至不会。
如果我在此编辑上方提供的解决方案没有解决问题,您可以查看您的依赖项并确保它们也可以使用Androidx

编辑 2
正如@Ted 提到的,我进行了研究,他是对的kapt,它也处理java文件。kapt独自一人就可以解决问题,无需同时保留kaptannotationProcessor依赖项。

于 2019-02-18T23:42:47.913 回答
3

尝试删除此行:

maven { url "https://oss.sonatype.org/content/repositories/snapshots" }

来自 build.gradle 文件的 buildscript / repositories 部分。

当我添加该行时,我收到了您描述的错误。当我删除它时,不再。该行应该只在 allprojects / repositories 部分。

于 2018-08-28T18:14:30.833 回答
2

修复在 4.2.0 中,使用更高版本的 google gms jar。

尝试改变:

类路径 'com.google.gms:google-services:4.0.1'

通过这个版本:

类路径 'com.google.gms:google-services:4.2.0'

希望这有效...

于 2018-12-05T19:03:31.497 回答
2

尝试在 gradle.properties 中设置 android.enableJetifier=false。然后在Android Studio中使缓存无效/重新启动...

于 2018-10-13T08:58:21.843 回答
1

如果您使用匕首或黄油刀,请确保将其更新到最新版本。或者,如果您的项目中使用了另一个注入库,您可以尝试检查它是否支持 androidx。

我发现了同样的错误,问题出在我的匕首和黄油刀上。已通过将其更新到最新版本来修复它。

于 2019-10-10T03:00:21.977 回答
1

安卓版本:4.10.2

我通过三个简单的步骤解决了这个问题:首先,我在 pubspec.yml 中添加了以下内容:(带有两个标识空格)

module:
  androidX: true 

在 gradle.properties 下面添加这两行,我在项目文件夹中的 android/gradle.properties 中有这个。

android.useAndroidX=true
android.enableJetifier=true

在此之后,我用终端写道:

flutter clean

也许您将不得不停止设备并再次运行。

于 2019-11-29T12:07:36.060 回答
0

我通过将firebase依赖项更新到最新来解决这个问题。

于 2018-12-19T02:34:49.513 回答
0

将黄油刀添加到我的项目后,我遇到了这个错误。

为了解决此错误,您应该使用 Java8。

我会推荐这个答案。

我是如何解决的:

1.在build.gradle中添加以下代码(模块:app)

android {
  ...
  // Configure only for each module that uses Java 8
  // language features (either in its source code or
  // through dependencies).
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}
  1. 清理项目并运行。
于 2020-09-06T06:19:03.100 回答
-1

转到文件并单击使缓存无效并重新启动。

重新启动后,您可以增加应用build.gradle文件中的最低 SDK 版本。

于 2019-06-22T15:43:10.380 回答
-1

我通过刷新 cahche 来修复它(而不是使其无效 - 这也清除了本地历史记录):

  1. 在 gradle.properties 文件中,注释 org.gradle.caching=true 行。
  2. 清洁,重建。
  3. 在 gradle.properties 文件中,取消注释 org.gradle.caching=true 行。
  4. 清洁,重建。

而已!

于 2019-03-05T10:54:46.817 回答