Bugly实现app全量更新

最近新项目想用个第三方的更新功能,之前一直用的讯飞,但是现在讯飞将更新功能关闭了,就在网上找到了腾讯的bugly,下面是具体使用方法(我用的是最简单的配置,使用的是全量更新)

这句话我还是写在上面吧:使用as的模拟器是不提示这个更新界面的,一直会提示“you have no new version”,所以大家还是用真机来开发测试。

效果如下图 (提示界面可以在bugly上自定义):


1、添加依赖

//腾讯bugly全量更新
compile 'com.tencent.bugly:crashreport_upgrade:latest.release'
2、 在AndroidManfiest.xml中添加相应的权限

1. 权限配置

<uses-permissionandroid:name="android.permission.READ_PHONE_STATE" />

<uses-permissionandroid:name="android.permission.INTERNET" />

<uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE" />

<uses-permissionandroid:name="android.permission.ACCESS_WIFI_STATE" />

<uses-permissionandroid:name="android.permission.READ_LOGS" />

<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE" />

uses-permissionandroid:name="android.permission.REQUEST_INSTALL_PACKAGES" />

2. Activity配置

    android:name="com.tencent.bugly.beta.ui.BetaActivity"
    android:configChanges="keyboardHidden|orientation|screenSize|locale"
    android:theme="@android:style/Theme.Translucent" />
3. 配置FileProvider ------如果你使用的第三方库也配置了同样的FileProvider, 可以通过继承FileProvider类来解决合并冲突的问题

(我因为设置了多版本打包,所以authorities配置成下面格式,动态获取applicationid)

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

在res目录 新建xml文件夹 ,创建provider_paths.xml文件如下:
xml version="1.0" encoding="utf-8"?>
xmlns:android="http://schemas.android.com/apk/res/android">
    
    name="beta_external_path" path="Download/"/>
    
    name="beta_external_files_path" path="Android/data/"/>

3、 添加混淆规则
##------------------- Begin: bugly版本更新 ----------
-dontwarn com.tencent.bugly.**
-keep public class com.tencent.bugly.**{*;}
##-------------------- END: bugly版本更新----------
4、在application类的onCreat方法中配置如下:
public static final String APP_ID = "43bXXXXXXXXXXX"; // TODO 替换成bugly上注册的appid
// bugly版本更新
/**
 * 只允许在MainActivity上显示更新弹窗,其他activity上不显示弹窗;
 * 不设置会默认所有activity都可以显示弹窗;
 */
Beta.canShowUpgradeActs.add(MainActivity.class);
/**
 * true表示初始化时自动检查升级
 * false表示不会自动检查升级,需要手动调用Beta.checkUpgrade()方法
 */
Beta.autoCheckUpgrade = true;//设置自动检查
/**
 * 点击过确认的弹窗在APP下次启动自动检查更新时会再次显示;
 */
Beta.showInterruptedStrategy = false;
/**
 * 已经接入Bugly用户改用上面的初始化方法,不影响原有的crash上报功能;
 * init方法会自动检测更新,不需要再手动调用Beta.checkUpdate(),如需增加自动检查时机可以使用Beta.checkUpdate(false,false);
 * 参数1applicationContext
 * 参数2appId
 * 参数3:是否开启debug
 */
Bugly.init(getApplicationContext(), APP_ID, false);
5、开始代码使用更新
Beta.checkUpgrade();//检查版本号

说明:想在哪个地方更新就写上这句代码(ps:我是在MainActivity的onCreate方法中直接使用,启动应用进来只要有新版本就提示更新)。


详情参考Bugly官网

你可能感兴趣的:(第三方使用)