tencent cloud

腾讯云可观测平台

动态与公告
产品动态
产品简介
产品概述
产品优势
基本功能
基本概念
应用场景
使用限制
购买指南
云产品监控
应用性能监控
终端性能监控
前端性能监控
云拨测
Prometheus 监控服务
Grafana 服务
事件总线
云压测
快速入门
监控概览
实例分组
云产品监控
应用性能监控
云拨测
云压测
Prometheus 监控服务
Grafana 服务
创建 Dashboard
事件总线
告警服务
云产品监控
云产品监控指标
控制台操作指南
云服务器监控组件
云产品监控对接 Grafana
故障处理
实践教程
应用性能监控
应用性能监控简介
接入指南
控制台操作指南
实践教程
参考信息
常见问题
终端性能监控
终端性能监控概述
控制台操作指南
接入指南
实践教程
前端性能监控
前端性能监控简介
控制台操作指南
接入指南
常见问题
云拨测
产品简介
控制台操作指南
常见问题
云压测
云压测概述
控制台操作指南
实践教程
JavaScript API 列表
常见问题
Prometheus 监控
Prometheus 监控简介
接入指南
控制台操作指南
实践教程
Terraform
常见问题
Grafana 服务
产品简介
控制台操作指南
Grafana 平台常用功能指引
常见问题
Dashboard
什么是 Dashboard
控制台操作指南
告警管理
控制台操作指南
故障处理
常见问题
事件总线
事件总线简介
控制台操作指南
实践教程
常见问题
报表管理
常见问题
腾讯云可观测平台常见问题
告警服务相关
一般性问题
监控图表相关
云服务器监控组件相关
动态阈值告警相关
云监控对接 Grafana 相关
文档阅读指南
相关协议
应用性能监控服务等级协议
APM 隐私协议
APM 数据处理和安全协议
前端性能监控服务等级协议
终端性能监控服务等级协议
云拨测服务等级协议
Prometheus 监控服务服务等级协议
Grafana 服务服务等级协议
云压测服务等级协议
云压测使用限制
Cloud Monitor Service Level Agreement
词汇表

集成和初始化

PDF
聚焦模式
字号
最后更新时间: 2024-05-24 11:56:45

操作场景

本文指导您使用 Android SDK 的集成与初始化。

操作步骤

步骤一:Gradle 集成

1. settings.gradle 中添加 maven 仓库源。



参考代码:
pluginManagement {
...
repositories {
...
// 加入下面内容
maven { url 'https://qapm-maven.pkg.coding.net/repository/qapm_sdk/android_release/' }
}
}
dependencyResolutionManagement {
...
repositories {
...
// 加入下面内容
maven { url 'https://qapm-maven.pkg.coding.net/repository/qapm_sdk/android_release/' }
}
}
注意:
如果您的 gradle 版本低于 7.0,请在 project 的 build.gradle 添加 maven 仓库源,如下所示:



2. project 的 build.gradle 文件下增加插件的依赖。


参考代码:
buildscript {
...
dependencies {
...
// 加入下面的内容
classpath 'com.tencent.qapmplugin:qapm-plugin:3.1'
...
}
}
注意:
如果您的 gradle 版本小于 7.4,则将插件版本改为 2.39。
3. app 的 build.gradle 文件下增加以下代码:



参考代码:
plugins {
...
id('qapm-plugin') //添加插件
...
}
...
preBuild.dependsOn(UUIDGenerator) //生成唯一标识,用于后续堆栈翻译
...
dependencies {
...
//添加qapmsdk依赖
implementation 'com.tencent.qapm:qapmsdk:5.4.6-pub'
...
}
4. 请通过以下内容检查是否需要执行此步骤。
请在 Application 所在的类中输入 attachBaseContext,检查是否有这个的重写方法,如有重写方法则忽略该步骤,如没有请执行下一步。



请将 Application 的包名路径添加进以下配置,如下所示:



参考代码:
QAPMPluginConfig {
// 可选,默认为空,请在Application所在的类中输入attachBaseContext,看有没有这个的重写方法,如果没有则需要配置该项,如下图所示就是无需配置该项的校验
// tinkerApplication = 'com/tencent/qapm/demoApplication'
}
5. 此时您可以尝试进行编译。编译相关的 FAQ 可以查看此步骤。
Q1:如果编译时出现 “feature is disabled” 的错误,如下:



A1: 这是因为插件需要动态在 BuildConfig 插入属性,请在 app 模块的 build.gradle 文件下增加以下代码。



参考代码:
android {
...
// 加入下面内容
buildFeatures {
...
buildConfig true
}
...
}
Q2: 如果编译时出现 “类冲突” 的错误,如下:



A2: 这是由于 qapm 与您的工程使用了 android 不同的 support 库,这里请在依赖的时候移除掉qapm 的 android.support 库,如下:



参考代码:
dependencies {
...
implementation ('com.tencent.qapm:qapmsdk:5.4.6-pub') {
// 加入下面内容
exclude group: 'com.android.support'
}
...
}
注意:
如果未使用 qapm-plugin 插件,则会影响启动、网络的监控。

步骤二:参数配置

1. 在 AndroidManifest.xml 中添加以下权限。
<!--上报信息所需-->
<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" />
2. 为了避免混淆 SDK,在 App 的 proguard-rules.pro 文件中增加以下配置:
-keep class com.tencent.qapmsdk.**{*;}
# 如需要网络监控,请确保okhttp3不被混淆
-keep class okhttp3.**{*;}

步骤三:初始化 SDK

1. 登录 腾讯云可观测平台 控制台,在终端性能监控页面 ,选择 应用管理 > 应用设置 后,获取 Appkey(上报 ID)。



2. 拷贝下面代码,并修改其中部分字段。下列项均是必需的接口设置,其余接口配置请参考初始化的接口分析(建议在 Application 中初始化 QAPM)。
// 设置手机型号和设备ID。
// 需要传入设备的标识,任意字符串。deviceId(必需!!)
// deviceId可以用来开启白名单,避免数据被抽样上报(崩溃和启动以外的数据抽样率为0.1%)
QAPM.setProperty(QAPM.PropertyKeyDeviceId, "设备的标识");
// 需要传入手机型号(必需!!)
QAPM.setProperty(QAPM.PropertyKeyModel, "填写手机型号");

// 设置Application(必需)
QAPM.setProperty(QAPM.PropertyKeyAppInstance, getApplication());
// 设置AppKey(必需,用于区分上报的产品,该值由终端性能监控的产品配置页面获取,可参考上一步骤 )
QAPM.setProperty(QAPM.PropertyKeyAppId, "YourAppKey");
// 设置产品版本,用于后台检索字段(必需)
QAPM.setProperty(QAPM.PropertyKeyAppVersion, "YourApp Version");
// 设置UUID,用于拉取被混淆堆栈的mapping (必需,若使用了QAPM符号表上传插件,可以直接使用该变量)。
// 如有使用qapmplugin插件,则该变量会在build时生成,报错信息可不用关注。如无使用则需要自行传入,请确保使用UUID格式且一个apk仅对应一个uuid
QAPM.setProperty(QAPM.PropertyKeySymbolId, BuildConfig.QAPM_UUID);
// 设置用户ID,任意字符串,用于后台检索字段(必需)
// userId可以用来开启白名单,避免数据被抽样上报(崩溃和启动以外的数据抽样率为0.1%)
QAPM.setProperty(QAPM.PropertyKeyUserId, "123456");
// 设置Log等级,(可选),线上版本请设置成QAPM.LevelOff或者 QAPM.LevelWarn
QAPM.setProperty(QAPM.PropertyKeyLogLevel, QAPM.LevelInfo);
// 设置QAPM的外网上报域名(必需)。国内站:https://app.rumt-zh.com 国际站:https://app.rumt-sg.com
QAPM.setProperty(QAPM.PropertyKeyHost,"https://app.rumt-zh.com");
QAPM.setProperty(QAPM.PropertyKeyHost,"https://app.rumt-sg.com");
// 启动QAPM
QAPM.beginScene(QAPM.SCENE_ALL, QAPM.ModeStable);
说明:
AppKey 可参考步骤三-步骤1,在 终端性能监控 > 应用管理 > 应用设置 页面获取。
崩溃和启动数据是全量上报,其他数据因为数据数目过多,采取抽样上报,抽样率为0.1%(千分之一)。如果需要全量上报,可以开启白名单,App 将会在下次启动时改变抽样率。
可以将设置好 userId 或者 deviceId 通过 应用管理 页面添加白名单里,开启白名单。
多个进程需要各自初始化 QAPM。

步骤四:接入验证

1. 若打印以下日志,代表该用户未被抽样命中,需重新设置下抽样率:



参见 TAG : QAPM_manager_QAPMLauncher
2. 若打印以下日志,则代表初步接入成功,可以验证数据上报/尝试开启高级功能:



参见 TAG : QAPM_manager_QAPMPluginManager

初始化的接口分析

接口名称
参数
参数说明
注意事项
public static QAPM setProperty(int key, Stringvalue)
作用:设置 QAPM 的相关参数
key
必填。需要设置的 Key。
-
QAPM.PropertyKeyLogLevel
选填。开启日志等级(建议 Debug 版本开启 QAPM.LevelDebug,release 版本开启 QAPM.LevelWarn)。
QAPM.PropertyNeedTranslate
选填。堆栈是否需要翻译,这里默认是需要翻译的。如果 apk 是没有混淆的需要传入 false,否则前端可能会全部展示为 unTranslated。
public static boolean beginScene(String sceneName, int mode)
作用:开启监控
sceneName
必填。场景名。
使用或运算的方式自定义开启性能模块,如开启 Crash 和 Anr: beginScene(“Crash&ANR”, QAPM.ModeCrash| QAPM.ModeANR)
mode
必填。开启的功能。
QAPM.ModeStable
选填。开启全部功能(建议外发版本开启。包含区间性能、crash、anr、webview 页面加载、JsError、网络)。
QAPM.ModeWebView
选填。开启 WebView 页面加载监控。
QAPM.ModeJsError
选填。开启 WebView 的 JS 异常监控。
QAPM.ModeHTTPInWeb
选填。开启 WebView 的网络监控。
QAPM.ModeHTTP
选填。开启网络监控。
public static boolean endScene(String sceneName, long mode)
作用:结束监控(只针对掉帧和区间性能采集有效)
sceneName
必填。需要关掉的场景名(与 beginScene 的要相对应)。
-
QAPM.ModeDropFrame
选填。关闭掉帧监控。
QAPM.ModeResource
选填。关闭区间性能监控。

其他问题

说明:
通过 qapm 插件编译打包 App 时,App 需要一个 uuid 作为构建 id,如果项目目录下存在 qapm.properties 文件,并且文件里 qapm_uuid 属性的值存在,该值将被作为构建 id,否则插件会随机生成一个构建 id。
qapm-plugin 2.39及之前版本在编译 App 的过程中会报 IO 错误:java.io.FileNotFoundException,qapm.properties (No such file or directory)



该报错仅在编译期间产生,不会影响 App 运行。

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈