云日志服务Android SDK
云日志服务Android SDK提供了Kotlin & Java语言上报日志的一系列方法,如果您需要收集和分析用户在网站上的信息,例如用户的浏览器、浏览行为记录、购买行为记录、终端设备记录,设备异常记录,网络使用记录等,可以直接使用Android SDK上报日志到LTS。
当前仅华北-北京四、华东-上海一、华南-广州区域的白名单用户支持使用该功能,如有需要请提工单申请。
传输协议
HTTPS
使用前提
- 参考注册华为账号并开通华为云中操作,完成注册。
版本更新说明
SDK如何处理个人信息请参考华为云日志服务移动端日志采集SDK隐私声明。
您集成和使用我们的SDK时需要遵从个人信息保护基本要求,详情请参考华为云日志服务移动端日志采集SDK开发者合规指南。
版本号 |
下载地址 |
检验信息下载地址 |
更新说明 |
系统 |
---|---|---|---|---|
1.0.28 |
单击下载 |
单击下载 |
修复了1.0.26版本以来工程配置导致的配置冲突。 |
Android 7 及以上 |
0.0.5 |
请通过mavenCentral下载。 |
- |
功能与1.0.28版本相同,可支持kotlin 1.3.x。 |
Android 7 及以上。 |
1.0.27 |
单击下载 |
单击下载 |
优化了缓存效率。 |
Android 7 及以上 |
0.0.4 |
请通过mavenCentral下载。 |
- |
功能与1.0.27版本相同,可支持kotlin 1.3.x。 |
Android 7 及以上。 |
1.0.26 |
单击下载 |
单击下载 |
修复了因异步修改入参导致数据异常的问题。 |
Android 7 及以上。 |
1.0.25 |
单击下载 |
单击下载 |
增强代码强壮性,添加参数保护。 |
Android 7 及以上。 |
1.0.24 |
单击下载 |
单击下载 |
|
Android 7 及以上。 |
1.0.21 |
单击下载 |
单击下载 |
废弃setconfig方法,使用LTSSDK的构造方法代替。 |
Android 7 及以上。 |
1.0.19 |
单击下载 |
单击下载 |
|
Android 7 及以上。 |
1.0.18 |
单击下载 |
单击下载 |
|
Android 7 及以上。 |
1.0.17 |
单击下载 |
单击下载 |
首次发布,提供四个接口:初始化、配置config、上报日志report、立即上报日志reportImmediately。 |
Android 7 及以上。 |
安装Android SDK
- 集成接入SDK。
- maven仓库集成。
- 在build.gradle中添加依赖。
plugins { ... id 'org.jetbrains.kotlin.android' version 'KOTLIN_VERSION' apply false // 添加kotlin插件,1.x.x最低支持1.6.20版本,最低可支持1.3.61版本 ... }
- 在app/build.gradle中添加依赖。
dependencies { ... implementation 'io.github.lts-sdk:lts-sdk-android:1.0.28' ... }
- 在 settings.gradle中添加maven仓库源。
pluginManagement{ ... repositories { ... // 加入下面内容 mavenCentral() } } dependencyResolutionManagement { ... repositories { ... // 加入下面内容 mavenCentral() } }
- 在build.gradle中添加依赖。
- 手动集成。
- 下载日志SDK包。
- 下载后解压到指定目录。注:直接解压即可,不需要额外操作。
- 将解压后的aar静态库文件添加到您的项目工程中。
- 在build.gradle中添加依赖。
plugins { ... id 'org.jetbrains.kotlin.android' version 'KOTLIN_VERSION' apply false // 添加kotlin插件,1.x.x最低支持1.6.20版本,0.0.x最低可支持1.3.61版本 ... }
- 在app/build.gradle中添加依赖。
dependencies { ... implementation fileTree(dir: $dir, include: ['*.aar']) // 填写aar所在的文件夹,例如'libs' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.0' // 0.0.x版本依赖版本为1.3.3 implementation 'androidx.core:core-ktx:1.7.0'// 0.0.x版本依赖版本为1.2.0 implementation 'com.google.code.gson:gson:2.8.9' kapt 'androidx.room:room-compiler:2.3.0' // 0.0.x版本依赖版本为2.2.6 api 'androidx.room:room-runtime:2.3.0' // 0.0.x版本依赖版本为2.2.6 api 'androidx.room:room-common:2.3.0' // 0.0.x版本依赖版本为2.2.6 ... }
- 在 settings.gradle中添加maven仓库源。
pluginManagement{ ... repositories { ... // 加入下面内容 google() mavenCentral() } } dependencyResolutionManagement { ... repositories { ... // 加入下面内容 google() mavenCentral() } }
- 如果您的Gradle版本低于7.0 则需要将mavan仓库源添加到build.gradle文件中。
- maven仓库集成。
- 初始化,详细参数请参考表4。
- 添加依赖
import com.cloud.lts.UserConfig import com.cloud.lts.LTSSDK
- Kotlin:初始化代码示例。
// 注意:认证用的华为云账号AK、SK硬编码到代码中或者明文存储都有很大的安全风险,建议密文存放,使用时解密,确保安全。 val ak: String = getData("HUAWEICLOUD_SDK_AK") val sk: String = getData("HUAWEICLOUD_SDK_SK") // LTS参数配置 val userConfig = UserConfig.Builder() // 必填参数 .setRegion(USER_REGION) // 云日志服务的区域 .setProjectId(PROJECT_ID) // 华为云账号的项目ID .setGroupId(LOG_GROUP_ID) // LTS的日志组ID .setStreamId(LOG_STREAM_ID) // LTS的日志流ID .setAccessKey(ak) // 华为云访问密钥 .setSecretKey(sk) // 华为云秘密访问密钥 // 选填参数 .setUrlHost(url) // LTS的公网地址域名 .setCacheThreshold(200) .setTimeInterval(60) .setIsReportBackground(true) .setIsReportLaunch(false) .build() // LTS初始化方法 ltssdk = LTSSDK( </* Application Instance */> , userConfig)
- Java:初始化代码示例。
// 注意:认证用的华为云账号AK、SK硬编码到代码中或者明文存储都有很大的安全风险,建议密文存放,使用时解密,确保安全。 String ak = getData("HUAWEICLOUD_SDK_AK") String sk = getData("HUAWEICLOUD_SDK_SK") // LTS参数配置 UserConfig userConfig = new UserConfig.Builder() // 必填参数 .setRegion(USER_REGION) // 云日志服务的区域 .setProjectId(PROJECT_ID) // 华为云账号的项目ID .setGroupId(LOG_GROUP_ID) // LTS的日志组ID .setStreamId(LOG_STREAM_ID) // LTS的日志流ID .setAccessKey(ak) // 华为云访问密钥 .setSecretKey(sk) // 华为云秘密访问密钥 // 选填参数 .setUrlHost(url) // LTS的公网地址域名 .setCacheThreshold(200) .setTimeInterval(60) .setIsReportBackground(true) .setIsReportLaunch(false) .build(); // LTS初始化方法 ltssdk = new LTSSDK( </* Application Instance */> , userConfig);
- LTSSDK支持多实例日志上报机制,根据不同配置创建实例进行上报。
- 添加依赖
- 上报日志。LTS提供两种上报日志的方法。
表2 两种上报日志的方法 Method
Description
report(content, labels)
上报日志:先存入本地数据库,根据配置中设定的策略实施上报。
reportImmediately(content, labels)
立即上报日志。
表3 Parameters参数 Name
Description
content
日志内容,支持字典和字典数组;键值对最多300个;content转JSON字符串最大支持长度为30*1024,超出部分被截断。
labels
日志标签。
- 支持字典或空值。
- 最外层键值对最多50个。
- 最外层key最大长度为64。
- 支持字母、数字和下划线组合,首字符须是字母。
- 字典转JSON字符串最大支持长度为30720,超出则该条日志无法上报。
- Kotlin代码示例如下:
var ltssdk: LTSSDK val food = hashMapOf(Pair("food_1", "rice"), Pair("food_2", "wheat"), Pair("food_3", "egg")) val fruit = hashMapOf(Pair("fruit_1", "apple"), Pair("fruit_2", "pear"), Pair("fruit_3", "banana")) val label = hashMapOf( Pair("date","2023-10-01")) val contents = listOf(food, fruit).toTypedArray() ltssdk.report(food, label) // 缓存上报单条 带标签 ltssdk.report<String, String>(food) // 缓存上报单条 不带标签 ltssdk.reportImmediately(food, label) // 立即上报单条 带标签 ltssdk.reportImmediately<String, String>(food) // 立即上报单条 不带标签 ltssdk.report(contents, label) // 缓存上报多条 带标签 ltssdk.report<String, String>(contents) // 缓存上报多条 不带标签 ltssdk.reportImmediately(contents , label) // 立即上报多条 带标签 ltssdk.reportImmediately<String, String>(contents) // 立即上报多条 不带标签
- Java代码示例如下:
LTSSDK ltssdk; HashMap fruit = new HashMap<String, String>(){{ put("fruit_1", "apple"); put("fruit_2", "pear"); put("fruit_3", "banana"); }}; HashMap food = new HashMap<String, String>(){{ put("food_1", "rice"); put("food_2", "wheat"); put("food_3", "egg"); }}; HashMap<String, String> labels = new HashMap(){{ put("date","2023-10-01"); }}; HashMap[] contents = {food, fruit}; ltssdk.report(food); // 缓存上报单条 不带标签 ltssdk.report(food, labels); // 缓存上报单条 带标签 ltssdk.reportImmediately(food); // 立即上报单条 不带标签 ltssdk.reportImmediately(food, labels); // 立即上报单条 带标签 ltssdk.report(contents); // 缓存上报多条 不带标签 ltssdk.report(contents, labels); // 缓存上报多条 带标签 ltssdk.reportImmediately(contents); // 立即上报多条 不带标签 ltssdk.reportImmediately(contents, labels); // 立即上报多条 带标签
配置参数说明
参数名称 |
类型 |
是否必填 |
默认值 |
描述 |
---|---|---|---|---|
projectId |
String |
必填 |
- |
华为云账号的项目ID。 |
accessKey |
String |
必填 |
- |
华为云账号的访问密钥,简称AK。
说明:
认证用的华为云账号AK、SK硬编码到代码中或者明文存储都有很大的安全风险,建议密文存放,使用时解密,确保安全。 |
secretKey |
String |
必填 |
- |
华为云账号的秘密访问密钥,简称SK。注意:认证用的华为云账号AK、SK硬编码到代码中或者明文存储都有很大的安全风险,建议密文存放,使用时解密,确保安全。 |
region |
String |
必填 |
- |
LTS的服务区域。 |
groupId |
String |
必填 |
- |
LTS的日志组ID。 |
streamId |
String |
必填 |
- |
LTS的日志流ID。 |
url |
String |
选填 |
null |
用于上报的公网地址域名,如未设置,将根据region自动生成链接,格式如下:https://lts-access.{region}.myhuaweicloud.com |
cacheThreshold |
Long |
选填 |
200条 |
当本地数据库日志存储条数达到该值会触发上报,取值范围为30-1000条。 |
timeInterval |
Long |
选填 |
3秒 |
定时器每隔该值会触发上报,取值范围为1-1800秒。 |
isReportBackground |
boolean |
选填 |
true |
是否开启APP切入后台时上报功能。 |
isReportLaunch |
boolean |
选填 |
false |
是否开启APP启动时上报功能。 |
上报日志策略说明
LTSSDK支持四种日志上报策略:阈值上报、定时上报、应用切后台和启动时上报,根据场景选择合适的值配置cacheThreshold、timeInterval、isReportBackground、isReportLaunch等参数。
权限配置
LTSSDK 需要 Android 的网络权限,如果您没有配置,请将下面内容的写入APP 的 Manifest.xml 文件中:
manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"> ... // 加入下面的内容 <uses-permission android:name="android.permission.INTERNET" /> ... </manifest>
混淆配置
如App对代码进行乱序混淆,则在混淆配置文件中添加代码段:
-keep class com.cloud.**{*;}
接入调试
在开发过程中可以启用调试模式,借助控制台日志实时查看上报日志的记录情况,观察具体结果并根据需要进行调整。
需要通过调用LTSSDK的静态方法来修改,SDK支持Debug、Info、Warning 、 Error 和 Off 5个级别的默认为静默输出(Off)。5个级别分别对应的参数:LogLevel.DEBUG、LogLevel.INFO、LogLevel.WARNING、LogLevel.ERROR、LogLevel.OFF。代码示例如下:
LTSSDK.setLogLevel(LogLevel.DEBUG)
参数获取方式
- 区域表
表5 区域表 区域名称
RegionName
华北-北京四
cn-north-4
华东-上海一
cn-east-3
华南-广州
cn-south-1
- 日志组ID:登录云日志服务页面,选择“日志管理”,鼠标悬浮在日志组名称上,可查看日志组名称和日志组ID。
- 日志流ID:单击“日志组名称”可查看日志流列表,鼠标悬浮在日志流名称上,可查看日志流名称和日志流ID。