2017-11-27 15 views
0

최근 내 휴대 전화 및 phablets 만 지원하는 Play 스토어에 내 앱을 업로드했습니다. 그래서 나는 https://developer.android.com/guide/practices/screens-distribution.html태블릿이 아닌 휴대 전화 및 phablets을 지원합니다.

삼성 S8 설치하려고 할 때 이상한 일이 킥을 시작

<uses-permission android:name="android.permission.INTERNET" /> 
 
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> 
 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
 
    <uses-permission android:name="android.permission.VIBRATE" /> 
 
    <uses-permission android:name="android.permission.WAKE_LOCK" /> 
 
    <uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
 
    <uses-permission android:name="android.permission.CALL_PHONE" /> 
 
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> 
 
    <uses-permission android:name="com.xxx.yyy.permission.C2D_MESSAGE" /> 
 

 
    <compatible-screens> 
 
     <screen android:screenSize="small" android:screenDensity="ldpi" /> 
 
     <screen android:screenSize="small" android:screenDensity="mdpi" /> 
 
     <screen android:screenSize="small" android:screenDensity="hdpi" /> 
 
     <screen android:screenSize="small" android:screenDensity="xhdpi" /> 
 
     <screen android:screenSize="small" android:screenDensity="xxhdpi" /> 
 
     <screen android:screenSize="small" android:screenDensity="xxxhdpi" /> 
 
     <screen android:screenSize="small" android:screenDensity="420" /> 
 
     <screen android:screenSize="small" android:screenDensity="480" /> 
 
     <screen android:screenSize="small" android:screenDensity="560" /> 
 
     <screen android:screenSize="small" android:screenDensity="640" /> 
 
     <!-- all normal size screens --> 
 
     <screen android:screenSize="normal" android:screenDensity="ldpi" /> 
 
     <screen android:screenSize="normal" android:screenDensity="mdpi" /> 
 
     <screen android:screenSize="normal" android:screenDensity="hdpi" /> 
 
     <screen android:screenSize="normal" android:screenDensity="xhdpi" /> 
 
     <screen android:screenSize="normal" android:screenDensity="xxhdpi" /> 
 
     <screen android:screenSize="normal" android:screenDensity="xxxhdpi" /> 
 
     <screen android:screenSize="normal" android:screenDensity="420" /> 
 
     <screen android:screenSize="normal" android:screenDensity="480" /> 
 
     <screen android:screenSize="normal" android:screenDensity="560" /> 
 
     <screen android:screenSize="normal" android:screenDensity="640" /> 
 
    </compatible-screens> 
 

 
    <application android:name=".AppApplication" 
 
android:allowBackup="false" 
 
android:icon="@mipmap/ic_launcher" 
 
android:label="@string/app_name" 
 
android:roundIcon="@mipmap/ic_launcher_round" 
 
android:supportsRtl="true" 
 
android:theme="@style/AppTheme" 
 
android:largeHeap="true"/>

에 따라 만 지원 폰과 패 블릿에 코드 아래에 삽입합니다. 이 세 가지 가능성이 있습니다. 화웨이 메이트 9와 비슷한 경우도 있습니다.

  1. 앱을 찾아서 설치할 수 있습니다.
  2. 앱을 찾을 수는 있지만 '이 기기는이 버전과 호환되지 않습니다.'오류가 표시됩니다.
  3. 앱을 전혀 찾을 수 없습니다.

내 질문은 어떻게 해결할 수 있습니까? Google Play 콘솔에는 위에서 언급 한 태블릿을 제외한 모든 기기가 지원됩니다. 아니면 최근 휴대폰이 구현 한 WQHD 관련 내용입니까?

EDITED : 이 문제는 전화기가 WQHD를 지원할 수 있도록 최신 펌웨어로 업그레이드 한 사람에게만 발생합니다.

답변

1

@Khalid 대답 외에도 <support-screens>을 사용하면 화면 호환 모드가 활성화되어 태블릿 사용자가 다운로드 할 수있게됩니다.

<compatible-screens>은 사용자가 동적으로 해상도를 설정할 수있는 최신 버전의 Android (또는 삼성)를 구분할 수 없으며 화면 밀도를 정확히 찾아 낼 수 없으므로 필연적입니다.

이를 방지하기 위해 앱 실행시 유효성 검사기를 추가하여 화면 크기를 확인합니다.

public boolean checkUnsupportedSize() { 
    int screenSize = this.getResources().getConfiguration().screenLayout & 
      Configuration.SCREENLAYOUT_SIZE_MASK; 

    switch(screenSize) { 
     case Configuration.SCREENLAYOUT_SIZE_SMALL: 
      return false; 
     case Configuration.SCREENLAYOUT_SIZE_NORMAL: 
      return false; 
     default: 
      return true; 
    } 
} 

    if (checkUnsupportedSize()) { 
    YourActivity.this.finish(); 
} 

폰과 패 블릿은 항상 작은 및 정상의 화면 크기를 사용하는 것이기 때문에, 우리가 구별 할 수있다 다른 크기와 종료하기 위해 응용 프로그램을 강제을 화면.

Google Play에서 Phones, Phablets 및 Tablets에 대해 적절한 필터링을 수행 할 때까지는 내가 생각할 수있는 해결책입니다.

건배.

1

<compatible-screens> 대신 <supports-screens>을 사용할 수 있습니다. 앱에서 지원하는 각 화면 밀도를 지정하지 않아도되기 때문입니다. 단말기 장치에 대한

샘플 :

<supports-screens android:smallScreens="true" 
        android:normalScreens="true" 
        android:largeScreens="false" 
        android:xlargeScreens="false" 
        android:requiresSmallestWidthDp="320" /> 

출처 :

건배.

는 인조 오레오으로 업데이트 편집 : 귀하의 의견을 바탕으로

는 "편집 :. 문제는 WQHD를 지원하기 위해 전화를 수 있도록 최신 펌웨어로 업그레이드 사람들에게 발생"

가능한 논리적 인 원인 : 이전에이 장치가 실제 화면 (제조업체/안드로이드 OS) 해상도를 억제했기 때문에 코드가 모든 장치에서 예상대로 작동하고있었습니다.

기기의 진정한 화면 해상도 기능을 구현 한 새로운 Android OS/Oreo로 업그레이드 할 때 문제가 발생합니다.

설정 - 디스플레이 - 화면 해상도는

권장 테스트/검증은 가장 낮은 해상도를 설정하는 것입니다 (3 설정이 있습니다). 앱을 설치/실행 해보세요.

참고 : 당신이 주위에 일을 할 수 https://www.androidcentral.com/understanding-galaxy-s8s-display-resolution-options

이 안드로이드 API 8.0 오레오 폴더의 유틸리티 문서에 대한 완전히 새로운 업그레이드 평균 시간에 제공되는 그 같은 순간에서 코드 제어 에서 확실히 해당 기기의 최대 해상도를 포함하거나 사용자를 교육합니다.