迁移到AndroidX时无法解析变量'$ {animal.sniffer.version}'


138

我正在使用Android Studio 3.2 Beta5将我的项目迁移到AndroidX。重建应用程序时,出现以下错误:

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

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

全面清理和重建无济于事!有人知道怎么修这个东西吗?


gradle.properties

android.enableJetifier=true
android.useAndroidX=true

build.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
}

app / 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'

这里有什么进展吗?
乍得宾厄姆

@ChadBingham不,它仍然是相同的错误
nhoxbypass

终于找到了解决方案,请在这里找到答案:stackoverflow.com/a/52308912/10224384
Nabster


5
@Nabster嘿,嘿我的问题是一个月前发布的,而这个问题是20小时前发布的!
nhoxbypass 18/09/13

Answers:


108

我通过两个步骤解决此问题

1)文件->使缓存无效/重新启动... 在此处输入图片说明

2)建立->清理项目 在此处输入图片说明


4
不知怎的,工作了几重建,但林再次获得同样的错误,现在..
铝Cabone

2
对我来说,清洁项目已经足够了
f4bo '19

1
我还需要Clean Project。感谢@ f4bo的提示。
约翰·本特利

1
有用。我只清理项目。该答案应设置为接受答案。@nhoxbypass
azwar_akbar

30

使用AndroidX Test依赖项更新build.gradle文件后,出现了相同的错误。原来我忘了删除旧的junit依赖项。因此,对我来说,解决方法是简单地删除以下依赖项:

dependencies {
    ...
    testImplementation 'junit:junit:4.12'
}

这是我的问题。
Brill Pappin

是的,修复它。我遇到了Udacity Kotlin课程猜谜游戏的问题
Aswin Mohan,

你能解释为什么会这样吗?
里兹瓦恩

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

找不到瘦身。即时通讯正在开发一个电视应用程序,并且在有关leanback支持
v17的

1
使缓存无效并重新启动android studio
Dhaval Patel

3
不,不是,我认为您必须使用androidx软件包。
ralphgabb

我猜想添加Java 8支持会强制Android Studio使其缓存无效,从而获得与副作用相同的结果……嗯,好吧……
varun

14

似乎是格莱德的问题。

我遇到了相同的错误,我只是将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"

Java的:

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

希望这个能对您有所帮助!


9
此错误也出现在我无需滑翔作为一个依赖
费边Streitel


4

删除testInstrumentationRunner对我有用:

defaultConfig {
...
...
//        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

完美的解决方案!为我修复了此问题
beastlyCoder

4

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

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

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

如果您Kotlin只在一个项目上,则kapt依赖项应该单独起作用。

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

编辑2
正如@Ted所提到的,我进行了调查,他的权利kapt也可以处理java文件。kapt单独就可以了,没必要保留两个kaptannotationProcessor依赖。


1
kapt还可以处理java文件,因此无需同时使用它们,只需kapt即可。
Ted

3

尝试删除此行:

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

从build.gradle文件的buildscript / repositories部分中。

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


1
我相信Jake Wharton已经在9.0.0快照中添加了对AndroidX的支持。参见:github.com/JakeWharton/butterknife/issues/1280
nhoxbypass

2

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


8
不建议这样做,因为可能存在尚未升级到AndroidX的第三方库!如文档所述:“ android.enableJetifier:设置为true时,Android插件通过重写二进制文件来自动迁移现有的第三方库以使用AndroidX。如果未指定,默认情况下该标志为false。” developer.android.com/jetpack/androidx
的Gabor霍瓦特

1

该修复程序在4.2.0中,请使用更高版本的Google gms jar。

尝试更改:

classpath'com.google.gms:google-services:4.0.1'

通过这个版本:

classpath'com.google.gms:google-services:4.2.0'

希望这可以...


1
这与更新依赖关系一起为我工作。
glisu

1

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

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


1

Android版本:4.10.2

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

module:
  androidX: true 

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

android.useAndroidX=true
android.enableJetifier=true

之后,我在终端上写道:

flutter clean

也许您必须停止设备并再次运行。



-1

我通过刷新cahche来解决此问题(而不是使它失效-这也清除了本地历史记录):

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

而已!


-1

转到文件,然后单击“使缓存无效”并重新启动。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.