读书人

怎么使用APK扩展文件

发布时间: 2012-06-29 15:48:46 作者: rapoo

如何使用APK扩展文件

要在App中使用扩展文件,需要两个附加的Android库项目:
Google Market Licensing package
Google Market APK Expansion Library package
可以通过Android SDK Manager来下载,也可以直接通过如下链接下载:
https://dl-ssl.google.com/android/repository/market_licensing-r02.zip
https://dl-ssl.google.com/android/repository/market_apk_expansion-r01.zip

下载完成后使用market_licensing-r02.zip文件中的目录google_market_licensing\library来创建一个库项目;然后使用market_apk_expansion-r01.zip中的google_market_apk_expansion\downloader_library来创建另外一个库项目。同时为了简化对ZIP格式扩展文件的处理,在market_apk_expansion-r01.zip文件中还包含了一个对ZIP文件处理的库项目:google_market_apk_expansion\zip_file。 如果您使用的扩展文件格式是ZIP,那么也可以创建这个库项目。

声明需要的权限

您可以在开始下载的时候,把扩展文件的版本号保存到 SharedPreferences 中,然后在这里使用。

使用 APK Expansion Zip Library

APK Expansion Zip Library项目包含了对ZIP文件的处理,您可以通过该项目提供的函数来直接读取ZIP文件内容而不用解压缩扩展文件。
APK Expansion Zip Library项目包含如下类和函数:
APKExpansionSupport
提供一些函数来访问扩展文件名称和ZIP文件。

getAPKExpansionFiles()
返回扩展文件的文件路径

getAPKExpansionZipFile(Context ctx, int mainVersion, int patchVersion)
返回一个包含main扩展文件和patch扩展文件的ZipResourceFile。如果您同时提供了 mainVersion 和 patchVersion ,则该函数返回main和patch扩展文件的所有内容,如果patch中的内容和main中的有重复,则使用patch的内容覆盖main中的内容。

ZipResourceFile
用来处理ZIP文件的类
getInputStream(String assetPath)
读取ZIP文件中的具体文件,assetPath应该是相对于ZIP文件的路径信息

getAssetFileDescriptor(String assetPath)
获取ZIP文件中具体文件的 AssetFileDescriptor 信息。

APEZProvider
大多数的程序都不会用到这个类。具体情况请参考其文档。

测试扩展文件

在发布之前要测试两个东东,下载文件和读取文件。

测试读取文件
在发布您的程序之前应该先测试下您的程序能否读取扩展文件,测试很简单,只要把扩展文件放到共享存储区的特殊位置,然后启动程序即可。
1.创建文件目录:
如果程序的包名为org.goodev,就创建如下的目录:Android/obb/org.goodev/
2.把扩展文件添加到该目录
如果程序的包名为org.goodev,则主扩展文件名如下:main.03.org.goodev.obb。 版本号可以为大于零的任意值。

3.现在可以启动程序来测试读取扩展文件的功能了。

测试下载文件
由于在某些情况下需要在程序第一次使用的时候手工下载扩展文件。所以需要测试来确保您的程序可以成功的获取下载URL、下载文件并且保存到设备中。

您可以把程序上传到Market,同时上传扩展文件,然后不要发布程序。这样扩展文件已经可以从Market下载了。 当你测试完成后再发布您的程序。

更新程序

使用扩展文件的一大好处就是每次更新App 用户不用重新下载几十上百兆的数据文件了。Android Market让你可以为每个APK提供两个扩展文件,这样可以避免每次更新App都重新下载主扩展文件数据,减少下载时间。

为了方便大家研究如下使用扩展文件,可以到这里下载示例项目代码:
http://code.google.com/p/goodev-demo-code/downloads/list
文件名:Market_Downloader_Sample.zip 里面包含了所需要的各种库项目。 在Eclipse中导入即可使用。



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

读书人网 >移动开发

热点推荐