针对最大数量的受支持设备优化 Android 清单文件

     2023-04-14     96

关键词:

【中文标题】针对最大数量的受支持设备优化 Android 清单文件【英文标题】:Optimizing Android manifest file for largest number of supported devices 【发布时间】:2012-12-10 15:45:06 【问题描述】:

当我上传新的 APK 文件时,我无法让我的清单文件与许多较新的手机兼容,我不明白为什么。我正在一个全新的HTC Evo V 上对其进行测试,但无论出于何种原因,该设备都不会出现在兼容性列表中。

我正在针对 API 17 进行编译,最低支持 API 10,因此应该涵盖绝大多数手机。

我尝试过的:

删除所有权限;没有变化 尝试使 WIFI 不需要;没有变化 删除了installLocation,看看它是否有所作为;没有变化 甚至尝试添加小屏幕支持以查看它是否会显示;没有变化

我读过的:

http://developer.android.com/google/play/filters.html http://developer.android.com/guide/practices/screens-distribution.html http://developer.android.com/guide/practices/compatibility.html http://developer.android.com/guide/topics/manifest/manifest-intro.html

我的清单文件:

<?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>

【问题讨论】:

【参考方案1】:

我想发布这个问题以及一个答案,因为一开始我发现这很令人沮丧。但是,这将我支持的设备数量从 499 更改为 1968。希望这将有助于未来更多的人,因为这似乎是一个晦涩的话题。

技术 1: 没有显示更多设备的原因是,当您使用 &lt;compatible-screens&gt; 标记时,Google 会更积极地过滤。就我而言,我没有足够的不同屏幕尺寸和密度组合,所以它过滤掉了我遗漏的所有内容(请参阅下面的技巧 2)。

如果您只使用&lt;supports-screens /&gt; 标签,那么您的应用程序将能够被更多设备找到。所以请帮自己一个忙,删除 &lt;compatible-screens&gt; 块中的所有其他标签。

您可以使用这样的简写形式:

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

引用自original article:

如果设备屏幕尺寸和 密度与任何屏幕配置都不匹配(由 “screen”元素)在“compatible-screens”元素中。

注意:通常,您不应使用此清单元素。使用 此元素可以显着减少您的潜在用户群 应用程序,通过排除屏幕尺寸和密度的所有组合 你没有列出。您应该改用 “supports-screens”清单元素(如上表 1 所述)到 为您拥有的屏幕配置启用屏幕兼容模式 没有考虑到替代资源。

技术 2: 您可以使用的另一种技术是使您的&lt;compatible-screens&gt; 标记更加具体,并摆脱&lt;supports-screens /&gt; 标记。您可以根据您的应用要求以及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>

【讨论】:

@Arash 我刚刚过渡到 Android 世界,所以希望这会帮助其他一些人。 感谢您的提示,这真的很有帮助 “这将我支持的设备数量从 499 个更改为 1968 个”-@iWasRobbed 你是如何获得这些数字的? 它们会在您将新 APK 上传到 Google Play 开发控制台 @skataben 时显示 等等,我应该同时拥有支持屏幕和兼容屏幕吗?还是只有一个?为什么?谢谢老兄

仅适用于 Android TV 的 Android 清单 - 支持的设备太少?

】仅适用于AndroidTV的Android清单-支持的设备太少?【英文标题】:AndroidManifestforAndroidTVonly-toofewdevicessupported?【发布时间】:2017-01-2802:50:27【问题描述】:我已经使用Unity3D创建了一个AndroidTV应用程序,并且正在尝试编写一个合适... 查看详情

支持来自较高 API 级别的清单属性,同时针对较低 API 级别进行构建?

...布时间】:2011-09-1223:06:22【问题描述】:我有一个必须与Android2.1(Eclair,API级别7)兼容的应用程序。我想使用仅受Android2.2+支持的清单属性(Fr 查看详情

iphone 的 UILocalNotification 的最大数量

...大数量吗?Apple文档谈到最大数量为64,但我想知道这是针对每个应用程序还是针对所有应用程序。文档位于:http://developer. 查看详情

solr优化案例分析

...询最近3个月的syslog,保存一年的syslog,在7月份的时候,针对量不多的情况,针对my 查看详情

v3.15.1版本增加了针对华为设备的优化代码

V3.15.1版本功能介绍该版本在3.15的基础上加了针对华为设备的优化代码。该优化代包含两部分内容:让游戏跑得更流畅在设备发烫时,降低游戏的功耗引擎会搜集一些信息,如节点数、粒子数、播放音频数量等信息以... 查看详情

设备选型

...交换机的主要技能指标是什么?机架插槽数、扩展槽数、最大可堆叠数、支持的网络类型、最大SONET端口数.、背板吞吐量、MAC地址表大小、支持的协议、标准板带宽、端口速率、端口密度、可扩展性、支持VLAN数量和物理地址数... 查看详情

确定图像存储是不是针对设备进行了优化

】确定图像存储是不是针对设备进行了优化【英文标题】:identifyingifimagestoreisoptimizedfordevice确定图像存储是否针对设备进行了优化【发布时间】:2015-07-0915:06:54【问题描述】:我正在使用ALAssetsLibrary访问照片。我的应用需要高... 查看详情

更好地适配大屏幕设备|2021android开发者峰会

作者/工程经理ClaraBayarri今年的Android开发者峰会带来了许多Android大屏幕设备开发的最新资讯,包括可折叠设备和平板电脑上的Android12L功能更新的一系列内容:针对大屏幕设备优化的Android12系统功能、更好的开发者工具以及专... 查看详情

R 包“性能分析”优化器中的最大资产数量

】R包“性能分析”优化器中的最大资产数量【英文标题】:MaximumnumberofassetsinRpackage\'performanceanalytics\'optimizer【发布时间】:2019-02-0623:42:43【问题描述】:这只是一个关于我可以在r性能分析优化器函数中使用的最大股票数量的一... 查看详情

清单合并失败:针对 Android 12 的应用程序 - Android Studio 错误 [重复]

】清单合并失败:针对Android12的应用程序-AndroidStudio错误[重复]【英文标题】:AndroidStudioerror:"Manifestmergerfailed:AppstargetingAndroid12"【发布时间】:2021-07-2809:53:56【问题描述】:我已将我的模拟器版本和AndroidSDK版本更新为Andro... 查看详情

android图形系统系统篇之hwc

参考技术AHWC(hwcomposer)是Android中进行窗口(Layer)合成和显示的HAL层模块,其实现是特定于设备的,而且通常由显示设备制造商(OEM)完成,为SurfaceFlinger服务提供硬件支持。SurfaceFlinger可以使用OpenGLES合成Layer,这需要占用并消耗... 查看详情

如何在代码中检查我的设备是不是支持连接的最大蓝牙?

...牙?【发布时间】:2019-04-2007:31:17【问题描述】:请参阅Android:LimitofsimultaneousBLEconnections)。我们可以在代码中获得最大的蓝牙连接吗?【问题讨论】:【 查看详情

App Store 提交的最大截图数量

】AppStore提交的最大截图数量【英文标题】:MaximumnumberofscreenshotsallowedforAppStoresubmission【发布时间】:2015-07-3110:33:06【问题描述】:我正在研究向iOS应用商店提交应用所需的元数据要求。在未注册Apple开发者计划的情况下,我无... 查看详情

iBeacon / 低功耗蓝牙(BLE 设备)- 信标的最大数量

】iBeacon/低功耗蓝牙(BLE设备)-信标的最大数量【英文标题】:iBeacon/BluetoothLowEnergy(BLEdevices)-maximumnumberofbeacons【发布时间】:2013-10-1110:35:53【问题描述】:我想通过iPhone(5s)上的应用程序在50-100m半径范围内一次跟踪大量信标(~500)... 查看详情

解锁高评分|ebay深耕用户体验,优化大屏幕设备应用

作者/ Android团队深耕用户体验对于拥有全球数百万买家和卖家的庞大购物网站eBay而言,提供优质的用户体验是提升销量的关键。因此,当eBay架构团队的Android工程师意识到,通过优化大屏幕设备(如平板电脑和可折叠... 查看详情

Android 应用程序与 Play 商店中的新设备不兼容

】Android应用程序与Play商店中的新设备不兼容【英文标题】:AndroidApplicationisnotcompatiblefornewdevicesonplaystore【发布时间】:2020-10-1913:19:57【问题描述】:不支持我的应用程序对于新的android设备版本:您的设备与此版本不兼容。我的... 查看详情

什么决定了最大纹理尺寸?

...支持最大纹理大小有关。有问题的设备(iPhone4和较旧的android手机)仅支持2048x2048的最大纹理大小,而较新的设备支持的 查看详情

为啥我的 Android 清单不支持三星 Galaxy Note 2

】为啥我的Android清单不支持三星GalaxyNote2【英文标题】:Whydoesn\'tmyAndroidManifestsupportSamsungGalaxyNote2为什么我的Android清单不支持三星GalaxyNote2【发布时间】:2013-01-3008:55:38【问题描述】:我有以下清单来构建我的应用程序,发现Goog... 查看详情