我有几个Android项目,它们共享相同的助手函数(在Kotlin中)和相同的资源,如button_保存,吐司_press_back_again_to_exit.将所有这些函数和资源提取到一个公共库中是很自然的,所有应用程序项目只需要包含这个库,而不是再次定义所有这些东西。
一切都很好,直到昨天我开始了一个新项目,我仍然可以在布局xml中引用那些公共资源,比如,andoird:text=“R.string.button_保存”,但我再也不能在Kotlin中通过R.string.button_save直接引用它们,我必须使用“com.example.app.common.R.string.button_save”。
看起来Android Studio无法将库/模块资源合并到主应用的R.java中。我认为这可能是因为最新的Gradle版本(8.0.2 +com.android.tools.build:gradle:7.4.2),我试图将Gradle降级到旧项目使用的相同版本(7.5.1 + com.android.tools.build:gradle:7.2.2),但它仍然不起作用。
我在谷歌上搜索了几个小时,但大多数都在谈论如何解决资源合并过程中的冲突,但我面临的问题是他们根本没有合并。
我甚至尝试从头开始创建一个应用程序项目,在其中不定义任何内容以确保没有冲突,然后创建一个新的模块库,只定义一个简单的字符串资源,以32位随机字符串作为其名称,也确保没有冲突。但是,在应用程序方面,我不能通过www.example.com使用这个字符串资源R.string.xxx,但必须通过com.example.myapplication.mylibrary.R.string.xxx使用它。
为什么?任何线索都将不胜感激!
1条答案
按热度按时间9nvpjoqh1#
不要紧,找到了根本原因。
在最新的Android Studio中,自动生成的 gradle.properties 文件包含以下内容: