Bugly 是一款由腾讯开发的app管理平台,集成了日志上报、app版本管理和热更新修复等功能。其基于微信Tinker的开源方案,开发者只需要集成进他们提供的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的升级和强制升级。其自带升级询问窗口,使用方便。
配置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。
见热更新笔记内容