APK Expansion Files调查笔记

简介: 最近在调查APK Expansion Files的使用方法,在此过程中遇到不少问题,在此做一个总结 重要参考资料:   http://developer.

最近在调查APK Expansion Files的使用方法,在此过程中遇到不少问题,在此做一个总结

重要参考资料:

  http://developer.android.com/google/play/expansion-files.html
  http://blog.chengyunfeng.com/?p=342
  http://yunfeng.sinaapp.com/?p=343#ixzz1oKclZQjT
  http://blog.csdn.net/tonyfield/article/details/11739035
  http://android-developers.blogspot.com/2012/03/android-apps-break-50mb-barrier.html
  http://www.iteye.com/news/24446

  Thank you very much


利用官方示例测试时候需要修改的地方
1 程序的包名即manifest中的package.否则无法上传
2 将SampleDownloaderService中的BASE64_PUBLIC_KEY替换为自己的
3 将org.goodev.expansion.downloader.SampleDownloaderActivity中的xAPKS
  修改为自己的.注意此处的大小请以本地obb文件大小为准.不要以上传Google play
  后网页显示的obb大小为准

 


Bug描述及其修改:

1 在运行示例代码时程序崩溃,发现是mRemoteService为空,服务没有启动
  以下资料亦提到该问题但是没有给出解答
  http://stackoverflow.com/questions/17706064/expansion-file-download-feature-not-working
  http://www.techques.com/question/1-10591136/onServiceConnected-sometimes-not-called-after-bindService-on-some-devices
  http://qnundrum.com/answer.php?q=81809
  http://stackoverflow.com/questions/18847294/onserviceconnected-never-called-in-android-with-apk-expansion-files
  http://android.win8usa.com/question-39147/apk-expansion-file-and-bindservice-if-false.html
  https://devnet.madewithmarmalade.com/questions/10612/apk-expansion-realization.html

  解决方式:
  在DownloaderClientMarshaller类中
  即com.google.android.vending.expansion.downloader.DownloaderClientMarshaller类中的
  public void connect(Context c)()方法中:
  应该使用if ( !c.bindService(bindIntent, mConnection, Context.BIND_AUTO_CREATE) )
  而不是:
  if ( !c.bindService(bindIntent, mConnection, Context.BIND_DEBUG_UNBIND) )


2 在修改以上bug后程序不会崩溃,但是没有执行下载.
  发现APK Expansion Files中的几个服务均只执行了create()却没有执行commandStart()

  解决办法:
  http://www.nowherenearithaca.com/2012/03/android-apk-expansion-files-how-to.html

  Thank you very much

  具体代码:
  在方法:
  com.google.android.vending.expansion.downloader.impl.DownloaderService.startDownloadServiceIfRequired()
  应该把:
  String packageName = serviceClass.getPackage().getName();
  改成
  String packageName =   context.getPackageName();

 


其余问题:
1 设备需要支持谷歌服务,比如你采用国产的oppo手机运行时会产生证书问题
2 第一次上传apk的时候是无法上传obb文件的.只有在第二次及其以后上传apk
  时才有上传obb文件的选项.
  参考资料:
  http://stackoverflow.com/questions/15109191/how-to-upload-apk-expansion-files-in-new-developer-console
  http://blog.csdn.net/tonyfield/article/details/11739035
3 上传obb文件不能立马测试.需要等待一段时间

 

残留问题:
通过以上的准备和修改已经可以下载obb文件,但是进度条等UI信息的显示不正常.

参考资料:
1 http://stackoverflow.com/questions/13826001/android-expansion-file-wont-trigger-ondownloadstatechanged
2 http://arora-janu1991.blogspot.com/2013/09/apk-expansion-files-testing-sample.html
3 http://code.google.com/p/android/issues/detail?id=29554&q=APK%20Expansion%20Files&colspec=ID Type Status Owner Summary Stars
4 http://stackoverflow.com/questions/9807048/download-expansion-files-on-tablet
5 http://code.google.com/p/android/issues/detail?id=27953&q=APK%20Expansion%20Files&colspec=ID Type Status Owner Summary Stars
  Thank you very much
改问题还未解决,需要进一步的调查.


关于APK Expansion Files的其余疑似bug和问题可以参阅:
http://code.google.com/p/android/issues/detail?id=30767

相关文章
|
Android开发
APK Expansion Files使用文档
应用场景 当应用程序超过50M时,可以采用谷歌官方提供的APK Expansion Files.在Market控制台上传App时,可将多余的数据添加为扩展文件.
1500 0
|
8月前
|
Android开发 开发者
Android Split APK介绍
【2月更文挑战第5天】
|
数据安全/隐私保护 Android开发
Android bundetool 转换 .aab 为apk 步骤
Android bundetool 转换 .aab 为apk 步骤
645 0
Android bundetool 转换 .aab 为apk 步骤
|
SQL 人工智能 算法
Android性能优化之应用瘦身(APK瘦身)
Android性能优化之应用瘦身(APK瘦身)
|
8月前
|
XML API Android开发
android S 上 安装apk出现android.os.FileUriExposedException
android S 上 安装apk出现android.os.FileUriExposedException
112 6
|
7月前
|
Android开发
Android Gradle开发—脚本实现自动打包后复制一份APK文件,并修改APK名称,到指定目录作备份
Android Gradle开发—脚本实现自动打包后复制一份APK文件,并修改APK名称,到指定目录作备份
403 0
|
8月前
|
设计模式 缓存 Java
补齐Android技能树——从AGP构建过程到APK打包过程,安卓rxjava面试
补齐Android技能树——从AGP构建过程到APK打包过程,安卓rxjava面试
|
8月前
|
XML 存储 开发工具
Android Studio如何将APK下载
【5月更文挑战第16天】
135 0
|
Android开发
Android PackageManagerService源码分析和APK安装原理详解
Android PackageManagerService源码分析和APK安装原理详解
553 1
|
8月前
|
XML Dart Java
Flutter插件开发之APK自动安装,字节跳动Android岗面试题
Flutter插件开发之APK自动安装,字节跳动Android岗面试题

热门文章

最新文章