有奖捉虫:行业应用 & 管理与支持文档专题 HOT

操作场景

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

操作步骤

步骤一:Gradle 集成

1. 在工程级的 build.gradle 中加入 maven 依赖
i. 添加 buildscript 和 allprojects(gradle 7.0 以上不需要添加 allprojects)
gradle 7.0 以下版本采用如下配置:


gradle 7.0 以上版本采用如下配置
Gradle 7.0 以上版本不支持 allprojects。allproject 的 maven 依赖需要在 setting.gradle 中配置。如下图:


参见代码:
maven {url'https://qapm-maven.pkg.coding.net/repository/qapm_sdk/android_release/'}
ii. 在 buildscript 中的 com.android.tools.build:gradle:*.*.* 要填写成您的 gradle plugin 版本。如下图:



说明:
1. Gradle 版本和 gradle plugin 版本可以在菜单 file->project structure 中查看。如下图:



2. Gradle 和 gradle plugin 相对应关系,如下图。



2. 在 App 的 build.gradle 中引入模块(studio 版本在 3.0 以下的请使用 compile 的引用头)


参见代码:
implementation 'com.tencent.qapm:qapmsdk:5.3.9-pub'
3. 引入 kotlin 依赖
i. 在工程级的 build.gradle 下加入如下代码:


参见代码:
ext.kotlin_version = '1.3.41'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
ii. 在 App 的 build.gradle 下加入如下代码:


参见代码:
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
4. 在工程级的 build.gradle 文件中加入以下配置


参见代码:
classpath 'com.tencent.qapmplugin:qapm-plugin:2.39'
5. 在 App 的 build.gradle 文件中加入以下配置



参见代码:
apply plugin: 'qapm-plugin'
QAPMPluginConfig{
// 可选,默认为空,请在Application所在的类中输入attachBaseContext,看有没有这个的重写方法,如果没有则需要配置该项,如下图所示就是无需配置该项的校验    // tinkerApplication = 'com/tencent/qapm/demoApplication'
}
说明:
若未配置4-5项,则会影响“App 启动”的数据上报。

步骤二:参数配置

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符号表上传插件,可以直接使用该变量)。
// 该变量会在build时生成,爆红不用理
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

初始化的接口分析

1. 接口名称:public static QAPM setProperty(int key, Stringvalue)
用途:设置 QAPM 的相关参数
参数:key -需要设置的 Key
可选项:
QAPM.PropertyKeyLogLevel:开启日志等级(建议 Debug 版本开启 QAPM.LevelDebug,release 版本开启 QAPM.LevelWarn)
QAPM.PropertyNeedTranslate:堆栈是否需要翻译,这里默认是需要翻译的,如果 apk 是没有混淆的需要传入 false,否则前端可能会全部展示为 unTranslated。
2. 接口名称:public static boolean beginScene(String sceneName, int mode)
用途:开启监控
参数: sceneName-场景名,mode-开启的功能。
可选项:
QAPM.ModeStable:开启全部功能(建议外发版本开启。包含区间性能、crash、anr、webview 页面加载、JsError、网络)
QAPM.ModeWebView:开启 WebView 页面加载监控
QAPM.ModeJsError:开启 WebView 的 JS 异常监控
QAPM.ModeHTTPInWeb:开启 WebView 的网络监控
QAPM.ModeHTTP:开启网络监控
注意:
1. 正式版本建议开启 QAPM.ModeStable,研发版本建议开启 QAPM.ModeAll。
2. 默认会开启 ModeStable 功能,可基于 ModeStable 使用或运算的方式增加需要的功能,如开启 Stable 和内存触顶: beginScene(“Stable&触顶”, QAPM.ModeStable| QAPM.ModeCeiling)。可使用异或运算符排除不需要的功能,如关闭网络:QAPM.ModeStable^QAPM.ModeHTTP。
3. 接口名称: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 运行。