本文介紹如何通過本地集成方式添加依賴接入遠程日志服務。
接入遠程日志服務的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工程。