Android设备在调试和签名APK中使用来自不同密度集的资源

Ama*_*osh 9 android dpi pixel-density screen-density

我注意到我的应用程序在同一设备上显示略有不同的布局,具体取决于我是运行调试APK还是签名版本APK.经过多次刮擦,我已将问题隔离到设备密度特定的资源值.当我在调试模式下运行应用程序时,设备使用v alues-xxhdpi/dimens.xml中的维度,当我运行签名的APK时,它使用values-xxxhdpi/dimens.xml中的维度.有问题的设备是运行Android 7.0的三星Galaxy S7

为了证实这一点,我创建了一个新的空项目,其中只有一个hello world字符串.我在values/strings.xml,values-xxhdpi/strings.xmlvalues-xxxhdpi/strings.xml中为字符串定义了不同的值.结果如下.

  • Debug apk显示xxhdpi string.按预期工作.
  • 从android studio运行发布apk(通过在gradle文件中指定签名配置)显示xxhdpi string.按预期工作.
  • 通过选择Build |生成签名的apk 生成签名APK并运行它.这次应用显示xxxhdpi字符串.为什么?!

为什么会这样?为什么android在调试模式下选择xxhdpi资源,在签名的APK中选择xxxhdpi资源?