admin管理员组

文章数量:1604661


网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 不同的OpenGL纹理压缩格式,支持每个的APK。

  • 支持APK的每个不同的屏幕配置。

  • 每个的APK支持不同的平台版本。

目前,这是唯一的设备的特点,Google Play 支持 发布相同的应用程序有多个APKs支持。

注意:只有当你的APK是太大(大于50MB),你应当使用多个APKs支持不同的设备配置。使用单一的APK,以支持不同的配置的设备始终是最好的做法,因为它使简单的应用程序更新的应用的途径和让用户很明白该怎样操作(也让你的开发变的简单,避免开发和发布的复杂性) Read the section below about Using a Single APK Instead to consider your options before publishing multiple APKs

在发布前注意的内容

=========

在你发布多个apks为同一个应用在Google Play,你必须理解一些关于怎样发布在Google Play上面的工作。

Active APKs


在你发布你的应用(无论是发布的一个或多个APKs)时,你必须“激活”从你的APK(S)apk文件选项卡上面。当你激活的APK,它将会移动一个激活的 APKs列表。这个名单可以让你预览的你即将发布的APK(s)。

如果没有任何错误,任何“active”APK将公布到Google Play,当您单击“Publish”按钮(如果应用程序是未发布的),或当您单击“ 保存 “按钮(如果应用程序已经发布)。

简单模式和高级模式


在Google Play上面提供了两种方式管理你的应用:简单模式和高级模式。你可以通过在Apk上面的选项卡,切换他们。简单的模式是传统的方式发布应用程序,使用一个apk在一次。

在简单模式,只有一个的APK可以激活一次。如果你上传一个新的APK(升级你的应用程序),要想激活升级的应用必须的取消当前的应用(您必须然后单击“ 保存“发布新的APK)。

高级模式允许你激活并发布多个APKs(每个apk都针对不同设备的配置)。然而,有些在清单中声明的规则的要求,是否你将要被允许激活apk。当您激活APK和违反规则之一,你会收到一条错误或警告消息。如果消息是一个错误,你可以不发布,直到你解决这个问题,如果它是一个警告,你可以发布ActiveAPKs,但您的应用程序是否适用于不同的设备可能有意想不到的后果。这些规则更下面的讨论。

Multiple APKs如何工作

=================

使用Google Paly Multiple APKs的概念是,你必须为您的应用程序只是一个entry在Google Play上面,但针对不同的设备可能会下载到一个不同的APK。这意味着:

  • 你保持产品细节只有一组(应用程序的描述,图标,截图等)。这也意味着你不能收取不同的价格对不同APKs。

  • 所有的用户只能看到您的应用程序的一个合适它设备的版本,所以它们不会混淆,你可能已经出版的“tablets(平板)”或“手机”。

  • 所有用户评论是相同的应用程序列表,即使在不同的设备上的是Multiple APKs。

  • 如果你发布不同版本的Andr​​oid(不同的API级别),then when a user’s device receives a system update thatqualifies them for a different APK you’ve published,

Google Play updates the user’sapplication to the APK designed for the higher version of Android。任何系统与应用程序相关的数据将被保留(与正常的使用single APK应用程序更新是一样的)。

发布多个APKs相同的应用程序,您必须启用高级模式, 在您的应用程序的apk文件 “选项卡(如在上一节讨论)。一旦在高级模式下,你可以上传,激活,然后发布多个相同的应用程序APKs。以下各节描述更多的是它如何工作的。

支持过滤器


收到每个APK是确定Google Paly APK的每个舱单文件中的元素指定的过滤器的设备。然而,Google Play允许您发布多个APKs只有当每个的APK使用filter,支持以下的设备特性的variation:

  • * OpenGL纹理压缩格式*

这是基于你的清单文件的,元素。

例如,开发一个使用OpenGL ES的游戏时,你可以可以提供一个APK为设备支持ATI的纹理压缩和一个独立的APK支持PowerVR的压缩(等等)的设备。

  • * 屏幕尺寸(和可选,屏幕密度)*

这是基于你的manifest文件的 或 元素。你不应该使用这两种元素在同一时刻,你应该在尽可能的情况下只使用 。

例如,您可以提供一个APK的支持小,正常大小的屏幕和其他的APK,支持大型和XLARGE屏幕。

注: Android系统,提供了很强大的支持,为一个APK支持所有的屏幕配置。你应该避免,创建多个APKs到支持不同的屏幕上,除非绝对必要,而遵循的指导,支持多个屏幕,使您的应用程序非常灵活,可以适应所有的屏幕配置的一个单一的APK。

注意:默认情况下,如果你不声明屏幕尺寸属性元素在默认情况下是“真”。然而,由于android:xlargeScreens 属性增加在Android 2.3(API 9级)属性,如果你的应用程序不设置任何android:minSdkVersion or android:targetSdkVersion to “9” 或者更高,Google Play将假设它是false。

注意:你不应该把和 一起使用。同时使用增加了机会,你会引入一个错误,因为它们之间的冲突。为帮助决定使用哪一个,请阅读 Distributing to Specific Screens。如果你不能避免同时使用,be aware that for any conflicts in agreement between agiven size, “false” will win.

  • * API Level*

这是基于您的manifest文件元素。你可以使用android:minSdkVersion和android:maxSdkVersion 属性来指定不同的API级别的支持。

例如,你可以发布你的应用程序一个APK的支持API level 4 - 7(Android 1.6 - 2.1),使用唯一的API level 4或者更低,如果支持的API level 8及以上(Android 2.2 + )使用API​的level为8 或者更低。

注意:

  • If you usethis characteristic as the factor to distinguish multiple APKs, then the APKwith a higherandroid:minSdkVersion value must have a higher android:versionCode value. This is also true if two APKs overlap their devicesupport based on a different supported filter. This ensures that when a devicereceives a system update, Google Play can offer the user an update for yourapplication (because updates are based on an increase in the app version code).This requirement is described further in the section below about Rules for multiple APKs.

  • 你应该避免使用android:maxSdkVersion在一般情况下,因为只要你正确使用public API开发您的应用程序,它始终是与未来版本的Android兼容。如果你想发布一个较高的API level不同的APK,你还没有需要到指定的最高版本,假如一个android:minSdkVersion是4,另一个是8,这个设备是8或者更高,那么这个设备将会选择android:minSdkVersion是8的APK。

Othermanifest elements that enable GooglePlay filters—but are not listed above—arestill applied for each APK as usual. However, Google Play does not allow you topublish multiple APKs based on variations of them. Thus, you cannot publishmultiple APKs if the above listed filters are the same for each APK (but theAPKs differ based on other characteristics in the manifest file). For example,you cannot provide different APKs that differ purely on the characteristics

发布multiple APKs的规则


在你发布您的应用程序的multiple APKs之前,你需要了解以下的规则,关于发布multiple APKs如何定义:

  • 相同的应用程序发布的所有APKs你必须有相同的包的名称,并使用相同的证书密钥签署。

  • 每个的APK 必须有一个不同版本的代码,由指定的 android:versionCode属性。

  • 每个的APK 不能完全匹配的配置支持,另外的APK(也就是说,一个apk不能包含支持别的配置的设备)。

That is, each APK must declare slightly different support for at least one of the supported Google Play filters (listed above).

通常情况下,你会区分你的APKs基于一个特定的特性(如支持的纹理压缩格式),因此,每个的APK将申明为不同的设备支持。然而,它确定发布他们的支持略有重叠的多个APKs。当两个APKs做重叠(他们支持一些相同的设备配置),将接收设备属于重叠的范围内具有较高的版本代码(通过定义的APK android:versionCode)。

  • 你不能启动一个新的APK取代一个版本的代码较低。例如,假设你有一个active 的屏幕尺寸小的APK - 正常版本代码是0400,然后尝试更换一个版本代码为0300相同屏幕尺寸的APK。这就出现了一个错误,因为这意味着以前的APK的用户将无法更新的应用程序。

  • 需要一个较高的APK level 必须有一个更高的版本的代码。

这是true的,只有当:1、APKs不同,仅仅根据支持的API的levels(没有其他支持的过滤器, 区分彼此的APKs) 2、APKs时使用另一个支持的过滤器为基础,但有该过滤器内的APKs之间的重叠。

这是重要的,因为用户的设备收到来自谷歌的应用程序更新版本的代码只有Google play的APK高于目前在设备上的APK版本。这将确保,如果设备收到一个系统的更新,然后限定它以较高的API级别的APK安装,设备接收应用程序更新,因为该版本代码增加。

注:该版本的代码增加的大小是无关紧要的,它只是需要在更大的版本,支持更高的API levels。

下面是一些例子:

1、If an APK you’ve uploaded for API levels 4 and above (Android 1.6+) has a version code of 0400, then an APK for API levels 8 and above (Android 2.2+) must be 0401 or greater. In this case, the API level is the only supported filter used, so the version codes must increase in correlation with the API level support for each APK, so that users get an update when they receive a system update.

2、If you have one APK that’s for API level 4 (and above) and small - large screens, and another APK for API level 8 (and above) and large - xlarge screens, then the version codes must increase. In this case, the API level filter is used to distinguish each APK, but so is the screen size. Because the screen sizes overlap (both APKs support large screens), the version codes must still be in order. This ensures that a large screen device that receives a system update to API level 8 will receive an update for the second APK.

3、If you have one APK that’s for API level 4 (and above) and small - normal screens, and another APK for API level 8 (and above) and large - xlarge screens, then the version codes do not need to increase in correlation with the API levels. Because there is no overlap within the screen size filter, there are no devices that could potentially move between these two APKs, so there’s no need for the version codes to increase from the lower API level to the higher API level.

如果,未能遵守上述规则将会在Google Play上出现错误,要想激活您APKs,直到你解决这个错误,否者您将无法发布您的应用程序。

还有其他您激活您的APKs时可能发生的冲突,但是这将导致警告,而不是错误。警告,可以由以下原因引起:

1、当你修改的APK设备的特点,并没有其他APKs支持的??设备,然后属于支持的范围以外的“缩水”的支持。例如,如果目前的APK支持small和normal大小的屏幕,你改变它仅支持small屏幕,那么你已经减少了对设备的支持 ,在Google Play一些设备将再也看不到你的应用程序。您可以通过增加另外的APK,支持正常大小的屏幕 ,这样所有设备便支持了,这个问题便得到了解决。

2、当有两个或更多APKs之间的“重叠”。例如,如果支持的APKsizes small, normal, and large,而另外的APK支持large和XLARGE,有重叠,因为两个APKs支持large。如果不解决这个问题,那么large 设备都将收到的z这两个APK具有最高的version code。

当发生这种冲突时,你会看到一条警告消息,但仍然可以发布您的应用程序。

创建 Multiple APKs

================

一旦你决定发布 Multiple APKs,你可能需为每个发布的应用,要创建单独的Andr??oid项目,可以适当分开开发的APK。你可以通过简单的复制现有的项目,并给它一个新名称。(另外,你可能会使用 build系统,可以输出为不同的资源 -如textures --根据不同build的配置。)

提示:一种方式,以避免重复您的应用程序代码的大部分是使用 library project。 library project.持有共享代码和资源,其中可以包括在您的实际应用项目。

相同的应用程序创建多个项目,这是一个好的做法,以确定每个人的名字,表示设备上的APK限制,所以你可以很容易地识别它们。例如“HelloWorld_8”可能是API 8级及以上的设计了一个应用程序的一个好名字。

注:相同的应用程序发布的所有APKs 必须具有相同的包的名称,并使用相同的证书密钥签署。可以肯定你也了解每个多APKs规则。

指定版本的代码


每个相同的应用程序的APK,必须有一个独特的 version code,,通过指定的android:versionCode属性。当你发布multiple APKs ,一定要小心的指定version code,,因为他们每个人都必须是不同的,但在某些情况下,必须或应该被定义在一个特定的顺序,根据配置每个APK的支持。

定制version code


通常需要较高的API级别的APK必须有一个更高的版本代码。例如,如果您创建两个APKs以支持不同的API级别,较高的API级别的APK必须有更高版本的代码。这将确保,如果设备receiver系统的更新,然后限定它以较高的API级别安装的APK,用户接收到一个更新的应用程序的通知。如何为更多的信息关于怎样要求apples,请参阅上面有关节多个APKs规则。

你也应该考虑版本代码的顺序如何,可能会影响它的APK用户收到任何因重叠覆盖的不同APKs或未来的变化,你可能使你的APKs。

例如,如果你有不同APKs根据屏幕上 size, such as one for small - normal and one for large - xlarge,但预见到的时候,你会改变的APKs是一个为小型和一个normal - XLARGE,然后你应该做的大版本的代码 - XLARGE的APK是较高的。这样,一个正常大小的设备将得到相应的更新,当你做出改变,因为版本的代码增加从现有的APK新的APK,支持现在的设备。



既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

.(img-v2DGWZTm-1715647215042)]
[外链图片转存中…(img-mrAZb0VF-1715647215043)]
[外链图片转存中…(img-H2442MpG-1715647215043)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

本文标签: 华为多个题解最新商店