Bugly 的日志收集、更新和热更新

Bugly 的日志收集、更新和热更新

Bugly 是一款由腾讯开发的app管理平台,集成了日志上报、app版本管理和热更新修复等功能。其基于微信Tinker的开源方案,开发者只需要集成进他们提供的SDK即可实现用户无感知的修复等功能。

日志集成

导入SDK

Bugly可以在应用内上报异常信息,推荐使用自动集成来进行SDK 的集成

首先,配置app.gradle文件的依赖信息

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

dependencies {
    implementation 'com.tencent.bugly:crashreport:latest.release' //其中latest.release指代最新Bugly SDK版本号,也可以指定明确的版本号,例如2.1.9
    implementation 'com.tencent.bugly:nativecrashreport:latest.release' //其中latest.release指代最新Bugly NDK版本号,也可以指定明确的版本号,例如3.0
}

该SDK 需要用户权限如下

<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" />

初始化

在项目的Application中的onCreate()中进行初始化

String appId = "aaaaaaaaaa";
Bugly.init(getApplication(), appId, true);

其中三个参数分别为项目上下文、从Bugly后台获得的App专属id和是否为Debug模式

若进入debug模式,app将会在Logcat输出自定义Log。

不要异步初始化Bugly!!!

之后,可以在Bugly官网查看app的异常状态和应用的使用情况

全量更新

Bugly 提供了一个apk版本控制的后台,可以方便的管理apk的升级和强制升级。其自带升级询问窗口,使用方便。

Bugly 的日志收集、更新和热更新_第1张图片

导入

配置app.gradle

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

需要注释掉原有的bugly藏古,改为crashreport_upgrade仓库

需要的权限如下

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

同时,在Activity中为SDK提供的activity进行注册

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

若想兼容Android N 以上版本,必须配置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>

最后,在资源包中下新建资源文件res.xml,并创建provider_paths.xml文件,内容如下


<paths xmlns:android="http://schemas.android.com/apk/res/android">
    
    <external-path name="beta_external_path" path="Download/"/>
    
    <external-path name="beta_external_files_path" path="Android/data/"/>
paths>

即可完成集成

初始化

同BugReport,在Application中的onCreate进行初始化

Bugly.init(getApplicationContext(), "注册时申请的APPID", false);

完成wwww

是的,之后就可以通过向后台上传apk来进行apk版本控制,后台会自动判断用户的versionCode并提示更新的。
当然程序也可以通过调用

Beta.checkUpgrade(boolean a, boolean b)

来进行手动检查更新

其中,第一个值为是否是用户行为,第二个值为是否是静默模式(不弹出对话框)。默认都为false。

热更新

见热更新笔记内容

你可能感兴趣的:(Android笔记)