问题描述
最近我从 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)。我将搜索参考资料,然后更新此答案。