Android SDK接入(Maven集成)
本文介紹如何通過Maven集成方式添加依賴接入遠程日志服務。
接入遠程日志服務的Android SDK,可采用Maven集成和本地集成2種方式添加依賴。推薦使用Maven集成方式添加依賴,可大幅簡化接入操作。
如需使用本地集成方式添加依賴,操作方法請參見Android SDK接入(本地集成)。
前提條件
使用限制
僅支持Android 4.2及以上版本。
僅支持armeabi-v7a/arm64-v8a/X86/X86_64架構(gòu)。
日志在手機端最多存儲7天。
接入概述
添加依賴
1:在項目build.gradle
中的repositories
節(jié)點內(nèi)添加阿里云Maven倉庫地址。
repositories {
maven { url "http://maven.aliyun.com/nexus/content/repositories/releases" }
}
2:在項目build.gradle
中的dependencies
節(jié)點內(nèi)添加依賴:
implementation 'com.aliyun.ams:alicloud-android-ha-adapter:1.2.4.0-open'
implementation 'com.aliyun.ams:alicloud-android-tlog:1.1.8.0-open'
3:在build.gradle
項目文件的defaultConfig
節(jié)點內(nèi)根據(jù)實際需要配置ABI。
ndk {
abiFilters 'arm64-v8a' //配置項??蛇x取值:armeabi-v7a/arm64-v8a/x86/x86_64
}
遠程日志服務目前僅支持armeabi-v7a/arm64-v8a/X86/X86_64架構(gòu)。
接入服務
預初始化SDK
預初始化SDK可以在Appcalition.onCreate函數(shù)中完成。
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
AliHaAdapter.getInstance().preStart(this);
}
}
開啟遠程日志
在同意隱私協(xié)議之后,可以開啟遠程日志。
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); //配置項:控制臺可拉取的日志級別
}
配置說明如下:
參數(shù) | 說明 |
config.appKey | 用于指定App的AppKey。 【數(shù)據(jù)類型】字符串 【如何獲取】請參見:接入服務中的步驟1。 【是否必選】是 【是否可為空】否 【默認值】無 |
config.appVersion | 用于設置App的版本號。 【數(shù)據(jù)類型】字符串 【格式要求】自定義 【取值范圍】任意長度。 說明 該參數(shù)值將在控制臺顯示為下拉列表選項,建議短小凝練。 【是否必選】是 【是否可為空】否 【默認值】無 【大小寫敏感】是。例如,vx.x和Vx.x不是一個版本。 【字符類型】英文大小寫、數(shù)字。 說明 該參數(shù)不支持中文字符、特殊字符。 |
config.appSecret | 用于指定App的AppSecret。 【數(shù)據(jù)類型】字符串 【如何獲取】請參見:接入服務中的步驟1。 【是否必選】是 【是否可為空】否 【默認值】無 |
config.channel | 用于設置渠道標識,上報至服務端,進行渠道區(qū)分。 【數(shù)據(jù)類型】字符串 【取值范圍】任意長度 【是否必選】否 【是否可為空】是 【默認值】無 【字符類型】英文大小寫、數(shù)字。 說明 該參數(shù)不支持中文字符、特殊字符。 |
config.userNick | 用于設置用戶昵稱,上報至服務端,進行用戶區(qū)分。后續(xù)可能依據(jù)該參數(shù),進行數(shù)據(jù)檢索。 【數(shù)據(jù)類型】字符串 【取值范圍】任意長度 【是否必選】否 【是否可為空】是 【默認值】無 【字符類型】英文大小寫、數(shù)字。 說明 該參數(shù)不支持中文字符、特殊字符。 【命名規(guī)范】自定義 |
config.application | 用于指定本應用。 重要 不能指向其他應用。 【數(shù)據(jù)類型】對象 【是否必選】是 【是否可為空】否 【默認值】無 |
config.context | 用于指定App的上下文對象,設置 【數(shù)據(jù)類型】對象 【是否必選】是 【是否可為空】否 【默認值】無 |
config.isAliyunos | 用于判斷App所在平臺是否為YunOS。 【數(shù)據(jù)類型】布爾型 【取值范圍】false/true 【是否必選】否 【是否可為空】是 【默認值】false |
config.rsaPublicKey | 用于指定遠程日志公鑰。 【數(shù)據(jù)類型】字符串 【如何獲取】請參見:接入服務中的步驟1。 【是否必選】是 【是否可為空】否 【默認值】無 |
TLogLevel.XXXXXX | 用于全局設置控制臺可拉取的日志的級別。 【數(shù)據(jù)類型】枚舉型 【取值范圍】
【是否必選】是 【默認取值】ERROR 【配置說明】
|
數(shù)據(jù)采集
您需要在滿足合規(guī)要求下盡可能早的進行信息采集設置,默認是采集設備信息、系統(tǒng)信息和網(wǎng)絡信息。
AliHaConfig config = new AliHaConfig();
//可以根據(jù)合規(guī)要求禁止采集設備信息、系統(tǒng)信息和網(wǎng)絡信息
config.noCollectionDataType = AliHaConfig.NO_DEVICE_DATA | AliHaConfig.NO_OS_DATA | AliHaConfig.NO_NETWORK_DATA;
采集參數(shù):
敏感數(shù)據(jù)類型 | 說明 | 信息字段詳情 |
NO_DEVICE_DATA | 不采集設備信息 | 包括:品牌(Build.BRAND)、型號(Build.MODEL)、屏幕分辨率、CPU信息(Build.CPU_ABI)、硬件名稱(Build.HARDWARE) |
NO_OS_DATA | 不采集系統(tǒng)信息 | 包括:語言、系統(tǒng)版本(Build.VERSION.RELEASE、Build.VERSION.SDK_INT)、系統(tǒng)編譯唯一標識(Build.FINGERPRINT) |
NO_NETWORK_DATA | 不采集網(wǎng)絡信息 | 包括:運營商、接入點信息、網(wǎng)絡類型 |
在
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:如業(yè)務流程觸發(fā)日志輸出,需引入頭文件:
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");
函數(shù):TLogService.<LogLevel>(<MODEL>,<TAG,<MESSAGE>);
說明:用于輸出指定級別的日志信息。
參數(shù) | 說明 |
LogLevel | 指定拉取的日志級別。日志級別說明請參見基本概念。 【數(shù)據(jù)類型】枚舉型 【取值范圍】
【配置說明】輸出的日志是否可以被控制臺拉取,取決于 |
MODEL | 用于設置輸出日志內(nèi)容的功能模塊,便于后續(xù)根據(jù)來源篩選日志。 【數(shù)據(jù)類型】字符串 【字符類型】英文大小寫、中文、數(shù)字、特殊字符 【是否必選】是 【是否大小寫敏感】否 【示例】“推送功能模塊Push” |
TAG | 用于設置日志的關(guān)鍵字,便于后續(xù)根據(jù)標簽篩選日志。 【數(shù)據(jù)類型】字符串 【字符類型】英文大小寫、中文、數(shù)字、特殊字符 【是否必選】是 【是否大小寫敏感】否 【示例】“推送功能模塊收到了推送Push.receive,推送功能模塊點擊了推送Push.click” |
MESSAGE | 用于輸出日志信息。 【數(shù)據(jù)類型】字符串 【字符類型】英文大小寫、中文、數(shù)字、特殊字符 【是否必選】是 |
混淆配置
如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
編譯
如同時使用其他阿里云產(chǎn)品,可能會因為依賴中存在UTDID沖突,造成編譯失敗。解決辦法請參見SDK UTTID沖突解決方案。
樣例代碼
遠程日志服務Android SDK接入工程樣例請參見Demo工程。