安卓使用腾讯Bugly实现应用升级功能

百度搜索bugly登陆平台,创建应用,获取应该用ID,在应用程序代码中使用该ID就可以实现该应用与bugly平台应用对接

进入bugly平台之后会看到三个模块:异常上报,运营统计,应用升级。也就是说bugly平台包含着三大功能,今天要研究的就是应用升级模块,此模块包含 全量更新和热更新,这篇文章就是针对全量更新来写的

应用更新步骤:

1.首先服务器要有最新的apk包

2.应用启动检查是否为最新包,是则不更新,不是则弹出提示框提示下载更新

3.下载更新完成启动更新后的应用

Bugly平台省去了我们服务器维护apk包的过程,由bugly平台来维护,不需要我们服务器写任何代码,我们在应用更新模块,点击发布新应用把最新的apk包传上去,并设置升级配置如图:



1.策略名称:最好写应用的版本号,是在平台区分应用更新版本的

2.升级方式:推荐升级(界面实现下次再说,立即更新两个按钮) 强制升级(只显示立即更新按钮)

3.高级配置:设置一些发送升级信息的条件以及次数间隔等

4.弹窗样式,选什么样式就是啥样子不过可以自定义样式代码里写样式就可以

5.更新时必须填写的,版本名字如图的位置

6.更新说明,必填

填完这些东西就可以创建升级策略了,创建好之后,bugly后台算是完成了,接着就是app代码怎么写了


https://bugly.qq.com/v2/sdkDownload 下载NDK 动态库 3.3.1把lib里的包考入项目

自动导入(推荐)

使用Android Studio创建project

【File】-> 【New】->【New Project】

使用Android Studio创建project

gradle配置(重要)

Alt text

配置示例(路径app/build.gradle):

  android {
        defaultConfig {
          ndk {
            //设置支持的SO库架构
            abiFilters 'armeabi' //, 'x86', 'armeabi-v7a', 'x86_64', 'arm64-v8a'
          }
        }
      }
      dependencies {
          //注释掉原有bugly的仓库
          //compile 'com.tencent.bugly:crashreport:latest.release'//其中latest.release指代最新版本号,也可以指定明确的版本号,例如2.3.2
          compile 'com.tencent.bugly:crashreport_upgrade:latest.release'//其中latest.release指代最新版本号,也可以指定明确的版本号,例如1.2.0
          compile 'com.tencent.bugly:nativecrashreport:latest.release' //其中latest.release指代最新版本号,也可以指定明确的版本号,例如2.2.0
      }

参数配置

在AndroidMainfest.xml中进行以下配置:

1. 权限配置

<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" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

2. Activity配置

<activity
    android:name="com.tencent.bugly.beta.ui.BetaActivity"
    android:configChanges="keyboardHidden|orientation|screenSize|locale"
    android:theme="@android:style/Theme.Translucent" />

3. 配置FileProvider

注意:如果您想兼容Android N或者以上的设备,必须要在AndroidManifest.xml文件中配置FileProvider来访问共享路径的文件。


 <provider
    android:name="android.support.v4.content.FileProvider"
    android:authorities="${applicationId}.fileProvider"
    android:exported="false"
    android:grantUriPermissions="true">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/provider_paths"/>
</provider>

如果你使用的第三方库也配置了同样的FileProvider, 可以通过继承FileProvider类来解决合并冲突的问题,示例如下:

<provider
    android:name=".utils.BuglyFileProvider"
    android:authorities="${applicationId}.fileProvider"
    android:exported="false"
    android:grantUriPermissions="true"
    tools:replace="name,authorities,exported,grantUriPermissions">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/provider_paths"
        tools:replace="name,resource"/>
</provider>

这里要注意一下,FileProvider类是在support-v4包中的,检查你的工程是否引入该类库。

在res目录新建xml文件夹,创建provider_paths.xml文件如下:


<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- /storage/emulated/0/Download/${applicationId}/.beta/apk-->
    <external-path name="beta_external_path" path="Download/"/>
    <!--/storage/emulated/0/Android/data/${applicationId}/files/apk/-->
    <external-path name="beta_external_files_path" path="Android/data/"/>
</paths>

这里配置的两个外部存储路径是升级SDK下载的文件可能存在的路径,一定要按照上面格式配置,不然可能会出现错误。


以上配置好之后就可使用升级策略了,下图为一些常用Beta配置


最后别忘了初始化Bugly


其他更多参数,可以在Bugly文档中查看,以下列举几个

添加可显示弹窗的Activity

Beta.canShowUpgradeActs.add(MainActivity.class);

例如,只允许在MainActivity上显示更新弹窗,其他activity上不显示弹窗; 如果不设置默认所有activity都可以显示弹窗。

设置是否显示消息通知

Beta.enableNotification = true;

如果你不想在通知栏显示下载进度,你可以将这个接口设置为false,默认值为true。

设置Wifi下自动下载

Beta.autoDownloadOnWifi = false;

如果你想在Wifi网络下自动下载,可以将这个接口设置为true,默认值为false。

设置是否显示弹窗中的apk信息

Beta.canShowApkInfo = true;

如果你使用我们默认弹窗是会显示apk信息的,如果你不想显示可以将这个接口设置为false。

关闭热更新能力

Beta.enableHotfix = true;

升级SDK默认是开启热更新能力的,如果你不需要使用热更新,可以将这个接口设置为false。


初始化统一接口

 Bugly.init(this, APP_ID, false);
详细请查看文档:https://bugly.qq.com/docs/user-guide/advance-features-android-beta/?v=20170912151050






  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaoqiang_0719

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值