Android SDK接入(本地集成)
本文介绍如何通过本地集成方式添加依赖接入远程日志服务。
接入远程日志服务的Android SDK可采用Maven集成和本地集成2种方式添加依赖。推荐使用Maven集成方式添加依赖,可大幅简化接入操作。
如需使用Maven集成方式添加依赖,操作方法请参见Android SDK接入(Maven集成)。
前提条件
使用限制
仅支持Android 4.2及以上版本。
仅支持armeabi-v7a/arm64-v8a/X86/X86_64架构。
日志在手机端最多存储7天。
接入概述
添加依赖:采用本地集成方式。
接入服务:添加自定义Application,以及初始化代码;配置ABI;设置日志拉入级别。
打印日志:引入头文件;在代码中打印日志信息。
上报日志:引入头文件;上报缓存的日志信息到远程日志服务。
混淆配置:如App对代码进行乱序混淆,则修改混淆配置文件。
编译。
设置数据埋点时,建议设置在非高频业务中。高频业务中上报日志可能导致数据丢失。
添加依赖
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.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-1.1.73.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')
接入服务
1、定义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"; //配置项:应用的版本号
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().openDebug(true);
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 【配置说明】
|
2:在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 |
用于输出日志信息。 【数据类型】字符串 【字符类型】英文大小写、中文、数字、特殊字符 【是否必选】是 |
上报日志
1:如业务流程触发日志输出,需引入头文件:
import com.alibaba.ha.adapter.service.tlog.TLogService;
2:在适当位置添加代码,主动上报当日日志信息。示例代码:
TLogService.positiveUploadTlog("COMMENT");
函数
TLogService.positiveUploadTlog(<COMMENT>);
,用于主动上报当日缓存的日志信息。主动上报时系统会删除历史缓存日志,仅上报最新缓存的日志信息,避免相同日志重复上报。
参数 |
说明 |
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
编译
如同时使用其他阿里云产品,可能会因为依赖中存在UTDID冲突,造成编译失败。解决办法请参见SDK UTDID冲突解决方案。
样例代码
远程日志服务Android SDK接入工程样例请参见Demo工程。