Android SDK接入(Maven集成)
本文介绍如何通过Maven集成方式添加依赖接入远程日志服务。
接入远程日志服务的Android SDK可采用Maven集成和本地集成2种方式添加依赖。推荐使用Maven集成方式添加依赖,可大幅简化接入操作。
如需使用本地集成方式添加依赖,操作方法参见Android SDK接入(本地集成)。
样例代码
使用限制
仅支持Android 4.2及以上版本。
仅支持arm64-v8a、armeabi-v7a、x86和x86_64架构。
日志在手机端最多存储7天。
步骤一:创建监控任务
- 登录ARMS控制台,在左侧导航栏中单击App监控。
- 在App监控页面,单击右上角的创建App监控任务。
- 在接入中心面板,单击Android App。
- 在接入面板的Step 1区域输入App名称和PackageName,选择App的平台,然后单击创建应用。
- 在Step 2区域,根据页面提示下载aliyun-emas-services.json文件。
打开aliyun-emas-services.json文件,获取
emas.appKey
、emas.appSecret
、emas.packageName
和appmonitor.tlog.rsaSecret
内容。说明为避免在日志中泄露参数appkey、appsecret、rsaSecret或App运行过程中产生的数据,建议线上版本关闭SDK调试日志。
由于所有用户使用统一的SDK接入,在接入过程中需要在代码中设置appkey、appsecret、rsaSecret参数,而此类参数与计量计费密切相关,为防止恶意反编译获取参数造成信息泄露,建议您开启混淆,并进行App加固后再发布上线。具体操作,请参见(可选)步骤六:混淆配置。
步骤二:添加依赖
在项目级build.gradle文件的
repositories{}
代码段添加阿里云Maven仓库地址。repositories { maven { url "http://maven.aliyun.com/nexus/content/repositories/releases" } }
在应用级build.gradle文件的
dependencies{}
代码段中添加SDK依赖。compile('com.aliyun.ams:alicloud-android-ha-adapter:1.1.5.2-open@aar') { transitive=true } compile('com.aliyun.ams:alicloud-android-tlog:1.1.4.4-open@aar') { transitive=true }
在应用级build.gradle文件的
defaultConfig
代码段内根据实际需要配置ABI。ndk { abiFilters 'armeabi' //可选取值:armeabi-v7a、arm64-v8a、x86、x86_64。 }
步骤三:接入服务
定义Application类,编写onCreate方法,启动服务。
public class MyApplication extends Application { @Override public void onCreate() { initHa(); } private void initHa() { AliHaConfig config = new AliHaConfig(); config.appKey = "xxxxxxxx"; //替换为步骤一中获取的AppKey。 config.appVersion = "x.xx"; //设置App的版本号。 config.appSecret = "xxxxxxxxxxxx"; //替换为步骤一中获取的AppSecret。 config.channel = "mqc_test"; //设置渠道标识,上报至服务端,进行渠道区分。 config.userNick = null; //设置用户昵称,上报至服务端,进行用户区分。后续可能依据该参数,进行数据检索。 config.application = this; config.context = getApplicationContext(); config.isAliyunos = false; //App所在平台是否为YunOS。 config.rsaPublicKey = "xxxxxxx"; //替换为步骤一中获取的appmonitor.tlog.rsaSecret。 AliHaAdapter.getInstance().addPlugin(Plugin.tlog); AliHaAdapter.getInstance().openDebug(true); AliHaAdapter.getInstance().start(config); TLogService.updateLogLevel(TLogLevel.XXXXXX); //设置日志拉取级别。选项:ERROR(默认)、WARN、INFO、DEBUG、VERBOSE。 } }
在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>
步骤四:打印日志
如业务流程触发日志输出,需引入头文件。
import com.alibaba.ha.adapter.service.tlog.TLogService;
在适当位置添加代码,打印日志信息。
示例代码:
TLogService.logv("MODEL","TAG","MESSAGE"); TLogService.logd("MODEL","TAG","MESSAGE"); TLogService.logi("MODEL","TAG","MESSAGE"); TLogService.logw("MODEL","TAG","MESSAGE"); TLogService.loge("MODEL","TAG","MESSAGE");
函数
TLogService.<LogLevel>(<MODEL>,<TAG>,<MESSAGE>);
用于输出指定级别的日志信息。参数
说明
LogLevel
指定拉取的日志级别。日志级别说明请参见术语解释。
logv:输出VERBOSE(调试详情)级别的日志。
logd:输出DEBUG(调试信息)级别的日志。
logi:输出INFO(一般信息)级别的日志。
logw:输出WARN(警告信息)级别的日志。
loge:输出ERROR(错误信息)级别的日志。
说明输出的日志是否可以被控制台拉取,取决于
TLogService.updateLogLevel()
函数的参数设置。例如:当函数设置为TLogService.updateLogLevel(TLogLevel.WARN)
时,控制台拉取不到通过logv、logd和logi输出的日志。MODEL
设置输出日志内容的功能模块,便于后续根据来源筛选日志。
TAG
设置日志的关键字,便于后续根据标签筛选日志。
MESSAGE
输出日志信息。
步骤五:上报日志
如业务流程触发日志输出,需引入头文件。
import com.alibaba.ha.adapter.service.tlog.TLogService;
(可选)步骤六:混淆配置
如需App对代码进行乱序混淆,则在混淆配置文件中添加以下代码段:
-keep class com.taobao.tao.log.**{*;}
-keep public class * extends com.taobao.android.tlog.protocol.model.request.base.FileInfo{*;}
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*,EnclosingMethod
步骤七:编译
如同时使用其他阿里云产品,可能会因为依赖中存在UTDID冲突,造成编译失败。解决办法,请参见SDK UTDID冲突解决方案。