当前位置:文档之家› 【Android开发Wiki】进阶篇包含多个APK-Maintaining Multiple APKs(三):创建多个APK给不同的GL结构

【Android开发Wiki】进阶篇包含多个APK-Maintaining Multiple APKs(三):创建多个APK给不同的GL结构

【Android开发Wiki】进阶篇包含多个APK-Maintaining Multiple APKs(三):创建多个APK给不同的GL结构
【Android开发Wiki】进阶篇包含多个APK-Maintaining Multiple APKs(三):创建多个APK给不同的GL结构

原文链接:

https://www.doczj.com/doc/6b7621759.html,/training/multiple-apks/texture.html

为不同的GL纹理创建多重的APKs

在我们利用多重的APKs在Google Play中开发android应用时,很重要的一点就是在一开始就要采取好的方法,以避免在进一步开发过程中遇到不必要的麻烦。这节课将会告诉你如何在你的支持不同的OpenGL 纹理格式的子集的应用中创建多重的APKs。你也将会获得一些工具,这些工具能让你更容易的维护多重的APK代码库。

确认你需要多重的APKs

当你试图创建一个对所有Anroid-powered设备可用的应用程序时,当然,你希望你的应用程序在每个独立设备上展示都是最好的,而不管它们是否都支持相同的GL纹理设置。从一开始看来多重的APK支持就是最好的解决方案,但情况往往不是这样。多重APK开发者指南的Using Single APK Instead部分包含了一些有用信息,关于如何用单个的APK做到这一点,也包含了如何在程序运行时检测到程序支持的纹理格式。比较容易的做法是,你可以把你的应用程序绑定所有纹理格式,然后根据你的情况,选择在运行时使用哪一个。

如果你能够做的好,那么仅包含一个单一的APK的应用程序会有以下几个优点:

o出版和测试更容易

o只需要维持一个代码库

o应用程序可以适应设备配置的变化

o跨设备的应用程序恢复工作

o无需担心市场的偏好,APK的“升级”行为,以及APK在何种类别的设备上运行假设你现在已经研究了这一节课的主题,而且还相当好学的吸收掌握了链接中的资源素材,并确定多重的APKs是你的应用程序的正确选择。

把你的需求列成图表

Android开发者指南在supports-gl-texture page页面提供了一些通用的纹理支持作为参考。此页还包含了一些像电话(家庭电话)支持特定的纹理格式的提示。需要了解的是,如果你的APKs中有一个支持ETC1,这通常是个不错的主意,因为所有支持OpenGL ES2.0规范的Android-powered设备都支持这种纹理格式。

由于大多数Android-powered设备都支持多种纹理格式,所以你需要建立一个优先顺序。创建一个包含你的应用程序所要支持的格式的图表。最左边的单元格将是优先级最低的级别(它可能是ETC1,在性能和兼容性方面真正坚实的默认情况)。然后你可以给这个图表涂上色,每一种颜色代表一个APK。

给图表着色并不仅是为了让本指南更多彩-它这种方式能让团队内部沟通更容易,现在,你可以简便的指出每个APK为“蓝色”,“绿色”或“红色”,而不是“支持ETC1纹理格式的那个”等等这些沟通方式。

把所有的公共代码和资源文件放在库工程中

无论你是修改现有的Android应用程序或新建一个工程,你应该做的第一件事就是建立代码库,这是最重要的。进入该库项目的所有资源,都只需要更新一次(编码语言的本地化的字符串,颜色文件,固定在共享代码的错误),从而提高你的开发效率,并且能减少一些能够避免的可能性错误。

注意:如何创建库项目及库项目本身的实施细节已经超出了本节课的范围,你可以从下面的链接去了解它

?用Eclipse建立一个库项目

?用命令行建立一个库项目

如果你将现有的应用程序转换成用多个APK支持的项目,整理你的代码中的每一个本地话的字符串文件,列表的值,颜色资源,菜单图表和布局,使他们在多个APK之间不受影响,并把它们全放进库项目中。那些不会发生太大变化的代码也应放入库项目中。你可能会发现自己可以在两个APK之间扩展这些类来增加一个或多个方法。另一方面,如果你要从头开始创建应用程序,尝试尽可能的先编写库项目中的代码,如果需要的话,只要把它移动到一个单独的APK中。这比你在多个APK中添加它,甚至在数月后试图找出这一团糟似的代码是否可被移动到库项目部分从长远看来更容易管理。

创建一个新的APK项目

首先你要有个供每个APK释放的单独的Android项目。为了便于组织,得把库项目和所有相关的APK项目放在相同的父文件夹下。要记住每个APK需要有相同的包名,虽然他们并不一定需要与库共享包名。按照前面描述的方案,如果你有三个应用程序,你的根目录可能看起来要像这样:

一旦项目被创建了后,就要添加库项目作为每个APK项目的参考。如果可能的话,在库项目中定义你的启动Activity,并在你的APK项目中扩展这个Activity。一个在库项目中的被定义的启动Activity能把你所有的应用程序在一个地方初始化,这样一来,每个单独的AP K就不需要重新实现“通用的”任务,如初始化Analytic(分析),运行许可检查,以及在两个APK之间不会发生太大变化的初始化程序。

调整Manifests文件

当用户从Google Play下载一个使用多重APK的应用程序时,用下面两个简单的规则可判别用哪个APK是正确的:

?从Manifest中可看出,比较特殊的APK是合格的

?在合格的APK中,我们选择高版本的APK

?如果在市场中,某个设备支持你的APK中列出的一些纹理格式,那么这个设备也被认为是合格的

对GL Textures来说,最后一条规则是很重要的。举例来说,这意味着你应谨慎的在相同的应用程序中使用不同GL格式。如果你使用PowerVR占了99%的时间,但是用了ETC1后,说,你的启动画面...你的Manifest将需要明确支持这两种格式。只支持ETC1格式的设备被视为兼容性的设备,你的应用程序被下载后,用户将会看到一些令人崩溃的信息。常见的情况是,如果你使用特殊的多重APKs以针对支持GL纹理基础上的不同设备,这将是每一个APK 的纹理格式。

这实际上使得纹理比其他两个多重APK尺寸支持的API版本和屏幕尺寸有点不同。任何给定的设备都只有一个API版本和一个屏幕尺寸,在这个设备上安装的APK需要支持在这个范围内的API版本和屏幕尺寸。在一台设备所支持的许多APKs而言,经常会出现重复的,解决的办法是一样的,那就是版本代码。

举例来说,我们有一些设备,来看看有多少前面定义的APKs都适合每一台设备.

假设在PowerVR、ATI、ETC1都可用时,PowerVR与ATI格式都优于ETC1格式,通过“选择高版本APK”的规则,如果我们给每个APK设置versionCode属性,如红 >= 绿 >= 蓝,在都支持这些APK的设备上面,比起蓝色的APK,红色和绿色的APK将会一直被选择使用,并且在都支持红色和绿色APK的设备里,红色将会被选中。

你要有一个良好的版本代码计划,以使你所有的应用程序在不同的“轨道”。你可以在开发者指南的Version Codes区找到一个推荐的版本代码计划。由于设置的APKs只能处理三种可能的外形尺寸,我们个可以把每一个APK分隔1000,并且从起始开始递增,这样也足够处理。就像下面这样:

蓝色:1001,1002,1003,1004...

绿色:2001,2002,2003,2004...

红色:3001,3002,3003,3005...

把所有这些放在一起,你的Android程序的Manifests看起来将会像这样:

蓝色:

绿色:

红色:

在把APK上传到Google Play前,再仔细检查一下几项。切记,这几点是专门为多重APKs 准备的,并不能代表所有将要上传到Google Play的应用程序的一个完整检查列表

?所有的APKs都必须要有相同的包名

?所有的APKs都必须签署相同的证书

?在Manifest中把你的APK想要支持的屏幕尺寸设置为true,把不支持的屏幕尺寸设置为false

?仔细检查你的Manifest文件有没有相互冲突的矛盾信息(在xlarge的屏幕尺寸上仅支持cupcake的APK是不可见的)

?每个APK的Manifest文件必须是唯一的,至少要有一个支持的屏幕尺寸、OpenGL纹理、或者是平台版本

?至少在一个移动设备上测试每一个APK。除此之外,在你的开发机之中还有一个能够自定义的设备,那就是模拟器。现在,开始行动吧!

另外,在把应用程序推广以前你还要检查编译APK,以确保把你的应用程序放到Google Pl ay后不会出现任何问题。实际上,使用“AAPT”工具会让这些变的相当简单。AAPT(Andro id的资源打包工具)是创建和打包您的Android应用程序的构建过程的一部分,也是一个非常有用的检查工具。

在你检查AAPT输出时,一定要确保在多屏幕支持与多屏幕兼容中没有相互冲突的值,这样就不会有你没在Manifest文件中设置的“uses-feature”值出现。上面的例子在一部分设备中,APK的一大部分是不可见的。

为什么会这样呢?因为通过添加所需的SEND_SMS权限,android. hardware.telephony功能会隐式添加。由于大多数(如果不是全部)的xlarge设备是没有电话硬件的平板电脑,Google Play会过滤掉这种情况下的APK,直到有电话硬件的xlarge设备出现。

我们可以通过添加以下代码到Manifest文件中来处理这个问题:

在完成了登录前的核查后,把你的APKs上传到Google Play。浏览Google Play显示这个应用程序可能需要一点时间,当它显示后,执行最后一项检查。将这个应用程序下载到任何一个测试设备上,你要确认这些APKs是针对我们要开发的预期设备。祝贺你完成了!

文章来源:https://www.doczj.com/doc/6b7621759.html,/page/Creating_Multiple_APKs_for_Different_GL_Textures

相关主题
文本预览
相关文档 最新文档