【声明】

欢迎转载,但请保留文章原始出处→_→

生命壹号:http://www.cnblogs.com/smyhvae/

文章来源:http://www.cnblogs.com/smyhvae/p/4653736.html

一、下载SDK:
打开链接后,界面如下:
上图中,点开箭头处所示的位置,下载Android对应的版本:
 
上图中,单击红框部分下载SDK。
  
二、在友盟的后台注册应用:
上图中,单击红框部分,创建新的应用。
上图中,应用创建成功后,会生成AppKey,这就是我们后面要用到的。
 
二、在代码中进行配置:
现在开始看官方文档怎么说的,文档链接如下:http://dev.umeng.com/auto-update/android-doc/quick-start

1、导入SDK所需要的jar包:
将SDK中的libs文件夹合并到本地工程libs子目录下。
 
2、添加资源文件:
将SDK提供的res文件夹拷入工程目录下, 和工程本身res目录合并。提示:友盟SDK提供的资源文件都以umeng_开头。
 
3、配置AndroidManifest.xml:
3.1、打开AndroidManifest.xml,添加SDK需要的权限到<manifest>标签下:
 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>

上方代码中:第一行的权限是允许将下载的apk保存到sd卡中。第二行的权限是允许检查网络状态,从而根据不同网络环境决定何种下载策略,务必添加该权限。

 
3.2、紧接着,添加APPKEY和渠道到<application>标签下: (如果已经集成了统计SDK等友盟其他服务,不需要重复添加APPKEY)
<meta-data android:value="YOUR APP KEY" android:name="UMENG_APPKEY"/>
<meta-data android:value="Channel ID" android:name="UMENG_CHANNEL"/>

UMENG_APPKEY:用来定位该应用的唯一性,用您该应用的UMENG APPKEY,替换value中的"YOUR APP KEY"。

UMENG_CHANNEL:用来标注应用推广渠道,不同渠道可以上传不同更新包,您可以使用20位以内的英文和数字为渠道定名,替换value中的"Channel ID"。如果不改动,将代表默认渠道。(特别提示:如果需要使用友盟自动更新多渠道更新,必须先集成友盟统计SDK)
 
3.3、添加Service和Activity到<application>标签下:
<service
android:name="com.umeng.update.net.DownloadingService"
android:process=":DownloadingService" >
</service>
<activity
android:name="com.umeng.update.UpdateDialogActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar" >
</activity>
4、调用更新接口:
主要应用场景:
    最常见的是自动更新模式:当用户进入应用首页后,如果处于wifi环境则检测更新,如果有更新,弹出对话框提示有新版本,用户点选更新开始下载更新。
在应用程序入口Activity里的OnCreate() 方法中调用如下代码:
 public void onCreate(Bundle  savedInstanceState) {
super.onCreate(savedInstanceState);
UmengUpdateAgent.update(this);

即调用上方的第3行代码即可。

注意: 
    考虑到用户流量的限制,目前我们默认在Wi-Fi接入情况下才进行自动提醒。如需要在任意网络环境下都进行更新自动提醒,则请在update调用之前添加以下代码:UmengUpdateAgent.setUpdateOnlyWifi(false)。 特别提示:针对机顶盒等可能不支持或者没有无线网络的设备, 请同样添加上述代码。
 
5、集成监测:
v2.4版本以后的SDK中默认开启了集成检测功能,在调用任意的更新接口后,我们将替您自动检查上述集成过程中2、3两个步骤是否被正确完成。 如果正确完成不会出现任何提示,否则会以如下的toast提示你。
你可以通过调用UmengUpdateAgent.setUpdateCheckConfig(false)来禁用此功能。
toast的含义如下:
    "Please copy all resources (res/) from SDK to your project!":请检查是不是把res文件夹下所有的资源文件都放到了工程中。
    "Please add Permission in AndroidManifest!":请检查上述步骤1.3中3.1的相关权限是否正确添加。
    "Please add Activity in AndroidManifest!":请检查上述步骤1.3中3.3的Activity是否正确添加。
    "Please add Service in AndroidManifest!":请检查上述步骤1.3中3.3中的Service是否正确添加。
    "Please set umeng appkey!":请检查上述步骤3.2中的APPKEY是否正确添加。
 
三、上传最新的apk进行更新:
假设之前的版本号是1.0,如果你现在又开发出了新的版本,那么只要上传到友盟网站,同时新开发的版本号(VersionCode)要大于1.0,客户端在启动时就会有更新提示。
我们来实验一下。
上图中,先单击红框部分的“组件”,再单击红框部分的“自动更新”,就会出现上图中的文字提示了。我们尤其需要注意上图中的蓝框部分的文字。
 
我们先修改一下工程文件中的代码,将TextView的文本内容改为“乌拉拉,我是第二个版本哟”。
然后修改一下app这个module中的gradle文件,提高版本号。如下图所示:
上图中,更新红框部分的版本号即可。注意第11行的versionCode必须为整数哦。然后生成新版的apk。
 
然后打开友盟的后台:
上图中,将新版的apk上传,并填写更新日志。点击“确定”,弹出如下界面:
 
四、测试: 
v1.0版本的apk运行之后是下面的界面:
加入了自动更新功能之后,再打开程序,弹出了如下界面:
上图中,点击“自动更新”之后,界面如下:
更新完了之后,效果如下:
 

备注:
如果点击更新之后,出现的是如下界面:

上图的错误是因为,前后两个版本的apk用的是不同的签名导致的。
 
另外推荐一个连接大家看看:
友盟自动更新常见问题索引(开发者必读)http://bbs.umeng.com/thread-5924-1-1.html
 
【工程文件】
 
 
自己处理检测更新的结果:
意思是说,现在app中有个【检测更新】按钮,通过点击这个按钮来检测是否需要更新。那我们可以把下面这段代码放在按钮的监听事件中:
UmengUpdateAgent.setUpdateAutoPopup(false);
UmengUpdateAgent.setUpdateListener(new UmengUpdateListener() {
@Override
public void onUpdateReturned(int updateStatus, UpdateResponse updateInfo) {
switch (updateStatus) {
case UpdateStatus.Yes: // has update
UmengUpdateAgent.showUpdateDialog(UIUtils.getContext(), updateInfo);
break;
case UpdateStatus.No: // has no update
UIUtils.showToastSafe("当前已是最新版本");
break;
case UpdateStatus.NoneWifi: // none wifi
UIUtils.showToastSafe("没有wifi连接, 只在wifi下更新");
break;
case UpdateStatus.Timeout: // time out
UIUtils.showToastSafe("超时");
break;
}
}
});
UmengUpdateAgent.forceUpdate(this);
 
 
 
 
 

使用友盟进行apk的自动更新的更多相关文章

  1. 友盟消息推送和更新XML配置

    <receiver android:name="com.umeng.message.NotificationProxyBroadcastReceiver" android:e ...

  2. android使用友盟第三方自动更新/手动更新

    最近项目用到自动更新,发现一个方便快捷的第三方组件非常好用,只需要几行代码搞定,非常适合新手使用.分享给大家一起学习. 本文档帮助您以最快速最简洁的方式集成使用自动更新组件. 一.申请友盟开发者账号创 ...

  3. 【Android】友盟的自动更新组件

    前言 又好又专业的服务能帮开发者省很多时间.一开始做项目也准备自己来统计数据.自己做自动更新,随着使用友盟服务的时间增加,渐渐放弃了这种想法,转而研究如何更充分的使用,这里分享一下使用自动更新组件的心 ...

  4. Android 云服务器的搭建和友盟APP自动更新功能的实现

    setContentView(R.layout.activity_splash); //Bmob SDK初始化--只需要这一段代码即可完成初始化 //请到Bmob官网(http://www.bmob. ...

  5. Android友盟增量更新

    1.增量升级的原理 增量更新的原理就是将本地apk与服务器端最新版本比对,并得到差异包.比如现在的版本是1.1.4,大小是7.2M,新版本是1.1.5.大小是7.3M.我们发现两个版本只有0.1M的差 ...

  6. android-关于友盟的自动版本更新(面向小白)

    今天说一下关于友盟的自动版本更新(傻瓜式版本更新) 关于自动更新的话,如果让android程序猿自己写的话还是不是那么简单的(对于我这个菜鸟来说...),又要检查当前版本,又要在服务器存储新的版本,又 ...

  7. 友盟ionic多渠道自动签名app

    这几天公司的运营部门要求添加流量统计功能,集成了友盟的插件,中间遇到很多的问题,在这里说明记录一下,为遇到相同问题的朋友们减少麻烦 问题一.插件的使用直接将友盟sdk系在放置到项目根目录下plugin ...

  8. Android ant自动打包脚本:自动替换友盟渠道、版本号、包名

    本文最后修改时间:2014-3-10 Android项目开发时,给公司人员安装,频繁升级,版本号总需要改,太麻烦,跟着时间变,自动升级才方便. Android项目开发新版时,手机上可能要装两个版本,一 ...

  9. android之apk自动更新解析包失败问题

    在apk自动更新(相关问题可以看我的博客http://blog.csdn.net/caicongyang) 从服务器下载完成后,点击notification提示安装时,每次都报解析包失败错误!首先我想 ...

随机推荐

  1. Mysql优化经验

    一.索引优化 范围匹配使用B-tree索引  等值匹配使用 HASH索引,hash所有唯一Memory引擎 2.索引三星系统, 1.相关记录放到一起 2.索引中的数据和查找中的排序顺序一直 3.索引的 ...

  2. JavaScript基础11——js的全局函数

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  3. 解决SharePoint 文档库itemadded eventhandler导致的上传完成后,编辑页面保持报错的问题,错误信息为“该文档已经被编辑过 the file has been modified by...”

    在文档库中添加itemadded 后,在上传文件后,会自动打开文档属性的编辑页面,在保存的时候就会报错,说这个文档已经被编辑过了.这是应为默认itemadded实践是异步执行的,会在edit页面打开之 ...

  4. 【读书笔记】iOS-Tagged Pointer对象-注意事项

    一,2013年9月,苹果推出了iPhone5s,与此同时,iPhone5s配备了首个采用64位架构的A7双核处理器,为了节省内存和提高执行效率,苹果提出了Tagged Pointer的概念. 对于64 ...

  5. 异步post请求之代理方法

    #import "ViewController.h" #import "Header.h" @interface ViewController ()<NS ...

  6. 谷歌浏览器Chrome安装,报0x80004002 等错误时,乖乖的这么解决!亲测有效。

    1.卸载现有的谷歌浏览器,推荐使用360卸载(最好清扫残留文件) 2.在百度搜索中下载一个离线的 chrome浏览器(准备在安全模式先安装),记住,一定不能是谷歌官网的离线包(我屡次尝试安装官方离线包 ...

  7. 敏捷软件开发(1)--- STATE 模式

    如果状态在运行过程中,不停的切换和改变,我们怎么办? 状态的迁移是我们生活和工程中非常普遍的一个概念.于是在数学上有一种理论来分析和解决这个问题. 有限状态机理论是一个非常成熟的理论,所有动作和流程的 ...

  8. eclipse创建本地maven

    一.下载maven安装包和maven的eclipse插件 apache-maven-3.3.9-bin.zip eclipse-maven-plugin.zip 下载地址:http://pan.bai ...

  9. 5+ App开发入门指南

    HTML5 Plus应用概述 HTML5 Plus移动App,简称5+App,是一种基于HTML.JS.CSS编写的运行于手机端的App,这种App可以通过扩展的JS API任意调用手机的原生能力,实 ...

  10. cocos2d-x之物理引擎初试

    发现问题:监听代码部分不能在onEnter()段书写 bool HelloWorld::init() { if ( !Layer::init() ) { return false; } visible ...