本文介绍如何通过本地集成方式添加依赖接入性能分析服务的Android SDK。

说明
  • 性能分析服务的Android SDK接入可采用Maven集成和本地集成2种方式添加依赖。推荐使用Maven集成方式添加依赖,可大幅简化接入操作。
  • 如需使用Maven集成方式添加依赖,请参见Android SDK接入(Maven集成)

样例代码

Demo工程

使用限制

  • 仅支持Android 4.2及以上版本。
  • 仅支持arm64-v8a、armeabi-v7a、x86和x86_64架构。
  • 仅支持gradle 3.0.0及以上版本。
  • 仅支持以下网络库版本:
    • okhttp2:2.0.0~2.7.5
    • okhttp3:3.0.0~3.14.7
    • okhttp4:4.0.0~4.8.1

步骤一:创建监控任务

  1. 登录ARMS控制台,在左侧导航栏中单击App监控
  2. App监控页面,单击右上角的创建App监控任务
  3. 接入中心面板,单击Android App
    接入App监控
  4. 在接入面板的Step 1区域输入App名称PackageName,选择App的平台,然后单击创建应用
    创建APP监控任务
  5. Step 2区域,根据页面提示下载aliyun-emas-services.json文件。
    查看配置
  6. 打开aliyun-emas-services.json文件,获取emas.appKeyemas.appSecretemas.packageNameappmonitor.rsaSecret内容。
    aliyun-emas-services
    说明
    • 为避免在日志中泄漏参数appkey、appsecret、rsaSecret或App运行过程中产生的数据,建议线上版本关闭SDK调试日志。
    • 由于所有用户使用统一的SDK接入,在接入过程中需要在代码中设置appkey、appsecret、rsaSecret参数,而此类参数与计量计费密切相关,为防止恶意反编译获取参数造成信息泄漏,建议您开启混淆,并进行App加固后再发布上线。具体操作,请参见(可选)步骤五:混淆配置

步骤二:应用插件

  1. 在项目级build.gradle文件的buildscript{}代码段添加插件依赖。
    说明 此处仅添加插件依赖,应用依赖需添加至build.gradle项目文件的dependencies{}代码段下。具体操作,请参见步骤三:添加依赖
    buildscript {repositories {google()jcenter()}dependencies {classpath 'com.android.tools.build:gradle:${gradle-version}'
    classpath 'com.aliyun.ams:alicloud-android-networkmonitor-plugin:1.3.0-open'}}

    其中,gradle-version用于指定实际开发环境的Gradle版本,例如:classpath 'com.android.tools.build:gradle:4.8.1'

  2. 在应用级build.gradle文件中添加代码段应用插件。
    apply plugin: 'com.aliyun.emas.networkmonitor'

步骤三:添加依赖

  1. 下载SDK,并将SDK包内所有文件拷贝至项目的libs目录下。
    SDK包文件列表如下:
    • alicloud-android-apm-1.1.0.0-open.aar
    • alicloud-android-ha-adapter-1.1.5.2-open.aar
    • alicloud-android-ha-apm-impl-1.0.9.1-open.aar
    • alicloud-android-ha-core-1.1.0.6.1-open.aar
    • alicloud-android-ha-protocol-1.1.2.0-open.aar
    • alicloud-android-ha-tbrest-1.1.5.0-open.aar
    • alicloud-android-networkmonitor-1.6.1.aar
    • alicloud-android-rest-1.6.3-open.aar
    • alicloud-android-utdid-2.5.3.jar
    • fastjson-2.0.9.android.jar
  2. 在项目级build.gradle文件中,添加本地SDK文件目录地址。
    repositories {
       flatDir {
           dirs 'libs'
       }
    }
  3. 在应用级build.gradle文件的dependencies{}代码段中添加SDK依赖。
        //1、本地JAR库引入
        compile fileTree(include: ['*.jar'], dir: 'libs')
        //2、公共库
        compile (name: 'alicloud-android-ha-adapter-1.1.5.2-open', ext: 'aar')
        compile (name: 'alicloud-android-ha-core-1.1.0.6.1-open', ext: 'aar')
        compile (name: 'alicloud-android-ha-protocol-1.1.2.0-open', ext: 'aar')
        compile (name: 'alicloud-android-ha-tbrest-1.1.5.0-open', ext: 'aar')
        compile (name: 'alicloud-android-utdid-2.5.3', ext: 'jar')
        compile (name: 'fastjson-2.0.9.android', ext: 'jar')
        //3、性能监控,不接入可注释掉
        compile (name: 'alicloud-android-ha-apm-1.1.0.0-open', ext: 'aar')
        compile (name: 'alicloud-android-ha-apm-impl-1.0.9.1-open', ext: 'aar')
        compile (name: 'alicloud-android-networkmonitor-1.6.1', ext: 'aar)
        compile (name: 'alicloud-android-rest-1.6.3-open', ext: 'aar)

步骤四:接入性能分析服务

  1. 定义Application类,编写onCreate方法,启动服务。
    public class MyApplication extends Application {
            @Override
            public void onCreate() {
                initHa();
            }
            private void initHa() {
                 AliHaConfig config = new AliHaConfig();
                 config.appKey = "xxxxxxxx"; //替换为步骤一中获取的AppKey。
                 config.appVersion = "x.xx"; //设置App的版本号。
                 config.appSecret = "xxxxxxxxxxxx"; //替换为步骤一中获取的AppSecret。
                 config.channel = "mqc_test"; //设置渠道标识,上报至服务端,进行渠道区分。
                 config.userNick = null; //设置用户昵称,上报至服务端,进行用户区分。后续可能依据该参数,进行数据检索。
                 config.application = this; 
                 config.context = getApplicationContext(); 
                 config.isAliyunos = false; //App所在平台是否为YunOS。
                 config.rsaPublicKey = "xxxxxxx"; //替换为步骤一中获取的appmonitor.rsaSecret。
                 AliHaAdapter.getInstance().addPlugin(Plugin.apm);
                 AliHaAdapter.getInstance().start(config);
            }
        }
  2. AndroidManifest.xml中添加代码段注册Application。
    <application
            android:name=".MyApplication"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:supportsRtl="true"
            android:theme="@style/AppTheme" >
    </application>

(可选)步骤五:混淆配置

如需App对代码进行乱序混淆,则在混淆配置文件中添加以下代码段:
-keep class com.taobao.monitor.impl.**{*;}
-keep class com.taobao.monitor.adapter.**{*;}
-keep class com.taobao.application.common.**{*;}
-keep class com.facebook.drawee.generic.RootDrawable{*;}
-keep class com.facebook.drawee.drawable.FadeDrawable{*;}
-keep class androidx.fragment.app.Fragment{*;}
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*,EnclosingMethod

步骤六:编译

如同时使用其他阿里云产品,可能会因为依赖中存在UTDID冲突,造成编译失败。解决办法,请参见SDK UTDID冲突解决方案

功能验证

Android SDK接入操作完成后,可操作App,查看性能分析服务控制台显示数据,进行功能验证。

  1. 在手机端启动App,一段时间后在控制台查看概览页签的启动速度是否显示数据。
  2. 在手机端App中跳转几个页面。一段时间后在控制台查看概览页签的加载时间是否显示数据。
    说明 数据从App采集到控制台显示,存在大约2分钟延迟。

    如数据显示正常,则Android SDK接入成功;如未接入成功,可能的原因是:SDK接入失败、SDK未获取数据、数据发送失败、后端问题,请联系技术支持

SDK版本说明

版本号 发布日期 变更说明
1.0.10.0-open 2021年05月13日 代码优化。
1.0.8.2-open 2020年12月18日 代码优化。
1.0.8.1-open 2020年11月24日 优化编译构建问题。
1.0.8.0-open 2020年11月12日 新增网络异常分析功能。
其他历史版本。