Android之bugly使用

Android Bugly 使用详解

Bugly 是腾讯推出的一款移动应用崩溃分析和应用升级服务平台,主要用于 Android/iOS 应用的崩溃(Crash)、应用无响应(ANR)、Native Crash 等问题的监控、分析和修复。它可以帮助开发者快速定位问题、统计崩溃率,并支持应用升级和热更新功能。Bugly 的核心优势在于易集成、实时上报和符号表解析(便于查看崩溃栈的源代码行号)。

注意:在接入 Bugly SDK 前,请务必阅读腾讯的《开发者合规指南》和《Bugly SDK 个人信息保护规则》,确保合规使用。Bugly 默认收集部分设备信息(如 Android ID,用于崩溃统计),若涉及隐私审核,可自定义 Device ID 避免采集。

以下是 Android 平台的 Bugly 使用指南,基于官方文档(版本截至 2025 年 10 月,建议检查最新版本)。集成步骤分为崩溃上报应用升级两部分。


1. 注册与创建产品

  1. 访问 Bugly 官网,使用 QQ 账号登录(无需额外注册)。
  2. 点击“新建产品”:
  • 选择“Android”平台。
  • 填写 App 名称、包名(Package Name,与 AndroidManifest.xml 中的一致)、版本号等信息。
  • 保存后,在“我的产品”页面查看 APP ID(重要,后续初始化需用)。
  1. (可选)在 Bugly 控制台配置渠道包、版本管理等。

示例界面提示:产品设置页面会显示 APP ID,如 900000001


2. 集成 Bugly SDK(崩溃上报)

Bugly 支持 Gradle 自动集成和手动集成两种方式。推荐使用 Gradle(JCenter/Maven 仓库)。

步骤 1: 添加依赖

在项目的 build.gradle(Module: app)中添加:

dependencies {
    // Bugly 崩溃上报 SDK(最新版本:latest.release)
    implementation 'com.tencent.bugly:crashreport:latest.release'

    // 如果涉及 Native Crash(NDK),额外添加
    implementation 'com.tencent.bugly:nativecrashreport:latest.release'

    // 如果涉及 ANR 监控(2.1.5+ 版本支持)
    // 无需额外依赖,已集成在 crashreport 中
}
  • 仓库配置:在项目根目录 build.gradle 中确保有:
  allprojects {
      repositories {
          google()
          jcenter()  // 或 mavenCentral()
      }
  }
  • Sync 项目后,SDK 集成完成。
步骤 2: 初始化 SDK

Application 类(或 MainActivityonCreate)中初始化。推荐在 Application 中全局初始化。

import android.app.Application;
import com.tencent.bugly.crashreport.CrashReport;

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();

        // 初始化 Bugly
        CrashReport.initCrashReport(getApplicationContext(), "YOUR_APP_ID", false);  // 第三个参数:true 为正式版,false 为测试版(调试日志)

        // (可选)自定义设备 ID(避免采集 Android ID)
        CrashReport.setDeviceId(getApplicationContext(), "custom_device_id");

        // (可选)设置版本号/渠道(若不通过 Manifest 配置)
        CrashReport.setAppVersion("1.0.0");
        CrashReport.setChannel("default");
    }
}
  • 注册 Application:在 AndroidManifest.xml 中添加:
  <application
      android:name=".MyApplication"
      ... >
  </application>
  • Manifest 配置(可选):在 AndroidManifest.xml 中添加 APP 版本(Bugly 2.0+ 支持):
  <meta-data
      android:name="BUGLY_APP_ID"
      android:value="YOUR_APP_ID" />
  <meta-data
      android:name="BUGLY_APP_VERSION"
      android:value="1.0.0" />
步骤 3: 配置符号表(Symbol Table)

符号表用于解析崩溃栈的符号化(显示源代码行号),必须上传!

  • Java Crash:Bugly 自动支持,无需额外配置。
  • Native Crash:使用 Bugly 的符号上传工具。
  1. 下载 Bugly 符号化工具(或集成到 Gradle 插件)。
  2. build.gradle 中添加符号上传任务: apply plugin: 'com.android.application' // ... 其他配置 task uploadSymbol(type: Exec) { commandLine 'python', 'path/to/bugly-upload-script.py', '--appId=YOUR_APP_ID', '--version=1.0.0', '--soPath=app/build/intermediates/ndkBuild/debug/obj' }
  3. 构建 APK 后,运行 uploadSymbol 任务上传 SO 文件的符号表。
步骤 4: 测试与上报
  • 手动上报异常(测试用):
  // 上报 Java 异常
  CrashReport.postCatchedException(new RuntimeException("Test Crash"));

  // 上报自定义日志
  CrashReport.testJavaCrash();  // 测试崩溃
  • 运行 App,触发崩溃(如空指针),重启 App 后崩溃日志会自动上报到 Bugly 控制台。
  • 在 Bugly 后台查看:崩溃率、堆栈详情、设备分布等。

Demo 项目:克隆官方 Bugly-Android-Demo 进行快速测试,包括崩溃、ANR、热更新示例。


3. 应用升级功能集成

Bugly 支持灰度升级(内测分发),集成升级 SDK 后,可在后台配置升级规则。

步骤 1: 添加依赖
dependencies {
    // 升级 SDK(已集成崩溃上报,注释掉原有 crashreport)
    // implementation 'com.tencent.bugly:crashreport:latest.release'  // 注释此行
    implementation 'com.tencent.bugly:crashreport_upgrade:latest.release'
    implementation 'com.tencent.bugly:nativecrashreport:latest.release'  // Native 支持
}
步骤 2: 初始化与检查升级
import com.tencent.bugly.upgrade.UpgradeModule;

// 在 Activity 中检查升级
UpgradeModule.checkUpgradeInfo(this, "YOUR_APP_ID", new UpgradeModule.UpgradeListener() {
    @Override
    public void onUpgrade(int resultCode, com.tencent.bugly.upgrade.UpgradeInfo upgradeInfo) {
        if (resultCode == 0 && upgradeInfo != null) {
            // 有新版本,弹出下载/安装对话框
            // 示例:startDownload(upgradeInfo.apkUrl);
        }
    }
});
  • 后台配置:在 Bugly “内测分发” 页面上传 APK、设置升级条件(版本号、渠道、灰度用户)。
步骤 3: 直接升级到最新版
  • 在后台设置“强制升级”或跳过中间版本:配置升级策略时,选择“最高版本优先”。

4. 高级配置与功能

  • WebView JavaScript 异常捕获(1.2.8+):下载 Bugly.js,在 WebView 中加载:
  webView.loadUrl("javascript:(function() { ... })()");  // 注入 Bugly.js
  • 自定义 User Strategy:设置用户 ID、场景标签等:
  UserStrategy userStrategy = new UserStrategy(getApplicationContext());
  userStrategy.setUserId("user_123");
  CrashReport.setUserStrategy(userStrategy);
  • 热更新(Tinker):集成 Tinker SDK,支持无感知修复。参考 热修复指南
  • 隐私自定义:避免采集敏感信息,如设置 CrashReport.setAppReportProcess(getApplicationContext(), "com.example.main"); 只上报主进程。

5. 常见问题与注意事项

问题解决方案
崩溃未上报检查网络、权限(Internet/Access Network State);测试版设为 true 查看日志。
符号表未解析确保上传符号表;Native SO 文件需添加 .bugly_version 段。
ANR 未捕获2.1.5+ 版本自动支持;检查主线程阻塞。
流量消耗Bugly 有流量保护机制,仅上报必要数据。
隐私审核自定义 Device ID,避免 Android ID 采集。
升级跳过版本后台设置“直接到最新版”。
  • 更新日志:查看 Bugly Android SDK 更新日志,最新版本优化了设备解析和上报效率。
  • 性能影响:Bugly 上报异步、非阻塞,内存占用小(<1MB)。

6. 参考资源

如果需要特定功能(如热修复代码示例)或遇到集成问题,提供更多细节,我可以进一步解答!

类似文章

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注