针对不同API级别的多个APK或单个APK?

时间:2015-07-18 03:35:08

标签: android android-layout apk android-5.0-lollipop multiple-apk

我有一个APK文件,其中包含运行在最低API 21上的应用程序,因此我可以最好地支持材料设计功能。由于Android Lollipop(API 21)仅在12.4% of devices上运行,因此我自然也希望支持较低的API。对于API v21和低于v21,我使用不同布局创建应用程序的最佳方式是什么?我应该创建两个不同的应用程序,一个针对v21进行了优化,一个针对v21进行了优化,或者是否有更简单的方法可以解决这个问题?

谢谢!

3 个答案:

答案 0 :(得分:2)

您不应该构建多个APK,因为这会成为维护的噩梦。

使用Android Support LibraryAndroid Design Library充分利用最新的平台功能,同时向后移植到更早的API级别。

答案 1 :(得分:2)

看,你可以创建多个应用程序&你可以使用Androids支持库。(Android支持库是通过照顾你的小事来实现这一目标的最佳资源之一。)你总是可以选择。

答案 2 :(得分:2)

对于许多针对较新平台版本的设计或其他优化的应用程序而言,这是一个常见问题(不仅仅是API 21+ ......但是当API 25出现时会怎么样?)

在做出这个决定之前,有几个因素需要考虑 - 一些编程和一些组织。 Android有许多功能可以支持同一个应用程序内的向后兼容性。资源文件夹,检查平台API的静态方法,兼容性库。一些组织不愿意支持多个应用程序。

以下是您可能需要为自己的环境确定优先级的列表:

  1. 您是否可以将支持多个API所需的资源文件夹限制在可接受的复杂程度?管理一些额外的布局和/或图像文件夹非常简单。但是对单个ActivityFragment的许多布局严格依赖,然后支持许多屏幕密度以及设备大小...您可能更好地将它们分成不同的应用程序以降低复杂性。

  2. 您是否有多个需要确定设备API的嵌套对象依赖项?如果你有一层层的对象都有不同的API要求(对象A用于API 21+,对象B仅用于API 19,等等,然后对象AA用于API 17+,也取决于对象A或对象B,取决于API) - 您可能被迫进入单个应用程序开发。或者您可能被迫创建库并分离APK,以便您可以正确测试代码。

  3. 企业是否会理解“单一APK”并不意味着“比多种APK更便宜”?有时将开发划分为单独的APK将降低复杂性并增加开发输出,同时降低QA的成本。在其他时候,他们将通过单独的发布批准和其他“繁文缛节”活动,使分离效率低下。此外,有时开发人员会赞成在“最新且最好的”API目标中工作,质量将落后于目标API。

  4. 您是否可以支持库或子模块开发,以便您可以使用多个APK有效地重用代码?将APK分开后,可能会对每个代码库不熟悉,无法有效地重用组件。一个APK中存在的问题可能在没有识别的情况下得到解决,这也解决了另一个问题中的类似问题(但不完全相同)。

  5. 一般来说,保持相同的代码库会增加复杂性,同时保持对一组代码的关注并使管理层满意。但是,特定情况(例如,有一个通知应用程序 - 其中Lollipop中通知的性质发生了变化)可能导致需要创建一个新的APK,这可能会大大减少对旧版本的支持,这可能是最好的采用较新的版本达到饱和。

    Google允许您上传多个针对单个应用的不同API(甚至是设备)的APK。这是额外的灵活性 - 以及额外的应用商店维护。

    祝你好运。