Java 什么会导致Android';s DisplayMetrics.densityDpi在发布版本和调试版本之间是否存在差异?

Java 什么会导致Android';s DisplayMetrics.densityDpi在发布版本和调试版本之间是否存在差异?,java,android,eclipse,samsung-mobile,Java,Android,Eclipse,Samsung Mobile,我正在调试运行5.1.1的三星Galaxy Note 5 Android设备上的一个问题 我的问题与DisplayMetrics.densityDpi有关,它在发行版和调试版(来自Eclipse)下返回不同的值 在通过Eclipse进行的Debug下,DisplayMetrics.densityDpi返回560,而发布版本返回420 我完全被这件事难住了,我从来没有见过一个设备能做到这一点。我怀疑我的AndroidManifest.xml中存在问题 <uses-sdk androi

我正在调试运行5.1.1的三星Galaxy Note 5 Android设备上的一个问题

我的问题与DisplayMetrics.densityDpi有关,它在发行版和调试版(来自Eclipse)下返回不同的值

在通过Eclipse进行的
Debug
下,
DisplayMetrics.densityDpi
返回560,而发布版本返回420

我完全被这件事难住了,我从来没有见过一个设备能做到这一点。我怀疑我的
AndroidManifest.xml
中存在问题

<uses-sdk
    android:minSdkVersion="4"
    android:targetSdkVersion="22" />

<supports-screens
    android:anyDensity="true"
    android:largeScreens="true"
    android:normalScreens="true"
    android:smallScreens="true"
    android:xlargeScreens="true" />
当使用
aapt dump-bading
进行比较时,APK(发布版和调试版)是相同的,但输出很奇怪

        package: name='com.corytrese.games.startraders' versionCode='360' versionName='5.9.35'
      sdkVersion:'4'
      targetSdkVersion:'22'
      application-label:'Star Traders RPG'
      application-icon-120:'res/drawable-ldpi/icon.png'
      application-icon-160:'res/drawable-mdpi/icon.png'
      application-icon-213:'res/drawable-hdpi/icon.png'
      application-icon-240:'res/drawable-hdpi/icon.png'
      application-icon-320:'res/drawable-xhdpi/icon.png'
      application-icon-480:'res/drawable-xxhdpi/icon.png'
      application-icon-640:'res/drawable-xxhdpi/icon.png'
      application-icon-65535:'res/drawable-xxhdpi/icon.png'
      application: label='Star Traders RPG' icon='res/drawable-mdpi/icon.png'
      application-debuggable
      launchable-activity: name='com.corytrese.games.startraders.menu.MainMenu'  label='Star Traders RPG' icon=''
      uses-feature:'android.hardware.touchscreen'
      uses-implied-feature:'android.hardware.touchscreen','assumed you require a touch screen unless explicitly made optional'

      main
      other-activities
      supports-screens: 'small' 'normal' 'large' 'xlarge'
      supports-any-density: 'true'
      locales: '--_--' 'ca' 'da' 'fa' 'ja' 'nb' 'de' 'af' 'bg' 'th' 'fi' 'hi' 'vi' 'sk' 'uk' 'el' 'nl' 'pl' 'sl' 'tl' 'am' 'in
      ' 'ko' 'ro' 'ar' 'fr' 'hr' 'sr' 'tr' 'cs' 'es' 'it' 'lt' 'pt' 'hu' 'ru' 'zu' 'lv' 'sv' 'iw' 'sw' 'fr_CA' 'lo_LA' 'en_GB'
       'bn_BD' 'et_EE' 'ka_GE' 'ky_KG' 'km_KH' 'zh_HK' 'si_LK' 'mk_MK' 'ur_PK' 'hy_AM' 'my_MM' 'zh_CN' 'ta_IN' 'te_IN' 'ml_IN'
       'en_IN' 'kn_IN' 'mr_IN' 'mn_MN' 'ne_NP' 'gl_ES' 'eu_ES' 'is_IS' 'es_US' 'pt_PT' 'zh_TW' 'ms_MY' 'kk_KZ' 'uz_UZ'
      densities: '120' '160' '213' '240' '320' '480' '640' '65535' 'gl_ES' 'eu_ES' 'is_IS' 'es_US' 'pt_PT' 'zh_TW' 'ms_MY' 'kk_KZ' 'uz_UZ'
密度:'120''160''213''240''320''480''640''65535'


我没有看到560或420列表,也没有看到我的xxxhdpi绘图表被引用。

这是由安卓系统中的错误造成的,而安卓系统中的错误似乎与附注5中提供的股票操作系统映像有关。我将向谷歌bug追踪器报告这个问题

虽然这个问题很不幸,但可以通过使用android:debuggable=“true”测试签名的APK来解决这个问题。这样,您就可以看到应用程序的设备“正常”DPI,而不是它分配给调试构建的错误DPI


不幸的是,这个问题影响了我测试的所有类型的调试构建:AndroidStudio、Eclipse或Ant。他们中没有一个能够为注释5中的问题找到解决办法。

好吧,现在,这是一个疯狂的想法。你可以在调试版本和发布版本上运行
aapt dump-bading
,看看你的APK中有什么不同之处可能会产生影响。创建一个新的应用程序并运行相同的测试。此外,仅三星的bug很常见且难以理解,因此如果只是这样,请不要感到惊讶。我将
aapt-dump-bading
并更新我的问题,以及尝试用我可以连接的APK复制。谢谢
        package: name='com.corytrese.games.startraders' versionCode='360' versionName='5.9.35'
      sdkVersion:'4'
      targetSdkVersion:'22'
      application-label:'Star Traders RPG'
      application-icon-120:'res/drawable-ldpi/icon.png'
      application-icon-160:'res/drawable-mdpi/icon.png'
      application-icon-213:'res/drawable-hdpi/icon.png'
      application-icon-240:'res/drawable-hdpi/icon.png'
      application-icon-320:'res/drawable-xhdpi/icon.png'
      application-icon-480:'res/drawable-xxhdpi/icon.png'
      application-icon-640:'res/drawable-xxhdpi/icon.png'
      application-icon-65535:'res/drawable-xxhdpi/icon.png'
      application: label='Star Traders RPG' icon='res/drawable-mdpi/icon.png'
      application-debuggable
      launchable-activity: name='com.corytrese.games.startraders.menu.MainMenu'  label='Star Traders RPG' icon=''
      uses-feature:'android.hardware.touchscreen'
      uses-implied-feature:'android.hardware.touchscreen','assumed you require a touch screen unless explicitly made optional'

      main
      other-activities
      supports-screens: 'small' 'normal' 'large' 'xlarge'
      supports-any-density: 'true'
      locales: '--_--' 'ca' 'da' 'fa' 'ja' 'nb' 'de' 'af' 'bg' 'th' 'fi' 'hi' 'vi' 'sk' 'uk' 'el' 'nl' 'pl' 'sl' 'tl' 'am' 'in
      ' 'ko' 'ro' 'ar' 'fr' 'hr' 'sr' 'tr' 'cs' 'es' 'it' 'lt' 'pt' 'hu' 'ru' 'zu' 'lv' 'sv' 'iw' 'sw' 'fr_CA' 'lo_LA' 'en_GB'
       'bn_BD' 'et_EE' 'ka_GE' 'ky_KG' 'km_KH' 'zh_HK' 'si_LK' 'mk_MK' 'ur_PK' 'hy_AM' 'my_MM' 'zh_CN' 'ta_IN' 'te_IN' 'ml_IN'
       'en_IN' 'kn_IN' 'mr_IN' 'mn_MN' 'ne_NP' 'gl_ES' 'eu_ES' 'is_IS' 'es_US' 'pt_PT' 'zh_TW' 'ms_MY' 'kk_KZ' 'uz_UZ'
      densities: '120' '160' '213' '240' '320' '480' '640' '65535' 'gl_ES' 'eu_ES' 'is_IS' 'es_US' 'pt_PT' 'zh_TW' 'ms_MY' 'kk_KZ' 'uz_UZ'