之前一直用友盟的自动更新功能,但是友盟一直没有内置实现强制更新的功能,如果要在其基础上模拟实现会很麻烦,所以干脆就自己做了。

其实实现上比较简单,这里跟大家介绍下。

1. web接口

需要提供一个接口供客户端查询更新状态,并且在需要更新时,告知客户端新APK地址。

接口参数如下:

  • package   包名,因为有时候会出现同一个应用换包名打包的情况
  • version 版本号,即android清单文件里面的versionCode
  • channel 渠道号
  • os 操作系统,android/ios。ios 这里仅作预留。

 

之所以传入这些字段,是要在与服务器端的包匹配时,务必满足:

package, channel, os 相等,并且服务器端的version 大于 客户端传入的version

代码如下:

 

2. 数据库设计

由于web端使用的是django,所以可以很方便的给出运营同学可以操作的后台界面,如下:

NewImage

注意红框内的元素,运营同学在上传时,是不允许修改的,而是由程序自动解析APK文件得到后填入的。

具体的解析方法,我们稍后给出。

而对应的models代码如下:

 

3. APK文件解析

 

当然,正如大家所看到的,我们需要依赖于 apktool.jar 这个文件,具体大家可以在网上下载。

 

ok,整个就是这样。

暂无相关产品

6则回应给“安卓应用自动更新功能实现方案”

  1. 在线工具说道:

    这个不是android热更,只是做新版本提醒是吧?

    [回复]

    朱念洋 回复:

    对的,这个不是热更新,是整个替换APK

    [回复]

  2. 风满楼i说道:

    通过apktool反编译获得AndroidManifest.xml文件,然后提取出其中的包名和版本号。Python确实好用简洁!

    [回复]

    朱念洋 回复:

    是的,哈哈

    [回复]

  3. 3G微博说道:

    这个文章写的好,转走了! 欢迎回访:http://www.3gwb.com

    [回复]

  4. 3G微博说道:

    这个文章写的好,转走了! 欢迎回访:http://www.3gwb.com

    [回复]

发表评论