接入Android用户体验监控数据

本文介绍如何接入Android用户体验监控数据到全栈可观测应用。

前提条件

已创建2.1.0及以上版本的全栈可观测实例。具体操作,请参见创建全栈可观测实例

步骤一:SDK集成

在Android Studio工程的App或Module级别的build.gradle文件中添加如下配置。

// opentelemetry 协议库
implementation(platform("io.opentelemetry:opentelemetry-bom:1.30.0"))
implementation("io.opentelemetry:opentelemetry-api")
implementation('io.opentelemetry:opentelemetry-sdk')
implementation("io.opentelemetry:opentelemetry-semconv:1.30.0-alpha")

// Android平台崩溃捕获
implementation 'io.github.aliyun-sls:aliyun-log-android-sdk:2.7.0@aar'
implementation 'io.github.aliyun-sls:android-crashreporter:1.0.0@aar'
implementation 'io.github.aliyun-sls:android-exporter-otlp:1.0.0@aar'
implementation 'io.github.aliyun-sls:android-otel-common:1.0.0@aar'

步骤二:权限配置

上报错误监控数据时需要申请网络权限,即需要在AndroidManifest.xml文件中添加以下权限申明。

<uses-permission android:name="android.permission.INTERNET" />

步骤三:初始化SDK

private void initCrashReporter() {
    ConfigurationManager.getInstance().setProvider(
        scope -> AccessKey.accessKey(
            "${access-key-id}",
            "${access-key-secret}",
            "${access-key-token}"),
        scope -> Workspace.workspace("https://${endpoint}", "${project}", "${instanceId}"),
        scope -> {
            Environment environment = Environment.environment();
            // 设置环境信息,默认为default。一般情况下,建议debug版本设置为dev,release版本设置为pub。
            environment.setEnv("default");
            // 设置用户ID,可选。
            //environment.setUid("123456789");
            // 设置设备ID,可选。
            //environment.setUtdid("your device id");
            return environment;
        }
    );
    // 一般情况下,建议debug版本设置为true,release版本设置为false。
    final boolean debuggable = false;
    // 完成SDK初始化。
    CrashReporter.init(context, debuggable);
}

变量说明

变量

说明

示例

${endpoint}

服务入口是访问一个Project及其内部数据的URL,日志服务提供私网域名和公网域名。更多信息,请参见服务入口

cn-hangzhou.log.aliyuncs.com

${project}

日志服务Project名称,更多信息,请参见管理Project

test-project

${instance}

全栈可观测服务实例ID。更多信息,请参见创建实例

test-traces

${access-key-id}

AccessKey ID用于标识用户,更多信息,请参见访问密钥

建议您遵循最小化原则,按需授予RAM用户必要的权限。关于授权的具体操作,请参见创建RAM用户及授权RAM自定义授权示例

${access-key-secret}

AccessKey Secret是用户用于加密签名字符串和日志服务用来验证签名字符串的密钥,必须保密。

${access-key-token}

AccessKey Token,仅当AccessKey是通过STS方式获取时才需要。