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级别的日志回捞和主动上报日志,以及在崩溃时上报日志,用来有效排查单点问题。​
注意​
SDK 方式接入只支持自定义日志,不支持 APMPlus 日志​
步骤一:接入依赖​
  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 "";​
}​
});​
//需在主线程调用:init 内部会创建 Handler,在没有 Looper 的子线程(如 RxJava 的 io 线程)中调用会抛出 RuntimeException​
//拉取平台配置的回捞命令时机:回捞组件默认初始化时候会拉取一次命令.​
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.10.15 20:24:46
这个页面对您有帮助吗?
有用
有用
无用
无用