Android Studio 4.2 开始在发布版本中重命名 APK 内的资源
Android Studio 4.2 started to rename resources inside APK in release build
最近我从 4.1.3 更新到 Android Studio 4.2.1,当我在发布模式下构建时,发现 res/ 文件夹下的 APK 中的所有内容都已重命名(我可以称之为“混淆”吗?)。
在调试中它与旧版本中的相同。我使用 gradlew assembleRelease
.
的控制台构建
我没有找到更新日志或官方说明为什么会发生这种情况。尝试通过在 app/build.gradle 中添加 shrinkResources false
并使用 res/raw/keep.xml 来禁用它。即使 minifyEnabled false
资源已重命名。
当我安装 apk 到设备时,我的所有图标和图像似乎都像以前一样显示,但我的应用程序分发 Web 工具不能再显示应用程序图标。
有人遇到同样的情况并且知道如何在发布版本中将其关闭吗?
我相信这是设计使然。
如果您更新了 Android Gradle 插件以及 IDE 本身,较新的版本会为每个模块创建唯一的资源命名空间。
假设您在某些布局中使用了 id R.id.some_id
- 但在同一布局中您导入了某个库的另一个布局,它使用相同的 id R.id.some_id
,你将不再拥有
冲突,因为外部库的 id 将被重命名为该库唯一的名称(您的布局和外部布局实际上有 2 个不同的 id)。我会搜索参考资料然后更新这个答案。
该行为从 Android Gradle 插件 4.2 开始默认启用,可以通过将 android.enableResourceOptimizations=false
添加到 gradle.properties
文件来禁用它。
最近我从 4.1.3 更新到 Android Studio 4.2.1,当我在发布模式下构建时,发现 res/ 文件夹下的 APK 中的所有内容都已重命名(我可以称之为“混淆”吗?)。
在调试中它与旧版本中的相同。我使用 gradlew assembleRelease
.
我没有找到更新日志或官方说明为什么会发生这种情况。尝试通过在 app/build.gradle 中添加 shrinkResources false
并使用 res/raw/keep.xml 来禁用它。即使 minifyEnabled false
资源已重命名。
当我安装 apk 到设备时,我的所有图标和图像似乎都像以前一样显示,但我的应用程序分发 Web 工具不能再显示应用程序图标。
有人遇到同样的情况并且知道如何在发布版本中将其关闭吗?
我相信这是设计使然。
如果您更新了 Android Gradle 插件以及 IDE 本身,较新的版本会为每个模块创建唯一的资源命名空间。
假设您在某些布局中使用了 id R.id.some_id
- 但在同一布局中您导入了某个库的另一个布局,它使用相同的 id R.id.some_id
,你将不再拥有
冲突,因为外部库的 id 将被重命名为该库唯一的名称(您的布局和外部布局实际上有 2 个不同的 id)。我会搜索参考资料然后更新这个答案。
该行为从 Android Gradle 插件 4.2 开始默认启用,可以通过将 android.enableResourceOptimizations=false
添加到 gradle.properties
文件来禁用它。