【重学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,然后再进行同步即可。

相关推荐
難釋懷1 小时前
Android开发-在应用之间共享数据
android·jvm·oracle
呆呆洁ᵔ·͈༝·͈ᵔ1 小时前
配置集群-日志聚集操作
java·ide·eclipse
未来之窗软件服务2 小时前
人体肢体渲染-一步几个脚印从头设计数字生命——仙盟创梦IDE
开发语言·ide·人工智能·python·pygame·仙盟创梦ide
Auspemak-Derafru3 小时前
pycharm中qthread中的run函数debug不上的问题
ide·python·pycharm
MoonBit月兔3 小时前
插件双更新:LeetCode 刷题支持正式上线,JetBrains IDE 插件持续升级!
ide·算法·leetcode
難釋懷3 小时前
Android开发-数据库SQLite
android·数据库·sqlite
androidwork3 小时前
Arrow库:函数式编程在Kotlin Android中的深度实践
android·java·kotlin
androidwork5 小时前
用 Kotlin 脚本(KTS)重塑 Android 工程效能:2000 字终极实践指南
android·开发语言·kotlin
阿海打酱油5 小时前
idea经常卡顿解决办法
java·ide·intellij-idea
dancing9996 小时前
Android Studio中Gradle 7.0上下项目配置及镜像修改
android·ide·android studio