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

Android设备在调试和签名APK中使用不同密度集的资源,android,dpi,screen-density,pixel-density,Android,Dpi,Screen Density,Pixel Density,我注意到,我的应用程序在同一台设备上显示的布局略有不同,这取决于我运行的是调试APK还是已签名的发布APK。经过多次尝试,我已经将问题隔离到设备密度特定的资源值。当我在调试模式下运行应用程序时,设备使用值xxhdpi/dimens.xml中的维度,当我运行已签名的APK时,它使用值xxxhdpi/dimens.xml中的维度。该设备是运行安卓7.0的三星Galaxy S7 为了确认这一点,我创建了一个新的空项目,其中只有一个helloworld字符串。我在values/strings.xml、v

我注意到,我的应用程序在同一台设备上显示的布局略有不同,这取决于我运行的是调试APK还是已签名的发布APK。经过多次尝试,我已经将问题隔离到设备密度特定的资源值。当我在调试模式下运行应用程序时,设备使用值xxhdpi/dimens.xml中的维度,当我运行已签名的APK时,它使用值xxxhdpi/dimens.xml中的维度。该设备是运行安卓7.0的三星Galaxy S7

为了确认这一点,我创建了一个新的空项目,其中只有一个helloworld字符串。我在values/strings.xml、values xxhdpi/strings.xml和values xxxhdpi/strings.xml中为字符串定义了不同的值。以下是结果

  • 调试apk显示xxhdpi字符串。一切正常
  • 从android studio运行版本apk(通过在gradle文件中指定签名配置)显示xxhdpi字符串。一切正常
  • 通过选择Build生成签名的apk |生成签名的apk并运行它。这次应用程序显示xxxhdpi字符串。为什么

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

看起来我应该在高度特定的维度文件(如values-h800/dimens.xml等)中定义我的自定义维度。但我的问题仍然有效。你能发布Analyze APK的输出吗,它出现在Build | Analyze APK中,然后选择APK,在获得不同输出的APK上重复相同的步骤。我检查了一个示例应用程序,在我的手机上运行良好,每次使用每种方法都得到相同的结果。你有不同的口味吗???@AssemMahrous没有。我对三星Galaxy S8也有同样的问题