0

Currently, my app is having multiple apk support. When the user is trying to download app from the play store for high-end devices (samsung s21 ulta) Play Store is shipping tablet apk (build) to a mobile device. Can anyone please help me to identify what parameter I missed in the manifest file?

Current filter parameters are used in the manifest file.

  1. Phone manifest:-
<?xml version="1.0"    encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="">
    <uses-feature android:name="android.hardware.screen.portrait" />

    <application
        android:name="androidx.multidex.MultiDexApplication"
        android:networkSecurityConfig="@xml/network_security_config">
        <meta-data
            android:name="com.google.android.gms.ads.AD_MANAGER_APP"
            android:value="true" />
        <meta-data android:name="android.max_aspect"
            android:value="2.4"/>

        <activity
            android:name=""
            android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
            android:exported="true"
            android:launchMode="singleTask"
            android:resizeableActivity="false"
            android:screenOrientation="portrait"
            android:maxAspectRatio="2.4">
            <!-- API >= 13, screenSize must be specified with orientation -->
            <intent-filter>
                <action android:name="android.provider.Settings.ACTION_ADD_ACCOUNT" />
                <action android:name="" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>

            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

        </activity>

        <activity
            android:name=""
            android:configChanges="keyboard|keyboardHidden|orientation"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />
    </application>

    <supports-screens
        android:smallScreens="true"
        android:normalScreens="true"
        android:largeScreens="false"
        android:xlargeScreens="false"
        android:anyDensity="true"
        android:requiresSmallestWidthDp="320" />
</manifest>
  1. Tablet Manifeast
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="">
  <uses-feature android:name="android.hardware.screen.landscape" />
  <application android:networkSecurityConfig="@xml/network_security_config">

    <meta-data
        android:name="com.google.android.gms.ads.AD_MANAGER_APP"
        android:value="true"/>
    <meta-data android:name="android.max_aspect"
        android:value="1.7"/>
    <activity android:name="" android:launchMode="singleTask"
       android:screenOrientation="landscape" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
        android:resizeableActivity="false" android:exported="true"
        android:maxAspectRatio="1.7">
      <!-- API >= 13, screenSize must be specified with orientation -->
      <intent-filter>
        <action android:name="android.provider.Settings.ACTION_ADD_ACCOUNT"/>
        <action android:name=""/>
        <category android:name="android.intent.category.DEFAULT"/>
      </intent-filter>
      
      <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
      </intent-filter>
    </activity>

    <activity android:name=""
       android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
       android:screenOrientation="landscape"
       android:configChanges="keyboard|keyboardHidden|orientation"/>

  </application>

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

</manifest>
  1. Common Manifeast
<?xml version="1.0"    encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package=""
    android:installLocation="auto">

    <uses-feature android:glEsVersion="" />

    <queries>
       
    </queries>

    <application
        android:name="androidx.multidex.MultiDexApplication"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:networkSecurityConfig="@xml/network_security_config"
        android:requiredAccountType="com.google"
        android:resizeableActivity="false"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:theme="@style/AppCompatTheme">
 

        <activity
            android:name=""
            android:label="sdk" />

        <!-- google play service for google ads-->
        <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
        <meta-data android:name="com.google.android.gms.games.APP_ID" android:value="@string/app_id"/>
        <meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" android:value=""/>

      <!-- Has Offers -->
        <receiver
            android:name="com.mobileapptracker.Tracker"
            android:exported="true">
            <intent-filter>
                <action android:name="com.android.vending.INSTALL_REFERRER" />
            </intent-filter>
        </receiver>

    </application>

    <uses-configuration android:reqTouchScreen="finger" />

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WAKE_LOCK" android:maxSdkVersion="25"/>
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" tools:node="remove" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" tools:node="remove" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />

    <!-- Required permission to use in-app billing. -->
    <uses-permission android:name="com.android.vending.BILLING" />
    <uses-permission android:name="com.android.vending.CHECK_LICENSE" />
    <!--<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />-->
    <uses-permission android:name="android.permission.USE_CREDENTIALS" />
    <!-- Cloud to Device Messaging permissions -->
    <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
</manifest>
  • What's the version code for both apks ? – Nitish Jun 06 '23 at 10:02
  • @Nitish Phone :- 14600 and tablet :- 14700 – Singh vivek Pratap Jun 06 '23 at 10:15
  • `When two APKs do overlap (they support some of the same device configurations), a device that falls within that overlap range will receive the APK with a higher version code (defined by android:versionCode).` - [Multiple-apks support](https://developer.android.com/google/play/publishing/multiple-apks), I'm not 100% sure, but this could be one of the reason for tablet apk being download in Samsung Device. – Nitish Jun 06 '23 at 10:19
  • Hi @Nitish If I am making a version code larger than a tablet for mobile then I am getting the error 'This APK will not be served to any users because it is completely shadowed by one or more APKs with higher version codes. Remove this APK from your release or review the targeting and version codes of the APKs that you are including in this release.' – Singh vivek Pratap Jun 06 '23 at 13:12

0 Answers0