12

मैं जब मैं एक नया APK फ़ाइल अपलोड और मैं क्यों समझ में नहीं आता मुद्दों मेरी मालसूची फ़ाइल हो रही नए फोन की एक बहुत कुछ के साथ संगत होना करने के लिए हो रहा है की सबसे बड़ी संख्या के लिए अनुकूलन Android मेनिफेस्ट फ़ाइल। मैं इसे एक नए नए HTC Evo V पर परीक्षण कर रहा हूं, लेकिन किसी भी कारण से, वह डिवाइस संगतता सूची में दिखाई नहीं देगा।समर्थित उपकरणों

मैं एपीआई 10 की एक न्यूनतम समर्थन के साथ एपीआई 17 के खिलाफ संकलन कर रहा हूँ, ताकि फोन की एक बड़ी संख्या धरना चाहिए।

मैं क्या कोशिश की है:

  • सभी अनुमतियों को निकाला गया; कोई बदलाव नहीं
  • वाईफ़ाई बनाने की कोशिश नहीं की गई; कोई परिवर्तन नहीं
  • निकाला गया installLocation अगर यह एक नई पहल की है देखने के लिए; कोई परिवर्तन नहीं
  • भी देखने के लिए अगर यह दिखाई चाहते हैं छोटे परदे समर्थन जोड़ने की कोशिश की, कोई परिवर्तन नहीं

मैं क्या पढ़ा है:

मेरे मैनिफ़ेस्ट फ़ाइल:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="com.somecompany.appname" 
     android:versionCode="10" 
     android:versionName="1.0" 
     android:installLocation="preferExternal"> 

    <!-- For expansion pack downloads --> 
    <!-- Required to access Android Market Licensing --> 
    <uses-permission android:name="com.android.vending.CHECK_LICENSE" /> 
    <!-- Required to download files from Android Market --> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <!-- Required to keep CPU alive while downloading files (NOT to keep screen awake) --> 
    <uses-permission android:name="android.permission.WAKE_LOCK" /> 
    <!-- Required to poll the state of the network connection and respond to changes --> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <!-- Required to check whether Wi-Fi is enabled --> 
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> 
    <!-- Required to read and write the expansion files on shared storage --> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

    <uses-sdk android:minSdkVersion="10" android:targetSdkVersion="17"/> 
    <supports-screens android:normalScreens="true"/> 
    <supports-screens android:largeScreens="true"/> 
    <supports-screens android:xlargeScreens="true"/> 

    <compatible-screens> 
     <screen android:screenSize="normal" android:screenDensity="mdpi" /> 
     <screen android:screenSize="large" android:screenDensity="hdpi" /> 
     <screen android:screenSize="xlarge" android:screenDensity="xhdpi" /> 
    </compatible-screens>      
    <application android:icon="@drawable/icon" android:label="@string/app_name" android:allowBackup="false"> 
     <activity android:name="somecompany.appname.SplashScreen" 
        android:label="@string/app_name" 
        android:theme="@android:style/Theme.NoTitleBar" 
        android:screenOrientation="portrait"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity android:name="somecompany.appname.SoundAndCallActivity" android:screenOrientation="portrait" android:theme="@android:style/Theme.NoTitleBar"/> 
     <activity android:name="somecompany.appname.MainScreenActivity" android:screenOrientation="portrait" android:theme="@android:style/Theme.NoTitleBar"/> 
     <activity android:name="somecompany.appname.SettingsActivity" android:screenOrientation="portrait" android:theme="@style/Theme.Transparent"/> 
    </application> 
</manifest> 

उत्तर

20

मैं क्योंकि मैंने पाया यह तो पहली बार में यह पता लगाने की निराशा हो करने के लिए इस सवाल का और पोस्ट करने के लिए भी एक जवाब चाहता था। हालांकि, इसने 49 9 से 1 9 68 तक समर्थित उपकरणों की संख्या बदल दी। उम्मीद है कि यह भविष्य में अधिक लोगों की मदद करेगा क्योंकि यह एक अस्पष्ट विषय प्रतीत होता है।

तकनीक 1: कारण है कि अधिक उपकरणों दिखाई नहीं होगा क्योंकि गूगल फिल्टर अधिक आक्रामक तरीके से जब आप <compatible-screens> टैग का उपयोग किया गया था। मेरे मामले में, मेरे पास अलग-अलग स्क्रीन आकार और घनत्व संयोजन नहीं थे, इसलिए मैंने छोड़े गए सभी को फ़िल्टर किया (नीचे तकनीक 2 देखें)।

आप के बजाय केवल <supports-screens /> टैग का उपयोग करते हैं, तो आप अपने अनुप्रयोग सक्षम हो जाएगा कई और अधिक उपकरणों के द्वारा पाया जा सकता है। तो <compatible-screens> ब्लॉक में उन सभी अन्य टैग को अपने आप को एक पक्ष दें और हटा दें।

आप इस प्रकार का संक्षिप्त रूप का उपयोग कर सकते हैं: अगर डिवाइस स्क्रीन आकार और घनत्व स्क्रीन के किसी भी मेल नहीं खाती

गूगल प्ले आवेदन फिल्टर:

<supports-screens android:largeScreens="true" android:normalScreens="true" android:smallScreens="true" android:anyDensity="true"></supports-screens> 

original article से उद्धरित कॉन्फ़िगरेशन ( "स्क्रीन" तत्व द्वारा घोषित) "संगत-स्क्रीन" तत्व में।

सावधानी: आम तौर पर, आप इस प्रकट तत्व उपयोग नहीं करना चाहिए। इस तत्व का उपयोग नाटकीय रूप से स्क्रीन आकार और घनत्व के सभी संयोजनों कि आप सूचीबद्ध नहीं किया है बहिष्कृत करके, अपने आवेदन के लिए संभावित उपयोगकर्ता आधार कम कर सकते हैं। इसके बजाय आप स्क्रीन विन्यास के लिए स्क्रीन संगतता मोड को सक्षम को "का समर्थन करता है स्क्रीन" प्रकट तत्व (तालिका 1 में ऊपर वर्णित है) का उपयोग करना चाहिए आप वैकल्पिक संसाधनों के साथ के लिए जिम्मेदार नहीं है।

तकनीक 2: एक और तकनीक आप उपयोग कर सकते हैं और अधिक विशिष्ट अपने <compatible-screens> टैग के साथ होने के लिए और <supports-screens /> टैग से छुटकारा पाने के लिए है। आप latest device distribution numbers पर अपने ऐप आवश्यकताओं पर उन फैसलों का आधार है और यह भी कर सकते हैं।

नीचे दिए गए उदाहरण में, मैं सामान्य, बड़ी, या xlarge स्क्रीन की छोटी स्क्रीन या ldpi घनत्व का समर्थन नहीं करना चाहता, इसलिए मैंने उन्हें छोड़ दिया।

<compatible-screens> 
    <!-- all normal size screens --> 
    <screen android:screenSize="normal" android:screenDensity="mdpi" /> 
    <screen android:screenSize="normal" android:screenDensity="hdpi" /> 
    <screen android:screenSize="normal" android:screenDensity="xhdpi" /> 
    <!-- all large size screens --> 
    <screen android:screenSize="large" android:screenDensity="mdpi" /> 
    <screen android:screenSize="large" android:screenDensity="hdpi" /> 
    <screen android:screenSize="large" android:screenDensity="xhdpi" /> 
    <!-- all xlarge size screens --> 
    <screen android:screenSize="xlarge" android:screenDensity="mdpi" /> 
    <screen android:screenSize="xlarge" android:screenDensity="hdpi" /> 
    <screen android:screenSize="xlarge" android:screenDensity="xhdpi" /> 
</compatible-screens> 
+1

उपयोगी Thx लगता है –

+1

@Arash मैं बस अब एंड्रॉयड की दुनिया में संक्रमण कर रहा हूँ, इसलिए उम्मीद है इस में कुछ अन्य लोगों कि रूप में अच्छी तरह कर रहे हैं मदद मिलेगी। – iwasrobbed

+1

टिप के लिए धन्यवाद, यह वास्तव में मददगार था –

संबंधित मुद्दे