本文介绍如何通过本地集成方式添加依赖接入远程日志服务。
说明
- 远程日志服务的Android SDK接入可采用Maven集成和本地集成2种方式添加依赖。推荐使用Maven集成方式添加依赖,可大幅简化接入操作。
- 如需使用Maven集成方式添加依赖,请参见Android SDK接入(Maven集成)。
使用限制
- 仅支持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.rsaSecret
内容。
说明
- 为避免在日志中泄漏参数appkey、appsecret、rsaSecret或App运行过程中产生的数据,建议线上版本关闭SDK调试日志。
- 由于所有用户使用统一的SDK接入,在接入过程中需要在代码中设置appkey、appsecret、rsaSecret参数,而此类参数与计量计费密切相关,为防止恶意反编译获取参数造成信息泄漏,建议您开启混淆,并进行App加固后再发布上线。具体操作,请参见(可选)步骤六:混淆配置。
步骤二:添加依赖
- 下载SDK,并将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.1.5.2-open',ext:'aar')
compile(name:'alicloud-android-ha-core-1.1.0.6.1-open',ext:'aar')
compile(name:'alicloud-android-ha-protocol-1.1.0.9-open',ext:'aar')
compile(name:'alicloud-android-ha-tbrest-1.1.5.0-open',ext:'aar')
compile(name:'alicloud-android-utdid-2.5.3',ext:'jar')
compile(name:'fastjson-2.0.9.android',ext:'jar')
//3、移动日志,不接入可注释掉
compile(name:'alicloud-android-tlog-1.1.4.4-open',ext:'aar')
compile(name:'alicloud-android-ha-tlog-message-rpc-1.1.3.1-open',ext:'aar')
compile(name:'alicloud-android-ha-tlog-uploader-oss-1.1.0.8-open',ext:'aar')
compile(name:'alicloud-android-ha-tlog-protocol-1.1.0.9-open',ext:'aar')
compile(name:'alicloud-android-ha-tlog-native-1.1.1.0-open',ext:'aar')
compile(name:'alicloud-android-setting-service-1.0.0',ext:'aar')
compile(name:'alicloud-android-logger-1.0.2',ext:'aar')
compile(name:'okhttp-3.4.1',ext:'jar')
compile(name:'okio-1.9.0',ext:'jar')
compile(name:'oss-android-sdk-2.9.3',ext:'aar')
步骤三:接入服务
- 定义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;
- 在适当位置添加代码,主动上报当日日志信息。
示例代码:
TLogService.positiveUploadTlog("COMMENT"); //COMMENT:上报日志时设置的备注信息,可用于记录待定位的问题。
函数TLogService.positiveUploadTlog(<COMMENT>);
用于主动上报当日缓存的日志信息。主动上报时系统会删除历史缓存日志,仅上报最新缓存的日志信息,避免相同日志重复上报。
(可选)步骤六:混淆配置
如需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