美文网首页灰度发布&静默更新程序员今日看点
使用腾讯bugly实现应用自动更新提示

使用腾讯bugly实现应用自动更新提示

作者: 山水相逢z | 来源:发表于2016-10-13 14:40 被阅读9271次

    我们都知道,在app开发完成发版的时候,会上传到各个应用市场,来增加用户量,但是这些市场往往会有一个审核的周期,等审核通过之后才会推送给用户来下载,并且,当我们某个版本出现严重bug,或者新增了一个特色功能的时候,我们会希望用户很快就能更新我们最新的app,这时候就要用到 应用检测更新了。
    通常,实现应用更新一般我们有两种方法。

    第一种 自己搭建后台检测是否有更新

    这种方法通常要求客户端启动后,在某个时机,利用当前版本的某些信息(版本号,渠道号等)来请求服务器,服务器处理后返回是否需要升级等信息。如果需要升级,则下载最新的App安装包进行安装。

    第二种 利用现有的比较成熟的第三方框架

    现有的用户量比较大的有友盟,腾讯bugly,讯飞平台等。

    公司最开始用的是友盟自动更新 ,但是由于某些原因,10.15友盟会关闭自动更新这个服务,对比了几个比较成熟的第三方自动更新,最后决定使用bugly这个,集成和使用也比较简单,下面来详细介绍集成和使用步骤。

    1.注册bugly账号以及添加产品

    https://bugly.qq.com 这个网址直接用qq登录,然后点击右上角-我的产品,如果没有添加过产品的话,点击 新建产品 ,

    新建产品

    然后会跳转到另一个页面:

    新建产品详情

    带星号的是必填选项,当我们把必填信息填写完成后,点击最下方的保存按钮即可保存。
    此时再次点击右上角-我的产品,就会看到我们新建的这个产品了,点击某个产品,会跳转到产品详情界面,在右上角-更多-产品设置中可以查询到改产品的AppId,这里就不放图了。

    2.在项目中集成

    1.新建一个项目,在app目录下的gradle文件中添加如下配置:
    defaultConfig 下:

    ndk { 
    //设置支持的SO库架构 
    abiFilters 'armeabi' //, 'x86', 'armeabi-v7a', 'x86_64', 'arm64-v8a'
     }
    

    dependencies 下:

    compile 'com.tencent.bugly:crashreport_upgrade:latest.release'//其中latest.release指代最新版本号,也可以指定明确的版本号,例如1.0.0 
    compile 'com.tencent.bugly:nativecrashreport:latest.release' //其中latest.release指代最新版本号,也可以指定明确的版本号,例如2.2.0
    

    2.AndroidMainfest相关配置

    权限配置:

    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <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_LOGS" /><!--保存资源到SD卡--><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    

    Activity配置:

    <activity android:name="com.tencent.bugly.beta.ui.BetaActivity" android:theme="@android:style/Theme.Translucent" />
    

    混淆:

    -keep public class com.tencent.bugly.**{*;}
    

    3.代码中使用

    在应用初始化的时候调用Bugly.init(getApplicationContext(), "注册时申请的APPID", false)即可。

    3.在bugly后台发布新版本

    在bugly后台我们点击某个产品,会进入产品详情页面,

    产品详情

    点击应用升级-发布新升级,这时会弹出一个对话框,让我们选择升级的设置(策略),这里直接放一张官网的图:

    拥有的升级策略

    我这个升级策略已经启动了,如果你的没有启动,将鼠标放到策略的 状态与操作 栏下,会提示你进行开启。当策略开启后,客户端打开以后,默认在3s后检测是否有新版本,如果检测到的话,就会弹窗提示用户升级。

    注意:发布升级的版本的版本号必须大于客户端已安装版本的版本号,否则将会检测不到新版本。

    以上是使用bugly进行版本升级的最基本的使用方法,我们还可以有一个复杂的操作,比如在代码中添加多渠道 以支持按渠道升级等。

    相关文章

      网友评论

      • And__:按照上面的步骤使用,app可以更新,但是日志里面会报 这个错误,是什么原因
        山水相逢z:@困于情 看日志是少了添加tinker某些工具类的依赖才报错。当时写这篇文章的时候bugly还不需要tinker,你看下文档现在是不是要额外加tinker的依赖。
      • And__:.ClassNotFoundException: Didn't find class "com.tencent.tinker.lib.util.TinkerLog$TinkerLogImp" on path: DexPathList[[zip file "/data/app/com.yeeuu.marapp-PzekY-S3nT4UZbBGTkJfDQ==/base.apk"],nativeLibraryDirectories=[/data/app/com.yeeuu.marapp-PzekY-S3nT4UZbBGTkJfDQ==/lib/arm, /system/fake-libs, /data/app/com.yeeuu.marapp-PzekY-S3nT4UZbBGTkJfDQ==/base.apk!/lib/armeabi, /system/lib, /vendor/lib]]
        at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:125)
      • 5e30a667061c:我用debug 包测试,为何不提示更新
      • 狂神YMTimizhuo:楼主,你好,你提供的两个群都提示满员了,进不去。我遇到的问题是:华为Android8.1可以正常下载更新,小米6 Android8.1也可以正常下载更新,但是小米8 Android8.1点击对话框中的安装后,会提示解析软件包出现问题,而且在文件管理中查看download文件夹和Android/data文件夹下的对应包名的文件夹根本没有apk文件,楼主有遇到过吗?求解惑
      • 拾憶d:楼主你好,我旧版本的apk有多渠道并且加固了,用全量更新发布新版本的apk,这个apk需要加固吗?这时候怎么区分不同渠道升级?
        山水相逢z:@一一_6a77 429975901 这个
        一一_6a77:@山水相逢z 你好 请问一下 你有bugly技术支持群的qq号码 我一直没找到
        山水相逢z:sorry,很久没有关注这块儿了,你可以加bugly技术支持群问下
      • Attach:楼主请教一下,如何主动去检测有没有更新;buggly默认的是在启动app的时候去检测是否有更新,当我忽略之后,就只能等下次检测周期了,我想在忽略的时候,在app里面做一个按钮,让用户去主动检测更新升级。buggly能不能满足这个需求。
        Attach:@山水相逢z 可以了,谢谢
        山水相逢z:可以的,Beta.checkUpgrade(),看下这个方法
      • 久别再重逢:我公司用bugly检测更新,有时候会出现下载完然后又重复重头下载不安装,有没遇到的
        山水相逢z:@久别再重逢 你加bugly技术支持qq,或者给他们提工单试试,看看他们知道是啥原因不
        久别再重逢:@山水相逢z 挺头疼的,有的手机会,有的不会,问题是这是第三方下载,出问题也没地方改
        山水相逢z:@久别再重逢 目前没有遇到
      • 杨旭_:流弊,有问题请假看到回复下
      • 二进制_布狸:虽然我并不喜欢第三方来控制版本,不安全,不可控,不好看,但是并不能否认这个对于新人来说很简单便捷
        二进制_布狸:@小学留了三年级 当然是自己实现啊...只不过没有bugly那样稳定而已,让服务端出个下载地址,自己下载安装包到本地,下载的时候可以显示进度,然后最好加一些异常情况,比如加载失败,加载一半,储存空间不足等异常判断就可以了。
        小学留了三年级:哥哥你有什么更好的方法么,可以分享一下么
      • b8a987fb688a:楼主有没有遇到有些手机更新失败的问题,还有更奇葩的,在华为市场通过省流量更新之后,去到app还提示更新
        山水相逢z:目前还没有,你去bugly支持群反应一下,他们有qq群
      • francis_fanfan:楼主你好。我想问一下你们用bugly升级的速度慢不慢。我这边一个15M的更新包要下载三分钟,请问你们的速度快吗,我想知道是不是我这边网速的原因
        francis_fanfan:建议大家还是使用自己的更新吧,bugly虽然方便,但是速度确实是太慢了。像这种速度,用户在wifi下下载 会急死的
        yuyu000:速度不快 大概200-300kb
        山水相逢z:@francis_fanfan 刚测试了一下,7兆的包用了快1分钟,却是不是很快
      • 415ee95c27b0:楼主,请教是如何实现Bugly渠道新的!
        e49d831def8b:@山水相逢z 链接已经失效了
        山水相逢z:http://bugly.qq.com/bbs/forum.php?mod=viewthread&tid=2848 看下这个对你有用没
      • 尹_路人:建议楼主在文章标题后添加“提示”两个字
        山水相逢z: @尹_路人 好的,多谢建议

      本文标题:使用腾讯bugly实现应用自动更新提示

      本文链接:https://www.haomeiwen.com/subject/oanpyttx.html