本文介绍如何通过Maven集成方式添加依赖接入性能分析服务的Android SDK。
性能分析服务的Android SDK接入可采用Maven集成和本地集成两种方式添加依赖。推荐使用Maven集成方式添加依赖,可大幅简化接入操作。
如需使用本地集成方式添加依赖,操作方法请参见Android SDK接入(本地集成)。
前提条件
使用限制
仅支持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
接入概述
准备
获取应用信息AppKey/AppSecret/PackageName
1:登录移动研发平台 EMAS控制台,打开工作空间概览页面。
2:在我的应用区域,单击Android应用图标,打开指定Android应用的编辑配置页面。
3:在编辑配置页面,查询指定应用的AppKey/AppSecret/PackageName。
各参数说明如下:
参数 | 说明 |
AppKey | 用于唯一标识App。由系统生成,8位数字。 |
AppSecret | 用于认证App。由系统生成,32位字符串。 |
PackageName | 用于标识App的名称。由用户自定义。 |
获取公钥
4:在编辑配置页面,单击下载Android配置按钮,下载指定应用的配置文件:aliyun-emas-services.json
。
5:打开Android配置文件,查询appmonitor.rsaSecret
字段内容,即为性能分析公钥。
为避免在日志中泄漏参数
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版本。 【示例】 |
2:在build.gradle
项目文件中添加代码段应用插件。
apply plugin: 'com.aliyun.emas.networkmonitor'
添加依赖
在build.gradle
项目文件中:
1:在repositories{}
代码段添加阿里云Maven仓库地址。
repositories {
maven { url "http://maven.aliyun.com/nexus/content/repositories/releases" }
}
2:在android{}
代码段设置应用包名和.so库。
android {
......
defaultConfig {
applicationId "com.xxx.xxx" //配置项
......
ndk {
//选择要添加的对应cpu类型的.so库,当前支持四种
abiFilters 'arm64-v8a', 'armeabi-v7a', 'x86', 'x86_64' //配置项
}
......
}
......
}
配置说明如下:
参数 | 说明 |
applicationId | 用于指定App的PackageName。 【数据类型】字符串 【是否必选】是 【是否可为空】否 【默认值】无 |
ndk | 用于指定App的架构,添加对应CPU类型的.so库。 【数据类型】枚举型 【取值范围】
【是否必选】是 【是否可为空】否 【默认值】无 【大小写敏感】否 |
3:在dependencies{}
代码段添加SDK依赖。
dependencies {
......
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "com.squareup.okhttp3:okhttp:${okhttp3version}"//配置项
//线上测试
implementation 'com.aliyun.ams:alicloud-android-ha-adapter:1.2.3.0-open'
implementation 'com.aliyun.ams:alicloud-android-apm:1.1.3.0-open'
......
}
配置说明如下:
参数 | 说明 |
okhttp3version | 用于设置本地开发环境可支持的网络库版本。 【示例】 |
接入服务
1、预初始化SDK
预初始化SDK可以在Appcalition.onCreate函数中完成。
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
AliHaAdapter.getInstance().preStart(this);
}
}
2、开启性能分析
在同意隐私协议之后,可以开启崩溃分析。
private void startHa() {
AliHaConfig config = new AliHaConfig();
config.appKey = "xxxxxxxx"; //配置项
config.appVersion = "x.xx"; //配置项
config.appSecret = "xxxxxxxxxxxx"; //配置项
config.channel = "mqc_test"; //配置项
config.userNick = null; //配置项
config.application = this; //配置项
config.context = getApplicationContext(); //配置项
config.isAliyunos = false; //配置项
config.rsaPublicKey = "xxxxxxx"; //配置项
AliHaAdapter.getInstance().addPlugin(Plugin.apm);
AliHaAdapter.getInstance().start(config);
}
配置说明如下:
参数 | 说明 |
appKey | 用于指定App的AppKey。 【数据类型】字符串 【是否必选】是 【是否可为空】否 【默认值】无 |
appVersion | 用于设置App的版本号。 【数据类型】字符串 【格式要求】自定义 【取值范围】任意长度 说明 该参数值将在控制台显示为下拉列表选项,建议短小凝练。 【是否必选】是 【是否可为空】否 【默认值】无 【大小写敏感】是。例如,vx.x和Vx.x不是一个版本。 【字符类型】英文大小写、数字 说明 该参数不支持中文字符、特殊字符。 |
appSecret | 用于指定App的AppSecret。 【数据类型】字符串 【是否必选】是 【是否可为空】否 【默认值】无 |
channel | 用于设置渠道标识,上报至服务端,进行渠道区分。 【数据类型】字符串 【取值范围】任意长度 【是否必选】否 【是否可为空】是 【默认值】无 【字符类型】英文大小写、数字 说明 该参数不支持中文字符、特殊字符。 |
userNick | 用于设置用户昵称,上报至服务端,进行用户区分。后续可能依据该参数,进行数据检索。 【数据类型】字符串 【取值范围】任意长度 【是否必选】否 【是否可为空】是 【默认值】无 【字符类型】英文大小写、数字。 说明 该参数不支持中文字符、特殊字符。 【命名规范】自定义 |
application | 用于指定本应用。 重要 该参数不能指向其他应用。 【数据类型】对象 【是否必选】是 【是否可为空】否 【默认值】无 |
context | 用于指定App的上下文对象,设置 【数据类型】对象 【是否必选】是 【是否可为空】否 【默认值】无 |
isAliyunos | 用于判断App所在平台是否为YunOS。 【数据类型】布尔型 【取值范围】false/true 【是否必选】否 【是否可为空】是 【默认值】false |
rsaPublicKey | 用于指定性能分析公钥。 【数据类型】字符串 【是否必选】是 【是否可为空】否 【默认值】无 |
3、在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接入工程样例请参见Demo工程。
功能验证
Android SDK接入操作完成后,可操作App,查看性能分析服务控制台显示数据,进行功能验证。
1:手机端:启动App。(2分钟后)控制台:查看概览页签的启动速度是否显示数据。
2:手机端:在App中跳转几个页面。(2分钟后)控制台:查看概览页签的加载时间是否显示数据。
数据从App采集到控制台显示,存在大约2分钟延迟。
如数据显示正常,则Android SDK接入成功;否则,可能的原因是:SDK接入失败、SDK未获取数据、数据发送失败、后端问题,请联系我们解决。