`
icess
  • 浏览: 248216 次
  • 性别: 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 扩展文件。

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

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

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

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

    APK文件简易汉化教程

    2.然后,解压后,我们就可以开始汉化了,一般APK文件只需要汉化解压后得到的扩展名为.ARSC的文件,即可! 3.接着,用ARSC文件汉化工具将其打开,之后就可以在汉化工具里进行汉化了。汉化后的文件不会对APK程序运行做...

    APK Downloader-1.2.1.zip

    概述:在线从Google Play 下载APK & OBB文件。 描述: 在线从GooglePlay下载APK&amp;OBB文件。 扩展非常易于使用: ✓步骤1:查找要从GooglePlayStoreWebHttps://play.google.com/store/apps下载的应用程序 ✓步骤2...

    APKHelper.7z

    在Windows上快捷查看APK信息(签名,包名,权限,MinSDK, TargetSDK, 文件大小, MD5,logo等等),方便比较查看APK信息.支持关联APK扩展名

    IIS 服务器下载apk文件报404错误的解决方法

    最近在使用IIS作为服务器的时候,apk文件已经上传到服务器上去了,但是无法下载,报404错误(没有找到)...也可以这样增加:文件扩展名:.apk MIME类型:application/vnd.android.package-archive 最后测试,问题解决。

    nginx不支持apk ipa文件下载的设置方法

    .apk 和 .ipa分别是android应用和ios应用的扩展名。 如果在浏览器下载这些文件为后缀的文件时,会自动重命名为zip文件。 当然可以下载后手动修改后缀,依然可以安装。 如果想下载后缀直接就是apk ipa的,可以修改 /...

    QtAndroidTools:一个用于从QML管理Android的库

    ApkExpansionFiles 帮助管理APK扩展文件下载 应用权限允许以更简单的方式请求Android应用权限 AdMob横幅允许在QML应用内显示AdMob横幅 AdMobInterstitial 允许在QML应用中显示AdMob插页式广告 AdMobRewardedVideo ...

    IIS、Apache、Nginx下用IE下载apk文件变成zip的解决办法

    有时候我们下载安卓应用文件apk的时候,用IE浏览器下载,扩展名就被自动被重命名成了“xxx.zip”,拷贝到手机上无法安装。

    ZArchiver Donate 0.9.2.apk

    - 编辑档案:在档案中添加/删除文件(zip,7zip,tar,apk,mtz); - 创建和解压缩多部分档案:7z,rar(仅解压缩); - 部分档案减压; - 打开压缩文件; - 从邮件应用程序打开存档文件; - 提取拆分档案:7z,zip...

    unapkm-android:一个实用的应用程序,可将apkm文件转换为Android上的apk

    一个实用程序应用程序,可将apkm文件转换为Android上的apk。 目标: 用作实用程序将apkm转换为apks 为诸如App Manager之类的应用程序提供界面,可以使用该应用程序作为扩展 要使用该应用程序,请使用您最喜欢的...

    apkshellext_v2_1 在资源管理器显示apk图标

    #如何使用APK扩展 安装 下载download里面的最新压缩包apkshellext_v2_1.zip 解压缩到安全的地方,卸载这个扩展前将不能移动也不能删除 检查你是否安装了.net framework 4, 如果没有到这里下载 运行install.bat(64位...

    反编译Android的apk包得到源码

    1. 将要反编译的apk包改扩展名为zip(apk包实则为zip压缩包),解压zip文件; 2. 在解压出来的文件夹中会有个classes.dex文件(程序的二进制文件),然后cmd进入到dex2jar目录 我的测试程序包在"D:\Activity_Test" 中...

    X-Plore File Manager Pro 4.14.01.apk

    X-plore可以将SQLite数据库文件(具有.db扩展名的文件)显示为可扩展的表列表,每个表包含具有数据库条目的行和列的列表。 主要交互通过触摸屏完成,单击文件夹或文件以打开文件,或长按打开上下文菜单,其中包含可...

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

    app inventor

    PHP实现文件下载的代码

    PHP文件下载的函数,能扩展,一起学习进步吧!

    Solid_Explorer_Full_v2.7.16_build_200193.apk

    –扩展性:Google Play提供了单独插件中的更多功能 –索引搜索可在几秒钟内找到您的文件 –具有存储使用情况统计信息的详细文件信息 –批量重命名:使用正则表达式和变量一次更改多个文件的名称 –有用的工具:...

Global site tag (gtag.js) - Google Analytics