Android Studio 4.2 开始在发布版本中重命名 APK 内的资源

问题描述

最近我从 4.1.3 更新到 Android Studio 4.2.1,在发布模式下构建时,发现 APK 中 res/ 文件夹下的所有内容都已重命名(我可以称之为“混淆”吗?)。

在调试中它与旧版本相同。我使用带有 gradlew assembleRelease 的控制台构建。

我没有发现为什么会发生这种情况的变更日志或官方消息。尝试通过在 app/build.gradle 中添加 shrinkResources false 并使用 res/raw/keep.xml 来禁用它。即使 minifyEnabled false 资源被重命名

当我将 apk 安装到设备上时,我的所有图标和图像似乎都像以前一样显示,但我的应用分发 Web 工具无法再显示应用图标。

有没有人有同样的经历并且知道如何在发布版本中关闭它?

解决方法

该行为从 Android Gradle Plugin 4.2 开始默认启用,可以通过将 android.enableResourceOptimizations=false 添加到 gradle.properties 文件来禁用。

请参阅 https://github.com/godotengine/godot/pull/50665 以供参考。

,

我相信这是设计使然。

如果您更新了 Android Gradle 插件以及 IDE 本身,新版本会为每个模块创建唯一的资源命名空间。

假设您在某个布局中使用了 id R.id.some_id - 但在同一个布局中,您导入了某个库的另一个布局,使用相同的 id R.id.some_id,您将不再有 冲突,因为来自外部库的 id 将被重命名为该库唯一的名称(您的布局和外部布局实际上将有 2 个不同的 id)。我将搜索参考资料,然后更新此答案。