Google Play会过滤出那些对用户可见的应用程序,因此用户只能看到和下载那些跟他们的设备兼容的应用程序。通过功能的兼容性是过滤应用程序的方法之一。
Google Play通过把以下两项内容进行比较,来判断应用程序跟给定用户设备是否兼容:
1.应用程序需要的功能---指应用程序在它自己的清单的<uses-feature>元素中声明的功能;
2.在设备上有效的硬/软件功能---值设备用只读的系统属性所报告的它所支持的功能。
为了确保功能的准确比较,Android包管理器提供了一个共享的功能常量集合,应用程序和设备都使用这些常量来声明各自所需要和支持的功能。可用的功能常量在本文下面的功能参考表中被列出。
当用户启动Google Play时,应用程序通过调用getSystemAvailableFeatures()方法,来查询包管理器中所列出的设备上可用的功能列表。然后在建立用户会话的时候,软件商店(The Store)应用程序会把这个功能列表上传给Google Play。
每次把应用程序上传给Google Play的发布网站时,Google Play都会扫描应用程序的清单文件。它会查找清单中的<uses-feature>元素,并且在某些情况下,会把它们跟其他元素组合在一起来评估,如<uses-sdk>和<uses-permission>元素。在建立了应用程序所需的功能集合之后,Google Play会把这个功能列表做为跟应用程序的.apk和版本相关联的内部元数据来保存。
当用户使用Google Play应用程序查询或浏览应用程序时,服务就会把每个应用程序所需的功能跟用户设备上可用的功能进行比较。如果应用程序所需要的功能在设备上都存在,那么Google Play就允许用户看到该应用程序,并程序潜在的可下载应用程序。如果应用所需的任何一个功能不被设备所支持,Google Play就过滤掉该应用程序,这样用户就看不到并且也不能够下载。
因为在<uses-feature>元素中声明的功能直接影响到Google Play如何过滤应用程序,因此理解Google Play是如何评估应用程序的清单和建立需求功能的集合是至关重要的,以下章节会详细说明。
基于明确声明功能的过滤
一个明确声明的功能就是应用程序在其清单中声明的一个<uses-feature>元素。功能声明能够包含一个android:required=[“true”|”false”]属性(如果在API Leve 5以上的版本上编译),这个属性指定了应用程序是否绝对的需要该功能,并且目标设备上不存在该功能时,该应用程序就不能正常的运行(true的场合),或指定应用程序在功能有效的时候就使用该功能,而在该功能无效的时候,应用程序也被设计成可以运行(false的场合)。
Google Play用以下方法来处理明确声明的功能:
1.如果一个功能被明确声明为时必须的,则Google Play就会把应用程序需要的功能列表添加到一个列表中。然后把列表中的功能需求与用户设备提供的功能进行比较,从而把应用程序从没有提供该应用所需功能的设备中过滤掉。例如:
<uses-featureandroid:name="android.hardware.camera"android:required="true"/>
2.如果一个功能被设计成非必须的功能,Google Play就不会把这样的功能添加到功能需求列表中。由于这个原因,明确声明的非必须功能,在Google Play过滤应用程序时就不会被考虑。即使设备不提供该声明的功能,Google Play依然会认为该应用程序与设备是兼容的,并允许显示给用户,除非使用了其他过滤规则。例如:
<uses-featureandroid:name="android.hardware.camera"android:required="false"/>
3.如果一个功能被明确声明,但没有设置android:required属性,那么Google Play就会假定该功能是必须的,并且要针对该功能进行过滤。
通常,如果应用程序被设计成要运行在Android1.6或更早的版本上,那么在API中android:required属性是无效的,并且Google Play会假定应用程序所声明的所有的功能<uses-feature>都是必须的。
注意:通过声明一个包含android:required=”false”属性的功能,能够禁止Google Play针对该功能的所有过滤。
分享到:
相关推荐
SlidingMenu是一个开源库,允许开发者在Android应用中实现类似Google Play商店那样从左侧或右侧滑动显示的菜单。它提供了一种简单的方式来添加这种交互式侧滑效果,通常与ActionBar或ToolBar结合使用,以实现更丰富...
利用Latent Dirichlet Allocation(LDA,潜在狄利克雷分配)和协同过滤技术,构建两阶段偏度基础的过滤策略,建立App功能与权限的映射模型,并推荐合理的权限配置。此外,通过对比恶意App与流行App之间的差异,设计...
标题中的“行业文档-设计装置-一种基于APP平台和数据挖掘的分析推荐方法”揭示了这份文档的主题,它聚焦于如何在APP平台上运用数据挖掘技术进行分析和推荐。这一领域涵盖了移动应用开发、数据分析以及机器学习等多个...
这一功能需要利用到机器学习算法,如协同过滤或基于内容的推荐系统,分析用户行为,预测兴趣偏好。 三、项目实现过程 1. **需求分析**:首先,要明确应用的目标用户群和核心功能,制定出详细的需求规格书。 2. *...
05-google-play 此仓库用于Metis项目5背景待填充客观的分析约22,000个应用的样本的Google Play应用商店数据,以预测每个应用的用户评分使用基于内容的过滤开发应用推荐引擎方法从Google Play商店收集的半结构化和非...
通过Google Play Console提供的分析工具,开发者可以监控应用的性能和用户反馈,持续优化和改进系统。 综上所述,“基于Android的大学生兼职系统设计与实现”是一个涵盖广泛技术领域的项目,涉及Android客户端开发...
实现这一功能需要PHP处理查询逻辑,可能还需要利用到搜索引擎优化(SEO)技巧。 6. **支付集成**:如果网站支持付费推广或购买APP,就需要集成支付网关,如PayPal、Stripe等,PHP可以处理与这些服务的接口通信。 7...
通过查看源码,学生可以深入理解每个组件的功能和实现方式,而项目说明文档则会提供更详细的步骤和指导,帮助初学者快速上手并完成毕业设计。在Window10/11环境下测试正常,说明项目具有较好的兼容性和稳定性,是...
目标是模仿或复制在Google Play商店中已存在的"Transit App"的功能和用户体验。这表明我们将在AngularJS这个前端JavaScript框架中探讨如何构建一个与交通相关的移动应用。 **描述详解:** 描述进一步确认了这个...
标题中的“python+毕业设计《基于Android的新闻推荐客户端设计与实现》+源码+课程作业.zip”表明这是一个关于毕业设计的项目,主要利用Python技术和Android平台,旨在开发一个新闻推荐客户端。这个客户端可能结合了...
`SearchBarDemo`是一个Android项目实例,旨在展示如何实现类似Google Gmail和Play Store的搜索用户界面。这个项目采用Java编程语言,通过模仿这两款应用的搜索交互效果,为开发者提供了一个直观的学习参考。 首先,...
8. **发布与更新**:最后,论文可能涉及将应用发布到Google Play Store的流程,以及如何进行版本管理和应用更新。 通过以上知识点的综合运用,这篇毕业论文展示了如何构建一个完整的、功能丰富的Android美食推荐...
在Android平台上开发一款基于通讯录的软件是一项技术性较强的工作,涉及到多个关键知识点。这款名为"ContactsManager"的软件显然旨在提供用户友好的界面和简便的操作方式,为用户管理和操作联系人信息提供便利。以下...
GMS包是谷歌提供的一系列核心应用程序和服务集合,它包括了Google Play商店、Gmail、Google Maps、Google Drive、Google Photos、Google Calendar等许多我们日常使用的应用。这些服务对于Android用户来说至关重要,...
- ADT(Android Development Tools):基于Eclipse的插件,专门用于Android开发,提供了一系列方便开发者的工作流和工具,如图形布局编辑器、项目构建工具等。 **5. 系统需求和兼容性** 开发Android应用的计算机...
【基于Android的新闻推荐客户端设计与实现】是一个典型的本科毕业设计项目,主要涵盖了移动应用开发领域的核心技术和实践。在这个项目中,学生将学习并运用Android SDK来构建一个功能齐全的新闻阅读应用程序,其中...
Play2Api 是一个基于Java和Scala的开源Web应用框架,它为开发高性能、反应式的Web应用程序提供了便利。Play框架以其模型-视图-控制器(MVC)架构而闻名,支持异步I/O,使得应用程序能够快速响应用户请求,提高了整体...
10. **许可证和费用**:AdGuard可能提供免费和付费版本,免费版通常具有基本的广告拦截功能,而付费版则提供更多高级功能和优先技术支持。 总的来说,AdGuard是一款集广告拦截、隐私保护和安全防护于一身的安卓应用...