更新时间:2024-11-15 GMT+08:00
分享

Android SDK接入

APM Android SDK具备采集上报App启动性能、崩溃、卡顿、错误、网络请求、终端设备、自定义上报等应用监控能力。

当前仅支持华北-北京四的白名单用户,如有需要请提工单申请。

使用前提

使用SDK前,您需要注册华为账号,并在App监控控制台创建移动端Android App。

传输协议

HTTPS

版本更新说明

sdk如何处理个人信息请参考华为云应用性能分析服务数据采集SDK隐私声明

您集成和使用华为的sdk时需要遵从个人信息保护基本要求,详情请参考华为云应用性能分析服务数据采集SDK开发者合规指南

表1 版本更新说明

版本号

SDK下载地址

检验信息下载地址

更新说明

系统

2.0.10

SDK下载

插件下载

SDK下载

插件下载

  1. 复网络错误时上报有null的问题。
  2. 修复插件加载时会出现未完成配置的问题。
  3. 修复插件插桩异常后复制文件失败的问题。

Android 7 及以上

2.0.9

SDK下载

插件下载

SDK下载

插件下载

  1. 插件添加功能开关配置,帮助调试定位问题。
  2. 修复了链路追踪开关的远程配置生效时机错误的问题。
  3. 修复了anr错误栈日志显示重复的问题。

Android 7 及以上

2.0.8

SDK下载

插件下载

SDK下载

插件下载

  1. 修复工程配置导致的冲突问题。

Android 7 及以上

2.0.7

SDK下载

插件下载

SDK下载

插件下载

  1. 支持远程配置功能。

Android 7 及以上

2.0.6

SDK下载

插件下载

SDK下载

插件下载

  1. 修复了配置导致SDK启动失败的问题。

Android 7 及以上

2.0.5

SDK下载

插件下载

SDK下载

插件下载

  1. 适配了 Gradle8.0 以上版本的 transform API。

Android 7 及以上

2.0.4

SDK下载

插件下载

SDK下载

插件下载

  1. 适配配置文件字段,修复插件无法响应日志字段的问题。
  2. 网络拦截升级,修复 URLConnection 只使用部分属性无法上报的问题。

Android 7 及以上

2.0.1

SDK下载

插件下载

SDK下载

插件下载

  1. 提供采集上报App启动性能、崩溃、卡顿、错误、网络请求、终端设备、自定义上报等应用监控能力。

Android 7 及以上

操作步骤

  1. 集成接入SDK。

    1. 方法1:maven仓库集成。
      • 在build.gradle中添加依赖。
        buildscript {
            dependencies {
                ...
                classpath 'io.github.apm-sdk:apm-sdk-plugin:2.0.10'
                ...
            }
        }
        plugins {
            ...
            id 'org.jetbrains.kotlin.android' version 'KOTLIN_VERSION' apply false  // 添加kotlin插件,最低支持1.6.20版本
            ...
        }
      • 在app/build.gradle中添加依赖。
        plugins {
            ...
            id 'org.jetbrains.kotlin.android'
            id 'kotlin-kapt'
            id 'com.cloud.apm.plugin'  // 添加依赖插件
            ...
        }
        dependencies {
            ...
            implementation 'io.github.apm-sdk:apm-sdk-android:2.0.10' // 添加APM SDK依赖
            ...
        }
      • 在 settings.gradle中添加maven仓库源。
        pluginManagement{
            ...
            repositories {
                ...
                // 加入下面内容
                mavenCentral()
           }
        }
        dependencyResolutionManagement {
            ...
            repositories {
                ...
                // 加入下面内容
                mavenCentral()
           }
        }
    2. 方法2:手动集成
      • 下载SDK和插件的文件包。
      • 将扩展名为jar文件的插件包添加到您的项目工程中。
      • 在build.gradle中添加依赖。
        buildscript {
            dependencies {
                classpath fileTree(dir: $dir, include: '*.jar') // 填入jar所在的文件夹,例如 libs
            }
        }
      • 将扩展名为aar文件的SDK包添加到您的项目工程中。
      • 在app/build.gradle中添加依赖。
        dependencies {
            ...
            implementation fileTree(dir: $dir, include: ['*.aar']) // 填入aar所在的文件夹,例如 libs
            implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.0'
            implementation 'androidx.core:core-ktx:1.6.0'
            implementation 'com.google.code.gson:gson:2.8.9'
            kapt 'androidx.room:room-compiler:2.4.0'
            api 'androidx.room:room-runtime:2.4.0'
            api 'androidx.room:room-common:2.4.0'
            ...
        }
      • 在 settings.gradle中添加maven仓库源。
        pluginManagement{
            ...
            repositories {
                ...
                // 加入下面内容
                google()
                mavenCentral()
           }
        }
        dependencyResolutionManagement {
            ...
            repositories {
                ...
                // 加入下面内容
                google()
                mavenCentral()
           }
        }

    如果您的Gradle版本低于7.0 则需要将maven仓库源添加到build.gradle文件中。

  2. 添加配置文件。

    在控制台添加移动端Android App,下载apm-sdk-config.json的配置文件,将其拖拽至app的根目录,如下图所示:

    配置参数说明:

    参数名称

    是否必填

    默认值

    描述

    appId

    -

    移动端AppID。

    authorization

    -

    用于App认证。

    region

    -

    上报APM所处的region,目前支持cn-north-4。

    uid

    -

    用户自定义ID。

    tag

    -

    用户自定义标签,多个时使用英文逗号隔开。

    url

    -

    要上报APM的公网地址域名。

    networkWhiteList

    -

    网络监控白名单,排除监控。

    cacheThreshold

    200条

    当本地数据库日志存储条数达到该值会触发上报,取值范围为30-1000条。

    timeInterval

    60秒

    定时器每隔该值会触发上报,取值范围为60-1800秒。

    reportBackground

    true

    是否开启APP切后台上报功能。

    reportLaunch

    false

    是否开启APP启动时上报功能。如需开启,请在Application的onCreate方法中启动SDK。

    enableNetwork

    false

    使能网络采集。

    enableCrash

    false

    使能崩溃采集。

    enableLaunch

    false

    使能启动采集。

    enableANR

    false

    使能卡顿采集。

    enableError

    false

    使能错误采集。

    enableDevice

    false

    使能终端设备采集。

    enableEvent

    false

    使能用户自定义上报。

    traceType

    apm

    链路追踪类型,开启:otel,关闭:apm。

    logLevel

    off

    调试日志等级:debug|info|warn|error|off。

  3. 启动SDK。

    • Kotlin 代码示例。
      import com.cloud.apm.APMSDK
       
      // 根据apm-sdk-config.json配置文件启动SDK
      APMSDK.start(this)
      
      // (可选)设置自定义ID 
      APMSDK.setUid("自定义ID")
      
      // (可选)设置自定义标签
      APMSDK.addTag("自定义标签1,自定义标签2,自定义标签3")
    • Java 代码示例。
      import com.cloud.apm.APMSDK
      
      // 根据apm-sdk-config.json配置文件启动SDK
      APMSDK.start(); 
      
      // (可选)设置自定义ID  
      APMSDK.setUid("自定义ID");  
      
      // (可选)设置自定义标签  
      APMSDK.addTag("自定义标签1,自定义标签2,自定义标签3");

  4. 自定义上报统计 (可选步骤)。

    方法名称

    参数说明

    fun <T> event(key: String, event: HashMap<String, T>);

    fun <T> event(key: String, event: Array<T>)

    fun event(key: String, event: Number)

    fun event(key: String, event: String)

    key:事件名称, String类型,最大长度为2048个字符。value:事件内容,支持String,Array,HashMap, Number等有效的JSON对象,转JSON字符串最大长度为30720个字符。

    Kotlin 代码示例:

    // 事件统计示例   
    APMSDK.event("User Information", hashMapOf(Pair("name","zhang san"))
    APMSDK.event("Call Stack", listOf("0x0000000101ee9c6c","0x0000600000e61d80").toTypedArray())
    APMSDK.event("Error Description", "The request timed out.")
    
    // 数值统计示例
    APMSDK.event("Purchase Statistic", 1653)
    APMSDK.event("Custom Load Time", 1.653)
    Java 代码示例:
    // 事件统计示例
    HashMap<String, String> user = new HashMap(){{
        put("name","zhang san");
    }};
    APMSDK.event("User Information", user);
    String[] stacks = {"0x0000000101ee9c6c", "0x0000600000e61d80"};
    APMSDK.event("Call Stack", stacks);
    APMSDK.event("Error Description", "The request timed out.");
    
    // 数值统计示例
    APMSDK.event("Purchase Statistic", 1653);
    APMSDK.event("Custom Load Time", 1.653);

数据上报策略

SDK支持四种日志上报策略:阈值上报、定时上报、应用切后台和启动时上报,根据场景选择合适的值配置cacheThreshold、timeInterval、reportBackground、reportLaunch等参数。

混淆配置

如App对代码进行乱序混淆,则在混淆配置文件中添加代码段:

-keep class com.cloud.apm.**{*;} 
# 如果使用gradle 8.x 请自行选择使用下面的配置
-keep classeswithmembers class okhttp3.**{*;} # 使用okhttp3&okhttp4
-dontwarn okhttp3.** # 未使用okhttp3&okhttp4
-keep classeswithmembers class com.squareup.okhttp.**{*;} # 使用 okhttp2
-dontwarn com.squareup.okhttp.** # 未使用 okhttp2

权限配置

APMSDK 需要 Android 的权限如下:网络权限、网络状态权限,权限已经在SDK的Manifest.xml 配置。

开启调试日志

在开发过程中可以启用调试模式,借助控制台日志实时查看SDK运行状况,观察具体结果并根据需要进行调整,调试级别有:debug、info、warn、error、off(关闭)。

示例: 在配置文件apm-sdk-config.json中设置调试级别

{
     "logLevel": "debug"
}

相关文档