本文介绍如何通过本地集成方式添加依赖接入性能分析服务的Android SDK。
性能分析服务的Android SDK接入可采用Maven集成和本地集成2种方式添加依赖。推荐使用Maven集成方式添加依赖,可大幅简化接入操作。
如需使用Maven集成方式添加依赖,操作方法请参见Android SDK接入(Maven集成)。
前提条件
使用限制
仅支持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和ackageName。
参数
说明
AppKey
用于唯一标识App。由系统生成,8位数字。
AppSecret
用于认证App。由系统生成,32位字符串。
PackageName
用于标识App的名称。由用户自定义。
获取公钥。
打开已下载配置文件,查询
appmonitor.rsaSecret
字段内容,即为性能分析公钥。
为避免在日志中泄漏参数
appkey
/appsecret
/rsaSecret
或App运行过程中产生的数据,建议线上版本关闭SDK调试日志。由于所有用户使用统一的SDK接入,在接入过程中需要在代码中设置
appkey
/appsecret
/rsaSecret
参数,而此类参数与计量计费密切相关,为防止恶意反编译获取参数造成信息泄漏,建议您开启混淆,并进行App加固后再发布上线。
应用插件
在
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版本。 【示例】 |
在
build.gradle
项目文件中添加代码段应用插件。
apply plugin: 'com.aliyun.emas.networkmonitor'
添加依赖
将SDK包内所有文件拷贝至项目的libs目录下。
在
build.gradle
项目文件中,添加本地SDK文件目录地址。
repositories {
flatDir {
dirs 'libs'
}
}
在
build.gradle
项目文件的dependencies{}
代码段,添加SDK依赖。
//1、本地jar库引入
compile fileTree(include: ['*.jar'], dir: 'libs')
//2、公共库
compile (name: 'alicloud-android-ha-adapter-1.2.3.0-open', ext: 'aar')
compile (name: 'alicloud-android-ha-core-1.1.0.7-open', ext: 'aar')
compile (name: 'alicloud-android-ha-protocol-1.1.4.0-open', ext: 'aar')
compile (name: 'alicloud-android-utdid-2.6.0', ext: 'jar')
compile (name: 'fastjson-1.1.73.android', ext: 'jar')
compile (name: 'alicloud-android-tool-1.0.3', ext: 'aar')
compile (name: 'alicloud-android-rest-1.7.7-open', ext: 'aar')
compile (name: 'alicloud-android-setting-service-1.1.0', ext: 'aar')
compile (name: 'alicloud-android-logger-1.0.2', ext: 'aar')
//3、性能监控,不接入可注释掉
compile (name: 'alicloud-android-ha-apm-1.1.2.0-open', ext: 'aar')
compile (name: 'alicloud-android-ha-apm-impl-1.1.1.0-open', ext: 'aar')
compile (name: 'alicloud-android-networkmonitor-1.6.4', ext: 'aar')
接入服务
预初始化SDK
预初始化SDK可以在Appcalition.onCreate函数中完成。
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
AliHaAdapter.getInstance().preStart(this);
}
}
开启性能分析
在同意隐私协议之后,可以开启崩溃分析。
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 | 用于指定性能分析公钥。 【数据类型】字符串 【是否必选】是 【是否可为空】否 【默认值】无 |
在
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未获取数据、数据发送失败、后端问题,请联系我们解决。