全部产品

Android EMAS统一接入

更新时间:2020-08-25 16:57:55

介绍

  • 为方便EMAS各产品SDK快速、轻量接入,EMAS提供了统一的SDK依赖方式,供各产品SDK添加依赖使用。用户使用统一接入后,无需手动管理各产品SDK依赖,由插件自行接管完成读取和配置。
  • 部分产品支持读取json文件中的AppKey等信息,以二级产品具体的接入文档为准。
  • EMAS支持基于Gradle的emas-services插件,同时添加多个二级产品的SDK依赖。

使用说明

配置文件下载及说明

配置文件下载请参见EMAS 快速入门>下载配置文件,并将json文件放到应用根目录下(/app/)。Android端配置文件:aliyun-emas-services.json其内容如下:

  1. {
  2. "config": {
  3. "emas.appKey":"xxxxx",
  4. "emas.appSecret":"xxxxxx",
  5. "emas.packageName":"com.xxx.xxx.demo",
  6. "hotfix.idSecret":"xxxxx",
  7. "hotfix.rsaSecret":"xxxxx",
  8. "httpdns.accountId":"xxxxx",
  9. "httpdns.secretKey":"xxxxxxxxx"
  10. "appmonitor.tlog.rsaSecret":"xxxxxxxxxx",
  11. "appmonitor.rsaSecret":"xxxxxxxxxx"
  12. },
  13. "services": {
  14. "hotfix_service":{
  15. "status":1,
  16. "version":"3.2.14"
  17. },
  18. "ha-adapter_service":{
  19. "status":1,
  20. "version":"1.1.3.4-open"
  21. },
  22. "feedback_service":{
  23. "status":1,
  24. "version":"3.3.1"
  25. },
  26. "tlog_service":{
  27. "status":1,
  28. "version":"1.1.2.3-open"
  29. },
  30. "httpdns_service":{
  31. "status":1,
  32. "version":"1.3.2.3"
  33. },
  34. "apm_service":{
  35. "status":1,
  36. "version":"1.0.7.9-open"
  37. },
  38. "man_service":{
  39. "status":1,
  40. "version":"1.2.4"
  41. },
  42. "cps_service":{
  43. "status":1,
  44. "version":"3.1.12"
  45. }
  46. },
  47. "use_maven":true,
  48. "proguard_keeplist":"\n#httpdns\n-keep class com.taobao.** {*;}\n-keep class com.alibaba.** {*;}\n-keep class com.ta.**{*;}\n-keep class com.ut.**{*;}\n-dontwarn com.taobao.**\n-dontwarn com.alibaba.**\n-dontwarn com.ta.**\n-dontwarn com.ut.**\n\n#cps\n-keep class com.taobao.** {*;}\n-keep class com.alibaba.** {*;}\n-keep class com.ta.**{*;}\n-keep class com.ut.**{*;}\n-dontwarn com.taobao.**\n-dontwarn com.alibaba.**\n-dontwarn com.ta.**\n-dontwarn com.ut.**\n-keepclasseswithmembernames class ** {\nnative <methods>;\n}\n-keepattributes Signature\n-keep class sun.misc.Unsafe { *; }\n-keep class com.alipay.** {*;}\n-dontwarn com.alipay.**\n-keep class anet.**{*;}\n-keep class org.android.spdy.**{*;}\n-keep class org.android.agoo.**{*;}\n-dontwarn anet.**\n-dontwarn org.android.spdy.**\n-dontwarn org.android.agoo.**\n\n#hotfix\n#基线包使用,生成mapping.txt\n-printmapping mapping.txt\n#生成的mapping.txt在app/buidl/outputs/mapping/release路径下,移动到/app路径下\n#修复后的项目使用,保证混淆结果一致\n#-applymapping mapping.txt\n#hotfix\n-keep class com.taobao.sophix.**{*;}\n-keep class com.ta.utdid2.device.**{*;}\n#防止inline\n-dontoptimize\n\n#man\n-keep class com.taobao.** {*;}\n-keep class com.alibaba.** {*;}\n-keep class com.ta.**{*;}\n-keep class com.ut.**{*;}\n-dontwarn com.taobao.**\n-dontwarn com.alibaba.**\n-dontwarn com.ta.**\n-dontwarn com.ut.**\n\n#feedback\n-keep class com.taobao.** {*;}\n-keep class com.alibaba.** {*;}\n-keep class com.ta.**{*;}\n-keep class com.ut.**{*;}\n-dontwarn com.taobao.**\n-dontwarn com.alibaba.**\n-dontwarn com.ta.**\n-dontwarn com.ut.**\n"
  49. }

配置文件引用

在项目级目录下build.gradle(/build.gradle)文件中添加阿里云Maven仓库地址和emas-services插件。

  1. buildscript {
  2. repositories {
  3. maven {
  4. url 'http://maven.aliyun.com/nexus/content/repositories/releases/'
  5. }
  6. }
  7. dependencies {
  8. // 添加emas-services插件
  9. classpath 'com.aliyun.ams:emas-services:1.0.1'
  10. }
  11. }
  12. allprojects {
  13. repositories {
  14. ...
  15. maven {
  16. url 'http://maven.aliyun.com/nexus/content/repositories/releases/'
  17. }
  18. }
  19. }

在应用级build.gradle(<project>/<app-module>/build.gradle)文件中添加代码段,应用插件。

  1. // 在 apply plugin: 'com.android.application' 下添加
  2. apply plugin: 'com.aliyun.ams.emas-services'

添加依赖

1、修改应用目录下json配置文件,将不需要使用的产品service对应的status状态置为0( status=0表示对应不使用对应产品,status=1表示使用对应产品 )。

“use_maven”字段表示是否采用maven远程依赖的方式添加依赖,true表示使用远程依赖,false表示使用本地libs下aar及jar的方式进行依赖( use_maven=false时,您需要在控制台下载对应使用的产品sdk,并将对应jar&aar放置到应用工程libs目录下,且与json中service对应开关对应 )。

2、单击Android Studio工具栏中的 Sync Project。

注意:每次修改json文件后,需要清理Android Studio缓存,并再次执行此步骤,保证插件读取了新的json配置。

3、gradle build成功后,会在应用目录build文件夹下生成对应各个产品SDK的proguard-keep文件,如果您的App需要进行混淆,请您将产品生成的proguard-rules文件拷贝到您使用的.pro文件,目录:”/app/build/generated/source/emas-services/${variant.dirName}/ams_values/ams_proguard_rules.pro“。

注意:采用EMAS统一接入时,请勿开启资源混淆(非代码混淆),若必须采用资源混淆,请按原来传参方式接入。

支持使用配置文件统一添加依赖的产品包括:

产品 配置文件中对应的字段 初始化参考
移动推送 cps_service Android SDK集成
移动热修复 hotfix_service Android SDK集成
性能分析/远程日志的基础库 ha-adapter_service 无需单独初始化
性能分析 apm_service Android SDK集成
远程日志 tlog_service Android SDK集成
移动用户反馈 feedback_service Android SDK集成
移动数据分析 man_service Android SDK集成

说明:远程日志、性能分析需要使用ha-adapter_service基础库。

常见问题

1:运行插件后提示: “File aliyun-emas-services.json is missing. The Emas Services Plugin cannot function without it”.

解决方法:确保您将控制台下载的aliyun-emas-services.json文件已经正确放置到app/目录下。

2:接入全部产品后,如果遇到以下问题:​ Error:Execution failed for task ‘:app:processDebugManifest’. Manifest merger failed with multiple errors, see logs.

解决方法:由于不同sdk设置的allowBackup属性不同,建议在Manifest.xml中添加:

  1. <Application
  2. ....
  3. android:allowBackup="false"
  4. tools:replace="android:allowBackup"/>

3:运行插件后提示: “WARNING: Configuration ‘compile’ is obsolete and has been replaced with ‘implementation’ and ‘api’.”

解决方法:忽略此警告即可。为了兼容低版本Android studio,EMAS统一插件中使用的是compile,不影响使用。