本文介绍如何通过本地集成方式添加依赖接入远程日志服务。
接入远程日志服务的Android SDK可采用Maven集成和本地集成2种方式添加依赖。推荐使用Maven集成方式添加依赖,可大幅简化接入操作。
如需使用Maven集成方式添加依赖,操作方法请参见Android SDK接入(Maven集成)。
前提条件
使用限制
仅支持Android 4.2及以上版本。
仅支持armeabi-v7a/arm64-v8a/X86/X86_64架构。
日志在手机端最多存储7天。
接入概述
添加依赖
1:将SDK包内所有文件拷贝至项目的libs目录下。
2:在build.gradle
项目文件中,添加本地SDK文件目录地址。
repositories {
flatDir {
dirs 'libs'
}
}
3:在build.gradle
项目文件的dependencies{}
代码段,添加SDK依赖。
//1、本地jar库引入
compile fileTree(include:['*.jar'],dir:'libs')
//2、公共库
compile(name:'alicloud-android-ha-adapter-1.2.4.0-open',ext:'aar')
compile(name:'alicloud-android-ha-core-1.1.0.7-open',ext:'aar')
compile(name:'alicloud-android-ha-protocol-1.1.5.0-open',ext:'aar')
compile(name:'alicloud-android-rest-1.7.8-open',ext:'aar')
compile(name:'alicloud-android-tool-1.1.0',ext:'aar')
compile(name:'alicloud-android-utdid-2.6.0',ext:'jar')
compile(name:'fastjson-1.1.73.android',ext:'jar')
compile(name:'alicloud-android-settingservice-1.2.0',ext:'aar')
compile(name:'alicloud-android-logger-1.2.0',ext:'aar')
//3、移动日志,不接入可注释掉
compile(name:'alicloud-android-tlog-1.1.8.0-open',ext:'aar')
compile(name:'alicloud-android-ha-tlog-message-rpc-1.1.3.2-open',ext:'aar')
compile(name:'alicloud-android-ha-tlog-uploader-oss-1.1.0.9-open',ext:'aar')
compile(name:'alicloud-android-ha-tlog-protocol-1.1.1.0-open',ext:'aar')
compile(name:'alicloud-android-ha-tlog-native-1.1.2.0-open',ext:'aar')
compile(name:'alicloud-android-cpp-shared-1.1.0',ext:'aar')
compile(name:'oss-android-sdk-2.9.15',ext:'aar')
compile(name:'okhttp-3.11.0',ext:'jar')
compile(name:'okio-1.14.0',ext:'jar')
接入服务
预初始化SDK
预初始化SDK可以在Application.onCreate函数中完成。
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
AliHaAdapter.getInstance().preStart(this);
}
}
开启远程日志
在同意隐私协议之后,可以开启远程日志。
private void startHa() {
AliHaConfig config = new AliHaConfig();
config.appKey = "xxxxxxxx"; //配置项:appkey
config.appVersion = "x.xx"; //配置项:应用的版本号
config.appSecret = "xxxxxxxxxxxx"; //配置项:appsecret
config.channel = "mqc_test"; //配置项:应用的渠道号标记,自定义
config.userNick = null; //配置项:用户的昵称
config.application = this; //配置项:应用指针
config.context = getApplicationContext(); //配置项:应用上下文
config.isAliyunos = false; //配置项:是否为yunos
config.rsaPublicKey = "xxxxxxx"; //配置项:tlog公钥
AliHaAdapter.getInstance().addPlugin(Plugin.tlog);
AliHaAdapter.getInstance().start(config);
TLogService.updateLogLevel(TLogLevel.XXXXXX); //配置项:控制台可拉取的日志级别
}
配置说明如下:
参数 | 说明 |
config.appKey | 用于指定App的AppKey。 【数据类型】字符串 【如何获取】参见:步骤1 【是否必选】是 【是否可为空】否 【默认值】无 |
config.appVersion | 用于设置App的版本号。 【数据类型】字符串 【格式要求】自定义 【取值范围】任意长度。 说明 该参数值将在控制台显示为下拉列表选项,建议短小凝练。 【是否必选】是 【是否可为空】否 【默认值】无 【大小写敏感】是。例如,vx.x和Vx.x不是一个版本。 【字符类型】英文大小写、数字。 说明 该参数不支持中文字符、特殊字符。 |
config.appSecret | 用于指定App的AppSecret。 【数据类型】字符串 【如何获取】参见:步骤1 【是否必选】是 【是否可为空】否 【默认值】无 |
config.channel | 用于设置渠道标识,上报至服务端,进行渠道区分。 【数据类型】字符串 【取值范围】任意长度 【是否必选】否 【是否可为空】是 【默认值】无 【字符类型】英文大小写、数字。 说明 该参数不支持中文字符、特殊字符。 |
config.userNick | 用于设置用户昵称,上报至服务端,进行用户区分。后续可能依据该参数,进行数据检索。 【数据类型】字符串 【取值范围】任意长度 【是否必选】否 【是否可为空】是 【默认值】无 【字符类型】英文大小写、数字。 说明 该参数不支持中文字符、特殊字符。 【命名规范】自定义 |
config.application | 用于指定本应用。 重要 不能指向其他应用。 【数据类型】对象 【是否必选】是 【是否可为空】否 【默认值】无 |
config.context | 用于指定App的上下文对象,设置 【数据类型】对象 【是否必选】是 【是否可为空】否 【默认值】无 |
config.isAliyunos | 用于判断App所在平台是否为YunOS。 【数据类型】布尔型 【取值范围】false/true 【是否必选】否 【是否可为空】是 【默认值】false |
config.rsaPublicKey | 用于指定远程日志公钥。 【数据类型】字符串 【如何获取】参见:步骤1 【是否必选】是 【是否可为空】否 【默认值】无 |
TLogLevel.XXXXXX | 用于全局设置控制台可拉取的日志的级别。 【数据类型】枚举型 【取值范围】
【是否必选】是 【默认取值】ERROR 【配置说明】
|
数据采集
您需要在满足合规要求下尽可能早的进行信息采集设置,默认是采集设备信息、系统信息和网络信息。
AliHaConfig config = new AliHaConfig();
//可以根据合规要求禁止采集设备信息、系统信息和网络信息
config.noCollectionDataType = AliHaConfig.NO_DEVICE_DATA | AliHaConfig.NO_OS_DATA | AliHaConfig.NO_NETWORK_DATA;
采集参数:
敏感数据类型 | 说明 | 信息字段详情 |
NO_DEVICE_DATA | 不采集设备信息 | 包括:品牌(Build.BRAND)、型号(Build.MODEL)、屏幕分辨率、CPU信息(Build.CPU_ABI)、硬件名称(Build.HARDWARE) |
NO_OS_DATA | 不采集系统信息 | 包括:语言、系统版本(Build.VERSION.RELEASE、Build.VERSION.SDK_INT)、系统编译唯一标识(Build.FINGERPRINT) |
NO_NETWORK_DATA | 不采集网络信息 | 包括:运营商、接入点信息、网络类型 |
在
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>
打印日志
1:如业务流程触发日志输出,需引入头文件:
import com.alibaba.ha.adapter.service.tlog.TLogService;
2:在适当位置添加代码,输出日志信息。示例代码:
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 | 指定拉取的日志级别。日志级别说明请参见基本概念。 【数据类型】枚举型 【取值范围】
【配置说明】输出的日志是否可以被控制台拉取,取决 |
MODEL | 用于设置输出日志内容的功能模块,便于后续根据来源筛选日志。 【数据类型】字符串 【字符类型】英文大小写、中文、数字、特殊字符 【是否必选】是 【是否大小写敏感】否 【示例】“推送功能模块Push” |
TAG | 用于设置日志的关键字,便于后续根据标签筛选日志。 【数据类型】字符串 【字符类型】英文大小写、中文、数字、特殊字符 【是否必选】是 【是否大小写敏感】否 【示例】“推送功能模块收到了推送Push.receive,推送功能模块点击了推送Push.click” |
MESSAGE | 用于输出日志信息。 【数据类型】字符串 【字符类型】英文大小写、中文、数字、特殊字符 【是否必选】是 |
混淆配置
如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 UTTID冲突解决方案。
样例代码
远程日志服务Android SDK接入工程样例请参见Demo工程。