守望者--AIR技术交流

标题: Android 应用检测和自动更新ANE [打印本页]

作者: 破晓    时间: 2015-1-11 22:37
标题: Android 应用检测和自动更新ANE
anelist 的愿望列表里有很多人投票希望可以有自动更新的ANE,碰巧公司的产品也需要这个,所以就写了一个简单的,如果大家有进一步的需求,会逐渐完善

注:由于论坛不允许上传ANE类型的文件,所以zip压缩了一下,由于是在macos下压缩的,不确定windows用户是否可以使用,如果有问题请回帖


点我下载

路线图:
1、完善教程
2、允许定制自动更新的UI
3、允许通过DownloadManager在后台下载
4、开源并发布至GitHub




1、教程:1.1、下载ane,使用flashbuilder4.6导入,不赘述
1.2、在AIR Android工程中编写以下代码:
  1. var updater:AppUpdater = new AppUpdater();
  2. updater.onContinue = onContinue;
  3. updater.checkUpdate(new GameVersionChecker());
复制代码
1.3、创建类 GameVersionChecker,继承自AppVersionChecker
  1. package com.IsMole.appupdatertest
  2. {
  3.         
  4.         import flash.desktop.NativeApplication;
  5.         import flash.events.Event;
  6.         import flash.net.URLLoader;
  7.         import flash.net.URLLoaderDataFormat;
  8.         import flash.net.URLRequest;
  9.         
  10.         public class GameVersionChecker extends AppVersionChecker
  11.         {
  12.                 public static var versionPrifixURL:String = "http://yourwebsite/"
  13.                
  14.                 public function GameVersionChecker()
  15.                 {
  16.                         super();
  17.                 }
  18.                
  19.                 //当updater类运行checkUpdate()方法之后,会委托这个类执行,在这里编写具体的业务逻辑,查询游戏的最新版本号
  20.                 public override function checkUpdate():void
  21.                 {
  22.                         var urlLoader:URLLoader = new URLLoader();
  23.                         urlLoader.dataFormat = URLLoaderDataFormat.TEXT;
  24.                         var request:URLRequest = new URLRequest(versionPrifixURL + "version.xml");
  25.                         urlLoader.addEventListener(Event.COMPLETE,onCompleteHandler);
  26.                         urlLoader.load(request);
  27.                 }
  28.                
  29.                 private function onCompleteHandler(event:Event):void
  30.                 {
  31.                         var data:String = event.target.data.toString();
  32.                         var xml:XML = new XML(data);
  33.                         
  34.                         //服务器版本号
  35.                         var serverVersion:String = xml.version;
  36.                         //apk安装路径
  37.                         var apkPath:String = xml.apkPath;
  38.                         
  39.                         //应用id
  40.                         var appXML:XML = NativeApplication.nativeApplication.applicationDescriptor;
  41.                         var ns:Namespace = appXML.namespace();
  42.                         var appId:String = appXML.ns::id;
  43.                
  44.                         if (needUpdate(serverVersion))//基类方法,根据serverVersion和ClientVersion判断是否需要更新
  45.                         {
  46.                                 startUpdate(appId,versionPrifixURL + apkPath);
  47.                         }
  48.                         else
  49.                         {
  50.                                 continueGame();
  51.                         }
  52.                 }
  53.                
  54.                
  55.         }
  56. }
复制代码
1.4 在服务器上提交version.xml 文件
  1. <application>
  2.         <version>1.0.1</version>
  3.         <apkPath>your-apk.apk</apkPath>
  4. </application>
复制代码
1.5 打包应用,当你的应用版本号(在 -app.xml里的versionNumber属性)小于1.0.1时,就会弹出自动更新的面板,并自动安装


本文来自:http://bbs.9ria.com/thread-184819-1-1.html

本站链接:Android 应用检测和自动更新ANE





欢迎光临 守望者--AIR技术交流 (http://www.airmyth.com/)