迁移到 AndroidX 时解析变量“ ${ animal.snifer.version }”失败

我正在使用 Android Studio 3.2 Beta 5来迁移我的项目到 安卓。当我重建我的应用程序时,我得到了这些错误:

错误: [标签]未能解析变量“ ${ animal.snifer.version }”

错误: [标签]未能解析变量“ ${ junit.version }”

全面清洁和重建没有工作! 有人知道如何解决这个问题吗?


Gradle 房地产公司

android.enableJetifier=true
android.useAndroidX=true

建造,分级

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'
78544 次浏览

试着删除这一行:

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

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

当我添加这一行时,我得到了您描述的错误。当我把它取出来的时候,不再是了。这一行应该只出现在 allproject/Repositories 部分。

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

1)文件-> 无效缓存/重新启动..。 enter image description here

2)建造-> 清洁工程 enter image description here

尝试在 gradle.properties 中设置 Android.ableleJetifier = false,然后在 Android Studio 中使缓存/重启失效

问题似乎出在 滑行身上。

我也有同样的错误,我只是将 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

希望这个对你有帮助!

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

试着改变:

Classspath‘ com.google.gms: google-services: 4.0.1’类路径‘ com.google.gms: google-services: 4.0.1’

这个版本:

Classspath‘ com.google.gms: google-services: 4.2.0’类路径‘ com.google.gms: google-services: 4.2.0’

希望这有用。

我修正了这个问题,将 Firebase 的依赖关系更新为最新的。

为我添加 支持 Java8建造,分级文件修复问题

android {
...


//Add the following configuration in order to target Java 8.
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}

在使用 AndroidX 测试依赖项更新 build.gradle 文件之后,我得到了同样的错误。结果我忘了删除旧的 junit 依赖项。所以对我来说,解决方法就是移除以下依赖关系:

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

如果您正在使用 Kotlin,如果您在项目中使用的任何注释处理器没有使用 kapt版本,那么问题就会出现。
正如@Vince 提到的 Glide的情况,这种情况可能发生在 Dagger2Butterknife等。
如果同时使用 JavaKotlin,则需要保持两个依赖项,如下所示(如果 $glideVersionGlide的预定义版本) :

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. 在 gradle.properties 文件中,注释 org.gradle.cching = true 行。
  2. 清洁,重建。
  3. 在 gradle.properties 文件中,取消注释该行 缓存 = 真。
  4. 清洁,重建。

够了!

删除 testInstrumentationRunner 对我来说很有用:

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

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

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

通过进入主目录并键入 flutter clean修复了这个问题

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

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

Android 版本: 4.10.2

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

module:
androidX: true

将这两行添加到 gradle.properties 中,我将它放在 android/gradle.properties 中的项目文件夹中。

android.useAndroidX=true
android.enableJetifier=true

之后我在终端上写道:

flutter clean

也许你得停下设备再跑一次。

在向项目中添加了巴特刀之后,我遇到了这个错误。

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

我建议回答 这个

我是如何解决的:

1. 在 build.gradle (module: 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. 干净的项目和运行。