zoukankan      html  css  js  c++  java
  • 【实用篇】Android之应用程序实现自动更新功能

    我个人用的是友盟提供的自动更新组件,因此在这里只描述如何实用友盟提供的组件来完成程序的自动更新,步骤如下:

    1.登录友盟官网,点击注册一个友盟账号。

    2.注册成功后将会自动进入到添加新应用界面,选择添加你的应用,建立成功后,可以获得该App的AppKey(重要标识,请保存),以及最新的开发指南和SDK文件。

    3.在http://www.umeng.com/component_social点击上方的自动更新后选择示例,在弹出来的页面选择Android Demo App,点击Android组件SDK下载,在弹出来的界面中勾选自动更新并完成下载,下载的SDK中包含开发文档,demo程序和jar包(libs、res文件夹下的内容为自动更新所需要的)。

    4.将libs文件夹下的jar包拷贝到项目对应的文件夹下,并右键单击umeng_sdk.jar选择Built Path→Add to Build Path将jar包导入。

    5.将res文件夹下的内容拷贝到项目对应的文件夹下,其中values-zh为新增文件夹,直接拷贝进去即可。

    6.在AndroidManifest.xml中添加如下代码:

       ①.在AndroidManifest.xml中的Application标签内添加

    <meta-data  

    android:name="UMENG_APPKEY"

    android:value="放入你申请的AppKey" > 

    </meta-data>  

    <meta-data            

    android:name="UMENG_CHANNEL"            

    android:value="UMENG_CHANNEL" >        

    </meta-data>

    <service            

    android:name="com.umeng.common.net.DownloadingService"            

    android:exported="true"            

    android:process=":DownloadingService" >        

    </service>

    <activity
    android:name="com.umeng.update.UpdateDialogActivity"
    android:theme="@android:style/Theme.Translucent.NoTitleBar" >
    </activity>

    ②.在AndroidManifest.xml中为项目添加如下权限:

    <!-- 友盟Start -->
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
        <uses-permission android:name="android.permission.READ_PHONE_STATE" />
        <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.READ_LOGS" />
        <uses-permission android:name="android.permission.CALL_PHONE" />
     <!-- 友盟End -->
        <!-- Permission for Unit Test -->
        <uses-permission android:name="android.permission.GET_TASKS" />

    META-DATA 用途
    UMENG_APPKEY 用来定位该应用程序的唯一性。
    UMENG_CHANNEL 用来标注应用推广渠道,区分新用户的来源来查看统计,您可以使用20位以内的英文和数字为渠道定名,替换value中的"Channel ID"。详见渠道统计。
    权限 用途
    INTERNET(必须) 允许应用程序联网,以便向我们的服务器端发送数据。
    READ_PHONE_STATE(必须) 获取用户手机的IMEI,用来唯一的标识用户。(如果您的应用会运行在无法读取IMEI的平板上,我们会将mac地址作为用户的唯一标识,请添加权限: android.permission.ACCESS_WIFI_STATE )
    ACCESS_NETWORK_STATE 检测网络状态,友盟SDK 1.6版本新增权限。
    READ_LOGS 如果您想获得客户端crash的报告, 需要添加这个权限。具体见【使用错误报告】。
    WRITE_EXTERNAL_STORAGE 如果您使用了友盟自动更新提醒功能,需添加这个权限,为了将更新的APK临时存在SD卡里。

     7.在Activity的OnCreate方法中添加如下代码即可完成自动更新(如果开发者已经有了最新的APK版本,只要上传到友盟网站,同时客户端版本的版本号小于当前最新版本,客户端在启动时就会有更新提示,详情参考http://dev.umeng.com/doc/document_update_android.html,版本号在AndroidManifest.xml中的android:versionCode="1"定义,当你需要更新版本时,修改android:versionCode="1"中的数值后上传Apk文件到你的友盟账号即可(数值必须比原版本大)):

    /**
       * 设置自动更新Start
       */
      //如果想程序启动时自动检查是否需要更新, 把下面两行代码加在Activity 的onCreate()函数里。
      //默认在Wi-Fi接入情况下才进行自动提醒。
      UmengUpdateAgent.setUpdateOnlyWifi(false);
      UmengUpdateAgent.update(this);
      /**
       * 设置自动更新End
       */

    注:

    • 每次更新应用程序,您只需要修改VersionCode,把应用程序的apk文件上传到友盟。UmengUpdateAgent.update方法会判断是否有新版应用程序,如果发现可更新的应用程序安装包,会提示用户是否更新。用户选择更新后,安装包会在后台下载自动安装更新。(按照version code来检测是否需要更新)
    • 需要添加权限 android.permission.WRITE_EXTERNAL_STORAGE.
    • 考虑到用户流量的限制,目前我们默认在Wi-Fi接入情况下才进行自动提醒。如需要在其他网络环境下进行更新自动提醒,则请添加以下代码:UmengUpdateAgent.setUpdateOnlyWifi(false)。 特别提示:针对机顶盒等可能不支持或者没有无线网络的设备, 请同样添加上述代码。

    • 按渠道更新功能: 需要开发者在网站上按照渠道添加对应的更新包,渠道更新的规则是: SDK检测本地安装的软件对应的渠道,然后连接服务器检测更新,如果服务器上有对应渠道的更新包 则选择此更新包并返回提示,如果服务器上没有对应渠道的更新包但有默认的更新包,则选择默认的 更新包并返回提示,如果服务器上没有默认的更新包,但是有其他渠道的更新包,将不会有更新提醒。

    这是我在别的地方看到的一篇文章http://www.eoeandroid.com/thread-210005-1-1.html?_dsign=85ea5d0d,是关于Android 统计分析 SDK使用指南的,写的比较专业,希望能够帮助到你,如有疑问请留言。

    友盟官方文档:http://dev.umeng.com/auto-update/android/quick-start

  • 相关阅读:
    poj2976 Dropping tests (01分数规划)
    bzoj5281/luogu4377 Talent Show (01分数规划+背包dp)
    bzoj5280/luogu4376 MilkingOrder (二分答案+拓扑序)
    bzoj1492/luogu4027 货币兑换 (斜率优化+cdq分治)
    [模板]树状数组
    匿名函数 python
    yield解析你要知道的源自IBM
    stackoverflow yield 帖子
    pandas 生成器,生成大数据
    pd.contact,dataframe 拼接
  • 原文地址:https://www.cnblogs.com/tbcxy/p/3252825.html
Copyright © 2011-2022 走看看