`
icess
  • 浏览: 252713 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

APK扩展文件

阅读更多

Android平台每个APK文件的最大限制是50MB。如果您的程序中包含大量的数据文件,以前您只能把这些数据文件放到自己的服务器上,当用户启动程序的时候让用户去下载。现在这些数据文件可以直接上传到Android Market了。在新的Market控制台上传App的时候,可以添加扩展文件了。

下面就来看看什么时候该使用扩展文件,该如何使用?

每个APK可以有2个扩展文件,每个文件最大限制是2GB。为了减少用户的带宽消耗,最好使用压缩格式文件吧。 这两扩展文件具有不同的用途:
第一个被称为 main (主)扩展文件,该扩展文件保护您程序中需要用到的附加数据;
第二个被称为 patch 扩展(修补)文件,该文件是可选的,并且应该只包含一些不同版本的补丁数据。

当然您可以按照您需要的方式来使用这两个扩展文件,不过Android官方还是推荐把这两个文件的功能分开。main扩展文件包含核心数据,并且尽量不随程序版本的升级去修改;而patch扩展文件可以随程序版本的升级做修改。为了帮助大家理解具体的含义,我们使用一个地图App来解释下:
比如 Google 地图程序需要包含一个离线地图数据包,这样可以方便用户离线查看地图,在程序发布的时候,可以把现有的离线数据包作为main扩展文件上传到Market。 然后过了半年Google地图更新了,新添加了一些刚刚修好的高速公路、新建立的商场 等信息,可以把这些新增的信息作为patch扩展文件使用。 这样Google 地图 1.0版本对应一个main扩展文件;而Google地图1.1版本对应一个main扩展文件和一个1.1版本的patch扩展文件;Google地图1.2版本对应一个main扩展文件和一个1.2版本的patch扩展文件。 这里面的main扩展文件是同一个文件而patch扩文件是随版本变化的。
这样的好处就是当程序升级的时候, 用户不用重新下载main扩展文件了,只需要下载少量的新增文件即可,节省用户流量。

扩展文件的命名格式

扩展文件可以使用任何文件格式(ZIP, PDF, MP4, 等)。不管任何文件格式Android都认为他们是obb(opaque binary blobs)文件,并且会根据如下文件命名规则来重命名扩展文件:
[main|patch].<expansion-version>.<package-name>.obb

main or patch
指定文件是main扩展文件还是patch扩展文件,每个APK只能有一个main扩展文件和一个patch扩展文件。

<expansion-version>
和第一次上传该扩展文件的APK文件的android:versionCode一致。后续版本的APK可以重用前面上传的扩展文件。
您程序的Java包名

<package-name>
例如程序的版本为5,程序的包名为org.goodev.expansion.downloader。则上传的main扩展文件会被重命名为:
main.5.org.goodev.expansion.downloader.obb

扩展文件的保存位置

当Android Market下载程序的扩展文件的时候会保存到系统的共享存储区。为了确保程序正常运行,您不能删除、移动或者重命名扩展文件。在某些设备上Market无法自动下载该扩展文件,那么您应该在程序启动的时候去下载该文件并且保存到同样的位置。
扩展文件保存位置如下:
<shared-storage>/Android/obb/<package-name>/

<shared-storage> 代表共享文件的目录路径,通过函数getExternalStorageDirectory()获取;
<package-name> APK的Java包名。
对于每个App而言,该目录下最多只能包含2个扩展文件。一个是main扩展文件另外一个是patch扩展文件。当更新程序的时候,如果有新的扩展文件则新文件会覆盖旧的扩展文件。

如果您需要解压缩扩展文件来使用,请注意不要删除该.obb文件,并且也不要把文件解压缩到该目录。您应该把解压缩后的文件保存到getExternalFilesDir()返回的目录下面。如果有可能的话,最好使用程序能直接读取的文件格式而不用再次解压缩文件了。Android开发团队提供了一个项目( APK Expansion Zip Library)可以直接读取ZIP文件中的内容而不用解压缩该文件.
需要注意的是:保存在系统共享存储区的文件,用户和其他APP也可以访问。

下载扩展文件的流程

在大多数情况下,Market会在下载APK的同时去下载扩展文件。然而,在某些情况下Market无法下载扩展文件或者用户删除了以前下载的扩展文件,您的程序需要处理这种异常情况。当您的程序启动的时候,可以检测文件是否存在并且可以从Market上下载。

开发者检查清单

您可以通过下面的清单来检查是否需要使用扩展文件

  • 1. 您的程序是否真的需要超过50MB的大小限制。在移动设备上空间是非常宝贵的,您应该尽可能减少App的大小。如果您仅仅是为了提供支持多种显示设备的图片资源的话,可以考虑使用发布多个APK的方式来减少每个APK的大小。
  • 2.判断哪些数据需要打包为扩展文件发布。
  • 3.在程序中添加访问共享存储区中扩展文件的代码
  • 4.在程序的启动Activity中添加检测扩展文件是否存在,以及下载扩展文件的代码

扩展文件的规则和限制

  • 1.每个扩展文件最大为2GB
  • 2.用户必需要从Android Market获取您的程序才能自动从Market中下载扩展文件
  • 3.当在您的程序中下载扩展文件的时候,Market每次都会为每个文件生成一个唯一的下载URL,该URL会在短期内失效。
  • 4.当你上传一个新的APK的时候,可以选择使用以前上传的扩展文件
  • 5.如果您使用多个APK文件来适配不同的设备,并且也希望使用多个扩展文件。为了获取一个唯一的versionCode和不同的Market filter, 您需要分别为每个设备上传不同的APK文件。
  • 6. 不能通过更新扩展文件来发布一个新的版本。
  • 7. 不要在obb/文件夹中保存其他数据
  • 8.不要删除或者重命名.obb文件

在下一篇文章中 将通过一个示例介绍如何在程序中使用扩展文件。



原文转载自 云在千峰:http://yunfeng.sinaapp.com/?p=342#ixzz1oKcXtA2c

0
0
分享到:
评论

相关推荐

    phonegap-xapkreader:Cordova插件可访问APK扩展文件中的文件

    Cordova插件可访问Cordova / Phonegap Android应用程序的APK扩展文件中的文件。 该插件是此处所述过程的实现: 安装 该插件使用Cordova CLI的plugin命令。 要将其安装到您的应用程序中,只需执行以下命令(并替换...

    s3eAndroidXAPK:Marmalade 扩展有助于处理 Android APK 扩展文件

    s3eAndroidXAPK是Marmalade框架的一个扩展,专为处理Android的APK扩展文件而设计。Marmalade是一个强大的跨平台开发工具,允许开发者使用C++语言编写代码,一次编写,多平台运行,包括iOS、Android、Windows等。s3...

    GoogleApkExpansionFileForMarmalade:将 Google Apk 扩展文件(主要和补丁 Obb)与 Marmalade SDK 结合使用

    ================================== GoogleApkExpansionFileForMarmalade 带有 Marmalade SDK 的 Google Apk 扩展文件(主要和补丁 obb) 该扩展程序同时使用了 Google Play 下载器库和 Google Play 许可库及其所有...

    安卓开发认证

    在这个过程中,离线安装SDK的认证是一个关键环节,特别是对于大型应用或游戏,可能需要使用到APK扩展文件。 首先,我们要理解Android SDK(Software Development Kit),它是开发者构建、测试和发布Android应用的...

    windows apk文件图标

    安装这个组件后,用户可以在文件浏览器中看到APK文件的图形表示,而不仅仅是纯文本文件扩展名。 然而,当系统中同时安装了多个管理Android应用的工具,如91助手,可能会出现文件关联冲突的问题。这些工具往往也会...

    apk文件编辑器

    这款工具提供了对APK文件的内部结构进行查看、修改和打包的能力,极大地扩展了开发者和高级用户的操作空间。 首先,我们要理解APK文件的结构。一个APK文件包含了应用的代码(Dalvik字节码)、资源文件(如图片、...

    ApkShellExt_v2.1(显示APK真实图标)——Android安卓

    如何使用APK扩展 ---安装--- 下载download里面的最新压缩包apkshellext_v2_1.zip 解压缩到安全的地方,卸载这个扩展前将不能移动也不能删除 ,注意要用winrar解压,我用自带的zip管理器解压出来的用不了,安装路径下...

    app inventor资源包括:源码文件、扩展和使用app inventor开发的apk

    当你在 App Inventor 中完成一个项目并测试无误后,可以将其编译成 APK 文件,然后安装在 Android 设备上进行实际运行。APK 文件包含了应用的所有组件,如代码、资源、图标等,是发布和分发 Android 应用的标准方式...

    APK文件批量一键签名工具包

    在Android开发过程中,APK文件是应用程序的安装包,它包含了所有运行在Android设备上的应用代码、资源和元数据。然而,在将APK发布到Google Play或其他第三方应用市场之前,或者在某些系统环境下安装APK时,都需要对...

    apk.rar_.apk_android_android apk_apk

    在标签中,".apk android android_apk apk"进一步强调了这个主题,其中".apk"是文件扩展名,"android"指的是Android操作系统,"android_apk"可能是对Android平台上APK文件的特有提及,而"apk"则是再次强调这是个APK...

    Apk.1安装器 1.9版本

    通常,微信在接收到APK文件时,会将其重命名为apk.1或者其他非标准的APK扩展名,以防止直接在聊天界面内安装未知来源的应用,这是一项安全措施,旨在保护用户的设备免受恶意软件的侵害。但这个行为也给正常分享和...

    APK文件简易汉化教程

    2. **汉化资源文件**:主要针对扩展名为.ARSC的文件进行汉化,该文件包含了应用的字符串资源。 3. **使用汉化工具进行编辑**:利用专门的汉化工具(如AndroidResEdit或汉化狂人)打开ARSC文件,并进行文本的翻译。 4...

    安卓系统APK文件安装器

    总的来说,【安卓系统APK文件安装器】是Android生态系统的一个重要组成部分,它扩展了用户获取和安装应用的方式。然而,用户在使用时应始终保持警惕,只从可信赖的源下载APK,以保护设备和个人信息安全。同时,理解...

    Android-parseApk是一个APK信息文件提取工具

    通过阅读源代码,开发者可以更深入地理解APK的解析原理,甚至可以根据自己的需求进行二次开发,扩展工具的功能。 总的来说,`parseApk`是一个强大的APK信息提取工具,它为开发者提供了洞察APK内部结构的能力,无论...

    APK文件关联器,支持Ophone

    .exe是Windows平台上的可执行文件扩展名,用户只需双击这个文件,就能启动APK安装器。这个程序可能包含了解析APK、处理权限、安装应用以及可能的依赖管理等核心功能。 在深入理解APK文件关联器的工作原理时,我们...

    DELPHI XE 查看APK版本号等信息

    这个标题"DELPHI XE 查看APK版本号等信息"指的是利用Embarcadero Delphi XE这款强大的编程环境,来编写程序以获取APK文件的元数据,包括版本号。描述中提到,由于网上缺乏此类资源,作者自行研发并愿意分享,这体现...

    XposeInstaller.apk文件

    【XposeInstaller.apk文件详解】 XposeInstaller.apk 是一个与Xposed框架相关的应用程序,它主要用于在Android设备上安装和管理Xposed框架。Xposed框架是一个强大的工具,允许用户在系统层面上对Android系统进行...

    安卓插件机制相关-apk静态分析器一个演示分析apk文件信息的demo.zip

    【标题】"安卓插件机制相关-apk静态分析器一个演示分析apk文件信息的demo.zip"涉及的知识点主要集中在Android应用程序的插件化开发和apk文件的静态分析上。插件化开发是一种允许主应用程序在运行时动态加载和卸载...

    安卓文件下载上传解压相关-载一个apk文件然后当你下载完成后按钮的文字发生改变变成点击安装然后安装完成之后变成打开.rar

    在安卓平台上,文件的下载、上传和解压是常见的操作,尤其对于APK(Android应用程序包)文件,用户经常需要下载并安装它们来扩展手机的功能。这个标题和描述提到的场景涉及了Android开发中的几个关键知识点,包括...

    java实现解析APK

    实际项目中,你可能需要根据具体需求扩展解析逻辑,以获取更丰富的APK信息。 总之,通过Java调用AAPT,我们可以高效且安全地解析任何APK,无论它是否被加密或加壳。这种方式比直接解析ZIP文件更灵活,能够应对各种...

Global site tag (gtag.js) - Google Analytics