You need to enable JavaScript to run this app.
文档中心
应用性能监控全链路版

应用性能监控全链路版

复制全文
下载 pdf
Android SDK 接入
Android 组件监控 SDK 接入
复制全文
下载 pdf
Android 组件监控 SDK 接入
如果您的业务本身是一个SDK,想监控自身的稳定性或进行自定义事件打点,可以根据本文接入相关能力。接入SDK后,验证数据上报成功,即可在应用性能监控全链路版平台上使用相关功能。
注意
  • Android组件监控SDK目前支持在中国和海外应用使用。中国使用直接接入,海外使用需要和销售获取上报域名进行配置。
  • SDK在初始化的时候就采集用户信息,请确保采集前已经获得用户授权。用户需授权SDK隐私政策,详情请参见SDK隐私政策,未授权不会采集任何用户信息。
功能介绍
APMPlus提供的SDK监控能力主要包括:
  • DID获取和PV与UV统计
稳定性监控
稳定性监控包括Java崩溃、Native崩溃、ANR和自定义异常。
步骤一:接入依赖
  1. 在project级别的build.gradle添加maven地址。
  • maven {
    url 'https://artifact.bytedance.com/repository/Volcengine/'
    }
  1. 在组件module的build.gradle文件的dependencies中添加以下代码。
  • implementation "com.volcengine:apm_insight_crash:1.5.21"
步骤二:初始化SDK
MonitorCrash.Config config = MonitorCrash.Config.sdk({{AppId}})
.token({{AppToken}})// 数据鉴权token,可从平台应用信息处获取,token错误无法上报数据
.versionCode(1) // 必须SDK版本号
.versionName("1.0") // 必须SDK版本名称
.keywords("a.b.c", "d.e.b") //设置可能出现在崩溃堆栈内的特定字符串(比如包名)不设置不过滤,不支持正则表达式,对Java崩溃和ANR生效
.soList("a.so", "b.so", "c.so") //Native崩溃监控,不设置不上报,不支持正则表达式
//可选,可以设置自定义did,不设置会使用内部默认的
//.dynamicParams(new MonitorCrash.Config.IDynamicParams() {
// @Override
// public String getDid() {//返回空会使用内部默认的did
// return null;
// }
//
// @Override
// public String getUserId() {
// return null;
// }
//})
//可选,添加业务自定义数据,在崩溃详情页展示
//.customData(crashType -> {
// HashMap<String, String> map = new HashMap<>();
// map.put("app_custom", "app_value");
// return map;
//})
//.pageViewTags(map) // 设置PV自定义维度
.build();
MonitorCrash monitorCrash = MonitorCrash.initSDK(this, config);
步骤三:验证数据
崩溃功能介绍,请参见崩溃分析
事件自定义打点
步骤一:接入依赖
  1. 在project级别的build.gradle添加maven地址。
  • maven {
    url 'https://artifact.bytedance.com/repository/Volcengine/'
    }
  1. 在组件module的build.gradle文件的dependencies中添加以下代码。
  • implementation "com.volcengine:apm_insight_sdk:1.1.8"
步骤二:初始化SDK
SDKEventInitConfig.Builder builder = SDKEventInitConfig.builder()
.aid(sSDKAid)//平台的aid
.token(sToken)//平台的token
.context(getApplicationContext())//context
.channel("channel")//SDK渠道
.appVersion("1.0.0")//sdk 的版本号
.updateVersionCode("10001")//sdk 的小版本号
.hostAid("APM_DEMO")// 宿主App的唯一标识
.debugMode(true)//debug模式,会打印测试日志。正式环境设置为release
.setDynamicParams(new SDKEventIDynamicParams() {
@Override
public String getDid() {
//必填,返回设备标识 did,也可以使用业务自己的did
return AppLog.getInstance(sSDKAid).getDid();
}
@Override
public String getUserId() {
//返回用户标识 user id,没有可以为空
return "";
}
});
SDKEventManager.init(builder.build());
步骤三:上报事件
您可以在SDK接入APMPlus时按照以下示例在代码里配置事件上报,也可以在平台添加事件,配置key和value并且配置采样,端上上报即可在平台查看事件。
上报示例:
HashMap<String, String> dimension = new HashMap<>();
//维度值
dimension.put("key1", "value1");
dimension.put("key2", "value2");
HashMap<String, Double> metric = new HashMap<>();
//指标值 指标值必须为数字
metric.put("metric1", (double) 10);
metric.put("metric2", 8.8);
SDKEventManager.getSDKMonitor(aid).monitorEvent("event_test", dimension, metric);
接口说明:
/**
* 事件上报
*
* @param serviceName 事件名
* @param dimension 可枚举Key-Value,标识维度
* @param metric 不可枚举的Key-Value,标识指标
*/
public void monitorEvent(final String serviceName, final Map<String, String> dimension, final Map<String, Double> metric)
/**
* 事件上报
*
* @param serviceName 事件名
* @param dimension 可枚举Key-Value,标识维度
* @param metric 不可枚举的Key-Value,标识指标
* @param logExtra 用户自定义数据,不会生成报表,在单点查询原始日志里面可以看到
*/
public void monitorEvent(final String serviceName, final Map<String, String> dimension, final Map<String, Double> metric,final JSONObject logExtra)
注意
上报事件只支持上述接口,请勿调用其他接口。
步骤四:排查问题
如果没有展示事件,提供排查日志。初始化配置为debug模式,Logcat日志过滤关键字ApmInsight:的所有日志提供给研发人员用于分析和解决问题。
//代表event1 采样没有命中
2021-04-11 21:28:01.317 13535-13592/com.example.apm.insight.demo D/ApmInsight: SDK event:event1 simple:false
//代表event2 采样命中
2021-04-11 21:28:01.771 13535-13592/com.example.apm.insight.demo D/ApmInsight: SDK event:event2 simple:true
步骤五:验证数据
事件功能介绍,请参见事件分析
您也可以通过自定义看板消费事件数据,具体配置请参见自定义看板
日志回捞
支持SDK级别的日志回捞和主动上报日志,以及在崩溃时上报日志,用来有效排查单点问题。
步骤一:接入依赖
  1. 在project级别的build.gradle添加maven地址。
  • maven {
    url 'https://artifact.bytedance.com/repository/Volcengine/'
    }
  1. 在组件module的build.gradle文件的dependencies中添加以下代码。
  • implementation "com.volcengine:apm_insight_cloud:0.0.3.sdk"
步骤二:初始化SDK
//初始化Vlog日志实例。
VLogConfig config = new VLogConfig.Builder(getApplicationContext())
.setLogDirPath(this.getFilesDir() + "/Vlog/" + sSDKAid)//sSDKAid 为平台申请的aid
.setMaxDirSize(5 * 1024 * 1024) // max directory size
.setSubProcessMaxDirSizeRatio(0.1f) // max directory size of each instance for sub process
.setLogFileExpDays(14) // log file expired days
.build();
VLog.createInstance(config, sSDKAid);
//初始化回捞组件
SDKCloudInitConfig.Builder builder = SDKCloudInitConfig.builder();
builder.aid(sSDKAid);//平台的aid
builder.token(sToken);//平台的token
builder.context(getApplicationContext());//上下文context
builder.debugMode(true);//测试阶段设置为debug有log排查日志。线上配置为false
builder.channel("channel");// sdk渠道
builder.updateVersionCode("1.1.1");// sdk的版本号
builder.setDynamicParams(new SDKIDynamicParams() {
@Override
public String getDid() {
//必填,设备唯一标识 did。当前写法为内部默认生成的did,也可以返回业务自己定义的did
return AppLog.getInstance(sSDKAid).getDid();
}
@Override
public String getUserId() {
//用户唯一标识userid,可以为空
return "";
}
});
//拉取平台配置的回捞命令时机:回捞组件默认初始化时候会拉取一次命令.
SDKCloudManager.getInstance().init(builder.build());
//日志打印
ILog iLog = VLog.getInstance(aid);
iLog.i("sdk_cloud", "test i");
iLog.e("sdk_cloud", "test e");
//可选:除了支持日志回捞,在用户反馈情况也支持主动上报Vlog日志。主动上报的日志在平台的 单点追查->自定义文件 输入did可以查询到日志
//上报前一小时的Vlog日志。上报日志会消耗平台事件量,注意合理使用
SDKCloudManager.getSDKCloud(sSDKAid).uploadVlog(System.currentTimeMillis() - 60 * 60 * 1000, System.currentTimeMillis());
方法说明:
SDKCloud.java
/**
* Vlog日志 主动上报
*
* @param start 起始时间 毫秒
* @param end 结束时间 毫秒
*/
public void uploadVlog(long start, long end) {
AlogActiveUploadManager.upLoadVlog(start, end, null, initConfig.getAid());
}
步骤三:验证数据
日志回捞功能介绍,请参见回捞
最近更新时间:2026.05.12 11:28:57
这个页面对您有帮助吗?
有用
有用
无用
无用