【重学Android】03.高版本 Android Studio 不能使用引用库资源ID的问题

问题背景

由于直接下载的最新版本Android Studio,然后直接创建的新项目,因此默认的工程配置相比以前的老版本有了不少的变化,Gradle的新版本使用,导致一些配置项也发生了变化,加上谷歌针对gradle.properties文件的一些配置也有了变化。

而这次我因为使用了一些第三方库,然后有些资源想偷懒,直接引用第三方库中的,结果发现代码自动提示怎么都弹不出来,一开始还以为工程出问题了,但是几番折腾后发现还是不行,这才意识到可能是哪个配置出了问题。并且一直提示如下信息:

bash 复制代码
Attribute value must be constant

解决

经过一番搜索之后,发现根本原因是因为新版本 Android Studio 将 R 类中的资源设置成了非 final 修饰的变量,这就是导致 switch case 中无法作为判断条件的原因。

然后在gradle.properties文件中会看到这样一段描述和一个配置项。

bash 复制代码
# Enables namespacing of each library's R class so that its R class includes only the
# resources declared in the library itself and none from the library's dependencies,
# thereby reducing the size of the R class for that library
android.nonTransitiveRClass=true
android.nonFinalResIds=true

就是这两个配置项导致AS不会将第三方库中的资源ID编译为Final类型的。我们只需要将值改为false,然后再进行同步即可。

相关推荐
2501_915918412 小时前
iOS 26 App 性能测试|性能评测|iOS 26 性能对比:实战策略
android·macos·ios·小程序·uni-app·cocoa·iphone
咋吃都不胖lyh6 小时前
SQL-多对多关系
android·mysql·数据分析
cyy2986 小时前
android 屏幕适配
android
Digitally8 小时前
如何通过 5 种有效方法同步 Android 和 Mac
android·macos
小蕾Java8 小时前
PyCharm 软件使用各种问题 ,解决教程
ide·python·pycharm
行墨9 小时前
Jetpack Compose 深入浅出(二)——基础组件Text
android
雨白11 小时前
深入理解协程的运作机制 —— 调度、挂起与性能
android·kotlin
沐怡旸11 小时前
【Android】Android系统体系结构
android
namehu12 小时前
React Native 应用性能分析与优化不完全指南
android·react native·ios
xqlily12 小时前
Kotlin:现代编程语言的革新者
android·开发语言·kotlin