什么可能导致Android的DisplayMetrics.densityDpi在Release和Debug版本之间有所不同?

时间:2016-03-12 23:52:43

标签: java android eclipse samsung-mobile

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

我的问题与DisplayMetrics.densityDpi有关,它在Release和Debug版本(从Eclipse中)返回不同的值。

Debug下通过Eclipse,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" />

我用来检查的代码是:

    DisplayMetrics metrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(metrics);

    if (metrics.densityDpi == 420) {
        Log.d(LOGTAG, "420 DPI");
    } else if (metrics.densityDpi == 560) {
        Log.d(LOGTAG, "560 DPI");
    }

使用aapt dump badging进行比较时,发布和调试的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 drawables被引用。

1 个答案:

答案 0 :(得分:0)

这是由Android中的错误造成的,这些错误似乎与Note 5提供的库存操作系统映像有关。我会将此问题报告给Google错误跟踪器。

虽然这个问题很不幸,但可以通过使用带有android:debuggable =“true”的签名APK进行测试来解决这个问题。通过这种方式,您可以看到设备的应用程序的“正常”DPI,而不是它为调试版本分配的错误。

不幸的是,这个问题会影响我测试的所有类型的调试版本:Android Studio,Eclipse或Ant。他们都没有能力为Note 5上的问题提供解决方法。