全部产品

Android SDK 接入(Maven集成)

更新时间:2020-07-21 19:50:36

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

性能分析服务的Android SDK接入可采用Maven集成和本地集成2种方式添加依赖。推荐使用Maven集成方式添加依赖,可大幅简化接入操作。

如需使用本地集成方式添加依赖,操作方法参见:Android SDK 接入(本地集成)

前置条件

  • 已注册/登录阿里云账号。
  • 已开通性能分析服务。
  • 已创建产品/应用。

具体内容参见快速入门

使用限制

  • 仅支持Android 4.2及以上版本。
  • 仅支持arm64-v8a/armeabi/armeabi-v7a/x86架构。

操作步骤

接入概述

性能分析服务Android SDK接入操作步骤:
步骤1:准备。获取AppKey/AppSecret/PackageName;下载Android配置文件,获取性能分析公钥。
步骤2:添加依赖。采用Maven集成方式添加依赖。
步骤3:接入服务。添加自定义Application,以及SDK初始化代码。
步骤4:混淆配置。如App对代码进行乱序混淆,则修改混淆配置文件。
步骤5:编译。

步骤1:准备

获取AppKey/AppSecret/PackageName;下载Android配置文件,获取性能分析公钥。

获取AppKey/AppSecret/PackageName

1:在“控制台 > 移动研发平台 EMAS > 我的产品”页面,单击Android应用图标,打开指定Android应用的“应用管理”页面。

我的产品

2:在“应用管理”页面,即可获取指定App的AppKey/AppSecret/PackageName。

应用管理

各参数说明如下:

参数 说明
AppKey 用于唯一标识App。由系统生成,8位数字。
AppSecret 用于认证App。由系统生成,32位字符串。
PackageName 用于标识App的名称。由用户自定义。
获取性能分析公钥

3:在“应用管理”页面,单击“应用配置”按钮,打开“编辑配置”右侧栏。

应用配置

4:在“编辑配置”右侧栏,单击“下载Android配置”按钮,下载Android配置文件:aliyun-emas-services.json

下载Android配置

5:打开Android配置文件,查询appmonitor.tlog.rsaSecret/appmonitor.rsaSecret字段内容,即为性能分析公钥。

公钥

步骤2:添加依赖

build.gradle项目文件中:

1:添加阿里云Maven仓库地址。

  1. repositories {
  2. maven { url "http://maven.aliyun.com/nexus/content/repositories/releases" }
  3. }

2:在android{}代码段修改默认配置项。

  1. android {
  2. ......
  3. defaultConfig {
  4. applicationId "com.xxx.xxx"
  5. ......
  6. ndk {
  7. //选择要添加的对应cpu类型的.so库,当前支持四种
  8. abiFilters 'arm64-v8a', 'armeabi', 'armeabi-v7a', 'x86'
  9. }
  10. ......
  11. }
  12. ......
  13. }

配置说明如下:

参数 说明
applicationId 用于指定App的PackageName。
【数据类型】字符串
【如何获取】参见:步骤1
【是否必选】是
【是否可为空】否
【默认值】无
ndk 用于指定App的架构,添加对应CPU类型的.so库。
【数据类型】枚举型
【取值范围】
• arm64-v8a
• armeabi
• armeabi-v7a
• x86
【是否必选】是
【是否可为空】否
【默认值】无
【大小写敏感】否

3:在dependencies{}代码段添加SDK依赖。

  1. dependencies {
  2. ......
  3. compile('com.aliyun.ams:alicloud-android-ha-adapter:1.1.3.4-open@aar') {
  4. transitive=true
  5. }
  6. compile('com.aliyun.ams:alicloud-android-apm:1.0.7.9-open@aar') {
  7. transitive=true
  8. }
  9. ......
  10. }

步骤3:接入服务

1、定义Application类,编写onCreate方法,启动服务。

  1. public class MyApplication extends Application {
  2. @Override
  3. public void onCreate() {
  4. initHa();
  5. }
  6. private void initHa() {
  7. AliHaConfig config = new AliHaConfig();
  8. config.appKey = "xxxxxxxx";
  9. config.appVersion = "x.xx";
  10. config.appSecret = "xxxxxxxxxxxx";
  11. config.channel = "mqc_test";
  12. config.userNick = null;
  13. config.application = this;
  14. config.context = getApplicationContext();
  15. config.isAliyunos = false;
  16. config.rsaPublicKey = "xxxxxxx";
  17. AliHaAdapter.getInstance().addPlugin(Plugin.apm);
  18. AliHaAdapter.getInstance().start(config);
  19. }
  20. }

配置说明如下:

参数 说明
appKey 用于指定App的AppKey。
【数据类型】字符串
【如何获取】参见:步骤1
【是否必选】是
【是否可为空】否
【默认值】无
appVersion 用于设置App的版本号。
【数据类型】字符串
【格式要求】自定义
【取值范围】任意长度。说明:该参数值将在控制台显示为下拉列表选项,建议短小凝练。
【是否必选】是
【是否可为空】否
【默认值】无
【大小写敏感】是。例如,vx.x和Vx.x不是一个版本。
【字符类型】英文大小写、数字。说明:不支持中文字符、特殊字符。
appSecret 用于指定App的AppSecret。
【数据类型】字符串
【如何获取】参见:步骤1
【是否必选】是
【是否可为空】否
【默认值】无
channel 用于设置渠道标识,上报至服务端,进行渠道区分。
【数据类型】字符串
【取值范围】任意长度
【是否必选】否
【是否可为空】是
【默认值】无
【字符类型】英文大小写、数字。说明:不支持中文字符、特殊字符。
userNick 用于设置用户昵称,上报至服务端,进行用户区分。后续可能依据该参数,进行数据检索。
【数据类型】字符串
【取值范围】任意长度
【是否必选】否
【是否可为空】是
【默认值】无
【字符类型】英文大小写、数字。说明:不支持中文字符、特殊字符。
【命名规范】自定义
application 用于指定本应用。注意:不能指向其他应用。
【数据类型】对象
【是否必选】是
【是否可为空】否
【默认值】无
context 用于指定App的上下文对象,设置getApplicationContext();即可。
【数据类型】对象
【是否必选】是
【是否可为空】否
【默认值】无
isAliyunos 用于判断App所在平台是否为YunOS。
【数据类型】布尔型
【取值范围】false/true
【是否必选】否
【是否可为空】是
【默认值】false
rsaPublicKey 用于指定性能分析公钥。
【数据类型】字符串
【如何获取】参见:步骤1
【是否必选】是
【是否可为空】否
【默认值】无

2:在AndroidManifest.xml中添加代码段注册Application。

  1. <application
  2. android:name=".MyApplication"
  3. android:icon="@mipmap/ic_launcher"
  4. android:label="@string/app_name"
  5. android:supportsRtl="true"
  6. android:theme="@style/AppTheme" >
  7. </application>

步骤4:混淆配置

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

  1. -keep class com.taobao.monitor.APMLauncher{*;}
  2. -keep class com.taobao.monitor.impl.logger.Logger{*;}
  3. -keep class com.taobao.monitor.impl.logger.IDataLogger{*;}
  4. -keep class com.taobao.monitor.impl.data.AbsWebView{*;}
  5. -keep class com.taobao.monitor.impl.data.GlobalStats{*;}
  6. -keep class com.taobao.monitor.impl.common.Global{*;}
  7. -keep class com.taobao.monitor.impl.data.WebViewProxy{*;}
  8. -keep class com.taobao.monitor.impl.logger.Logger{*;}
  9. -keep class com.taobao.monitor.impl.processor.pageload.IProcedureManager{*;}
  10. -keep class com.taobao.monitor.impl.processor.pageload.ProcedureManagerSetter{*;}
  11. -keep class com.taobao.monitor.impl.util.TimeUtils{*;}
  12. -keep class com.taobao.monitor.impl.util.TopicUtils{*;}
  13. -keep class com.taobao.monitor.impl.common.DynamicConstants{*;}
  14. -keep class com.taobao.application.common.data.DeviceHelper{*;}
  15. -keep class com.taobao.application.common.impl.AppPreferencesImpl{*;}
  16. -keep class com.taobao.monitor.impl.processor.launcher.PageList{*;}
  17. -keep class com.taobao.monitor.impl.processor.fragmentload.FragmentInterceptorProxy{*;}
  18. -keep class com.taobao.monitor.impl.processor.fragmentload.IFragmentInterceptor{*;}
  19. -keep class com.taobao.monitor.impl.logger.DataLoggerUtils{*;}
  20. -keep interface com.taobao.monitor.impl.data.IWebView{*;}
  21. -keep interface com.taobao.monitor.impl.processor.IProcessor{*;}
  22. -keep interface com.taobao.monitor.impl.processor.IProcessorFactory{*;}
  23. -keep interface com.taobao.monitor.impl.logger.IDataLogger{*;}
  24. -keep interface com.taobao.monitor.impl.trace.IDispatcher{*;}
  25. -keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*,EnclosingMethod

步骤5:编译

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

样例代码

性能分析服务Android SDK接入工程样例参见:Demo工程

功能验证

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

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

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