移动性能监控 SDK 详细集成文档

一. Gradle配置

  • 在 Project 的 build.gradle 文件中添加ArgusAPM的相关配置,示例如下:
  1. 在项目根目录的 build.gradle(注意:不是 app/build.gradle 中添加以下配置:
  2.  
  3. buildscript {
  4. repositories {
  5. jcenter()
  6. }
  7.  
  8. dependencies {
  9. classpath 'com.android.tools.build:gradle:2.2.3'
  10. classpath 'com.qihoo360.argusapm:argus-apm-gradle-asm:3.0.1.1001'
  11. }
  12. }
  13.  
  14. allprojects {
  15. repositories {
  16. jcenter()
  17. }
  18. }
  • 在app的build.gradle 文件中添加插件引用,示例如下:
  1. apply plugin: 'argusapm'
  2.  
  3. //在android的配置代码块里面(为了兼容Android6.0系统):
  4. android {
  5. useLibrary org.apache.http.legacy
  6. }
  • 特殊配置如果接入过程一切正常,可忽略该部分。

ArgusAPM的部分监控代码,是通过Gradle的Transform API,在编译期织入的,由于我们在开发中可能会引入各种lib库,而这些库可能会因各种各样的原因,不允许我们织入,具体表现就是,编译期报如下错:

can't determine superclass of missing type

when weaving type

when weaving classes

when weaving

when batch building BuildConfig[null] #Files=0 AopXmls=#0[Xlint:cantFindType]

如果您在编译期遇到如上问题,则需要找到对应报错的库,把这个库过滤掉,具体过滤方式:

1)在主项目build.gradle同级目录下,新增argusapm.gradle文件,内容如下:

  1. apply plugin: 'argusapm'
  2.  
  3. argusApmAjxConfig
  4. {
  5. exclude 'com.qihoo360.xxx' // 跳过 com.qihoo360.xxx包下的所有文件
  6. excludeJar 'libammsdk' // 跳过 libammsdk.jar
  7. }

2)将app的build.gradle中的apply plugin: ‘argusapm’ 修改为apply from: ‘argusapm.gradle’。

二. AndroidManifest.xml配置

a. 权限相关

  1. <!--需要申请如下权限-->
  2. <uses-permission android:name="android.permission.INTERNET" />
  3. <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
  4. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
  5. <uses-permission android:name="android.permission.BATTERY_STATS" />
  6. <uses-permission android:name="android.permission.READ_PHONE_STATE" />
  7. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  8. <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
  9. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

b. 组件使用需要在AndroidManifest.xml里添加如下组件声明:

  1. <provider
  2. android:name="com.argusapm.android.core.storage.ApmProvider"
  3. android:authorities="{当前应用的applicationId}.apm.storage"
  4. android:exported="false" />

三. 代码部分(重要类介绍及使用方法)

  • Config.ConfigBuilder配置项方法说明:

    方法说明
    setAppContext设置ArgusAPM所需要的上下文环境(必选)
    setAppName设置APP名称(英文,必选)
    setAppVersion设置APP版本号(必选)
    setApmid设置ArgusAPM分配给应用的唯一标识appkey(必选,由移动性能监控服务提供,不可随意设置)
    setRuleRequest设置云规则请求
    setUpload设置ArgusAPM采集到的数据上传
    setEnabled设置ArgusAPM在当前进程是否启用某个收集模块的逻辑,用于多进程场景(可选),参数见flag说明
    setDisabled设置ArgusAPM在当前进程是否禁用某个收集模块的逻辑,用于多进程场景(可选),参数见flag说明
    build最终生成Config对象
  • Client类的主要方法(启动移动性能监控服务):

    方法说明
    attach使用Config.ConfigBuilder初始化ArgusAPM(建议在Application的attachBaseContext里调用)
    isDebugOpen是否开启debug模式,,如果开启的话,则会有悬浮窗功能
    startWork启用ArgusAPM开始工作

四. 一个简单的SDK初始化代码

在项目的Application的attachBaseContext里调用如下代码即可

  1. // 注:根据实际情况,来选择主进程
  2. // 如果您有常驻进程,则主进程是常驻进程
  3. // 如果您是单进程模型,则主进程是UI进程
  4. boolean isMainProcess = TextUtils.equals(getPackageName(), getCurrentProcessName());
  5. Config.ConfigBuilder builder = new Config.ConfigBuilder()
  6. .setAppContext(this)
  7. .setRuleRequest(new RuleSyncRequest())
  8. .setUpload(new CollectDataSyncUpload())
  9. .setAppName("apm_demo")
  10. .setAppVersion("0.0.1")
  11. .setApmid("apm_demo");
  12. //单进程应用可忽略builder.setDisabled相关配置。
  13. if(!isMainProcess) {
  14.  
  15. //除了“主进程”,其他进程不需要进行数据上报、清理等逻辑。“主进程”通常为常驻进行,如果无常驻进程,即为UI进程。
  16. builder.setDisabled(ApmTask.FLAG_DATA_CLEAN) //只有主进程才清理数据
  17. .setDisabled(ApmTask.FLAG_CLOUD_UPDATE)//只有主进程才执行云控
  18. .setDisabled(ApmTask.FLAG_DATA_UPLOAD)//只有主进程才执行数据上报
  19. .setDisabled(ApmTask.FLAG_COLLECT_ANR)//只有主进程才收集ANR
  20. .setDisabled(ApmTask.FLAG_COLLECT_FILE_INFO) //只有主进程才收集文件信息
  21. .setDisabled(ApmTask.FLAG_COLLECT_CPU);//只有主进程才收集CPU数据
  22. }
  23. //builder.setEnabled(ApmTask.FLAG_COLLECT_ACTIVITY_AOP); //activity采用aop方案时打开,默认关闭即可。
  24. //builder.setEnabled(ApmTask.FLAG_LOCAL_DEBUG); //是否读取本地配置,默认关闭即可。
  25.  
  26. Client.attach(builder.build());
  27. // Client.isDebugOpen(true, getPackageName());// 是否展示debug模式悬浮窗。根据项目需求添加
  28. Client.startWork();

注意:

  • apmid(appkey)名称必须保证唯一性,由Argus APM统一分配,请勿随意填写。

    申请地址:现已停止对外接入服务,详情请查看首页公告!

如此,移动性能监控 SDK就接入完成,更多技巧请参考详细接入文档。

五. 接入成功日志输出

接入完毕,运行应用,如果看到以下log,说明接入成功:

详细集成文档 - 图1

六. 混淆相关

无需任何混淆配置,因为ArgusAPM的AAR自带Proguard文件,直接接入ArgusAPM-SDK即可生效。