API 'BaseVariant.getApplicationIdTextResource'已经过时,已被'VariantProperties.applicationId'取代。

121

在构建 Gradle 时,我遇到了这个消息:

API 'BaseVariant.getApplicationIdTextResource' 已过时,已被 'VariantProperties.applicationId' 替换

我正在使用 Android Studio 4.1 Canary 10gradle:4.1.0-alpha10


发生了对我来说,但是对于“RecyclerView” - The MJ
13个回答

134

看起来 Navigation Safe Args 插件 使用了 getApplicationIdTextResource(),因此很可能是由您使用该插件造成的错误信息。

您需要给 现有问题 打星,以要求 Safe Args 插件使用新替代 API。


10
更新:根据此评论,已在Android Studio 4.2 Beta 2中修复。 - Alther
40
如果你正在使用北极狐,那么你仍然注定要失败 :| - Luke
4
2.4.0-alpha02修复了这个问题,也适用于最新的Arctic Fox版本(alpha06)。 - norbDEV
1
谷歌花了一年时间来修复这些问题。 - Rafael Lima
我刚刚升级到最新版本,没有任何警告或错误出现。 - Abhinav Saxena
显示剩余2条评论

37

根据这里的描述,将androidx.navigation:navigation-*:2.4.0-alpha02更改后,在Arctic Fox下构建我的应用程序时,可以避免出现getApplicationIdTestResource警告。

来自应用程序build.gradle文件:

def nav_version = "2.4.0-alpha02"
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version"

在 build.gradle 文件中:

def nav_version = "2.4.0-alpha02"
implementation "androidx.navigation:navigation-fragment:$nav_version"
implementation "androidx.navigation:navigation-ui:$nav_version"
androidTestImplementation "androidx.navigation:navigation-testing:$nav_version"

这是最好的答案,因为它是最新的。应该更靠近顶部。正确的答案应该是这个和当前正确答案的结合体。 - Daniel C Jacobs

9

最近几天我遇到了同样的问题。然后我打开了 build.gradle 文件。

更新前我的依赖关系

检查依赖关系

我将谷歌服务的依赖更新为4.3.4。

dependencies {
    classpath 'com.android.tools.build:gradle:4.1.1'
    classpath 'com.google.gms:google-services:4.3.4'


    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
}

更新后

现在它正常工作。


1
FYI:4.3.4版本存在其他问题,例如https://github.com/google/play-services-plugins/issues/163。 - HBB20
我升级到了最新版本的google-services - nyxee

6

在我的安卓工作室Cannery 13中,我遇到了关于NavigationComponent的错误。

因此,我将nav_version更改为以下版本,问题得以解决。

 ext {
    ***************    nav_version = "2.4.0-alpha10" ************
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:7.1.0-alpha13'
        classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version"

应用程序模块的build.gradle中:

   implementation "androidx.navigation:navigation-fragment:$nav_version"
    implementation "androidx.navigation:navigation-ui:$nav_version"
    androidTestImplementation "androidx.navigation:navigation-testing:$nav_version"

1
非常感谢,我简直不敢相信构建又正常工作了!尝试了很多解决方案,但都没有用。我只是想将我的Android项目从Java 8更新到Java 11,但就是无法构建...谢谢! - Dascalescu Vladut
这对我也起作用了。2.3.1 -> 2.4.2 - sud007

5

当4.2.0稳定版发布时,问题将得到解决。

来自现有问题:

Android Gradle Plugin在4.1.0版本中弃用了BaseVariant类中的getApplicationIdTextResource() API(请参见错误)。替代API(onVariantProperties)对于功能库无法正常工作,因此为避免不良后果,使用了反射。这只是一个短期解决方案,当AGP 4.2.0稳定时,我们应该立即更新到该版本并立即删除反射。

因此,如果您需要Safe Args并且不需要Gradle的最新功能,请将Android Gradle Plugin版本中的Gradle版本保持在3.6.4。一旦稳定的4.2.0版本发布,再更新到最新版本。


已更新,修复了4.2.0警告。 - sud007

3

我在将kotlin版本更新到1.7之后,NavigationComponent在Android Studio中出现了这个错误。

所以我将nav_version更改为"2.4.0-beta02",问题得到了解决。

// Navigation Component
implementation "androidx.navigation:navigation-fragment-ktx:2.4.0-beta02"
implementation "androidx.navigation:navigation-ui-ktx:2.4.0-beta02"

2
对我来说,这是因为IDE Kotlin插件和project_name/build.gradle文件之间的不同Kotlin版本。 “用于使用Gradle构建的Kotlin版本(1.3.72)与打包到IDE插件中的版本(1.4.31)不同。”
一旦我使它们相同,编译就可以再次开始了。

2

在我的情况下,我使用的是2.3.1版本的navigation-fragment。 我刚刚将其更新为2.4.2,并且它对我有所帮助。


1
我遇到了同样的问题,它是这样解决的: 所以我进入-> build.gradle文件
我的升级之前的依赖项 检查依赖项
我将Google服务依赖项更新到最新版本
dependencies {
 classpath 'com.android.tools.build:gradle:(latest version)'
 classpath 'com.google.gms:google-services:(latest version)'

}

1

所以,我所做的是升级了所有Gradle插件和依赖版本,然后运行,这对我有用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接