注册 OneAPM,登录账号后点击“Mobile Insight (移动应用性能管理)",点击 添加新应用 进入下载安装页面,然后为您的应用取名,之后将获取应用 Token。
注意:
1.包名不同的应用不能使用同一 Token 。
2.建议不采用重复的应用名称。
打开工程目录下的 build.gradle 文件。 在 dependencies 模块中加入代码:
classpath 'com.oneapm.agent.android:plugin-gradle:5.5.4.5'
//根据实际需要版本修改
classpath 'com.oneapm.agent.android:rewriter:5.5.4.5'
//根据实际需要版本修改
修改 project/app/build.gradle 文件
dependencies {
implementation 'com.oneapm.agent.android:agent:5.5.4.5'
// 根据实际需要版本修改
}
打开主模块目录下的 build.gradle 文件。
在文件头部引入 OneAPM
apply plugin: 'oneapm'
SDK 初始化目前支持以下两种方式,您可以选择其中一种方式进行初始化配置。
将 oneapm.properties 文件拷贝至项目 assets 目录下(如果没有此目录需要自行创建)
打开该文件设置将创建应用时获取的 App Token 赋值给 OneAPMAppKey 并设置 AgentStartupPath,其他设置项根据需要配置。
AgentStartupPath=https://miv2dc.oneapm.com
OneAPMAppKey=YourAppToken
具体其它信息补充可参考属性文件内各个字段的具体含义。
在project/app/build.gradle 文件中添加
oneapm {
defaultConfig {
//配置用户的实际key和数据上传path
oneAPMAppKey 'b4212840-77d5-47df-903b-92b73ac4c41f'
agentStartupPath 'https://miv2dc.oneapm.com'
}
}
其他设置项根据需要配置。
注意:
(1)受 gradle 语法规则限制,在 build.gradle 里配置的各个设置项首字母需要小写,如 oneAPMAppKey 而不能写成 OneAPMAppKey,而在 oneapm.properties 文件里配置的话首字母大小写均可。
(2)若 oneapm.properties 文件和 build.gradle 方式同时配置时,build.gradle 方式优先级更高
如此即完成了 OneAPM Mi SDK 的引入,建议 Rebuild & Clean 项目,来确保 OneAPM 配置生效。
确保应用程序的 AndroidManifest.xml 配置文件中,引入了以下请求授权
<!--发送性能数据到服务器需要该权限-->
<uses-permission android:name="android.permission.INTERNET" />
<!--发送性能数据到服务器需要该权限-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!--sdk读取设备识别码需要该权限-->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
非必选,若想使用 Crash 快照功能,请引入以下授权信息
<uses-permission android:name="android.permission.GET_TASKS" />
注意:如果您的应用使用 proguard 混淆,请配置以下:
-keep class okhttp3.** { *; }
-keep class com.oneapm.** {*;}
-dontwarn com.oneapm.**
注意:如果您希望保留行号信息,建议您在 proguard.cfg 中添加如下代码:
-keepattributes SourceFile, LineNumberTable
本配置为可选项,目的是为了从自身业务维度标记活跃用户,如不进行配置,可以从设备标识维度对用户数据进行分析。
配置相关参数,在 MainActivity 的 onCreate() 中配置对应的用户信息:
//设置用户信息,作为展示的 name
OneApmConfig.setLoginUserName(String userName);
//用户标识切换或者退出时,清除已有用户标识
OneApmConfig.clearLoginUserName();
相关实例:
//设置 MyName 为展示 name
OneApmConfig.setLoginUserName("MyName");
//退出清除用户标识
OneApmConfig.clearLoginUserName();
运行应用程序一段时间,等待应用程序向 OneAPM 发送应用程序性能数据,耐心静候1分钟,即可开始使用 OneAPM 应用性能管理功能。
为了正常解析代码混淆后的 App 崩溃信息,请按照以下步骤上传 mapping 文件:
(1)在应用列表选择刚刚创建的应用,点击进入应用详情界面;
(2)选择“应用设置”模块,点击编辑 mapping 文件列表,即可上传对应版本的 mapping 文件。
针对多进程应用来说,有可能会出现应用多次初始化 sdk 的情况,为了避免这种情况发生,可以在 application 的attachBaseContext(Context base)
方法中调用OneApmConfig.forbidSecondInit(Context context)
方法来防止在其他进程中初始化我们的 sdk。
例如:
override fun attachBaseContext(base: Context) {
super.attachBaseContext(base)
OneApmConfig.forbidSecondInit(this)
}
如果有特殊情况,比如用户给进程改名字的情况,那么 OneApmConfig.forbidSecondInit(this)
方法需要放在更改进程名的方法前面。
在 Logcat 中过滤 oneapm 标签,查看是否有类似如下的日志输出即可 (version 代表发布版本,因版本不同而不同)。
OneAPM started with version :{version} ,表示集成没问题