Android SDK
https://github.com//sa-sdk-android
SDK的AndroidStudio插件
https://github.com/sensorsdata/sa-sdk-android-plugin2
SDK的客戶端調(diào)試工具
https://github.com/sensorsdata/sa-sdk-android-runtime
埋點原理
Aspectj 是 Java 的超集, Aspectj 定義了AOP語法,它有一個專門的編譯器用來生成遵守Java字節(jié)編碼規(guī)范的Class文件
概述:SDK基于Aspectj語言對App進行插樁,根據(jù)插樁代碼獲取到UI各關(guān)鍵位置(如點擊事件)的"JoinPoint"對象,再通過JoinPoint對象獲取到各關(guān)鍵位置的調(diào)用以及數(shù)據(jù)
1,獲取View的點擊事件:通過Aspectj語法插樁App各處的點擊事件,得到各處點擊事件發(fā)生時的JoinPoint對象,通過JoinPoint對象獲取到點擊事件所傳入的View對象,獲取到ViewID根據(jù)是否后臺配置了埋點判斷是否存儲統(tǒng)計數(shù)據(jù)
2,Dialog\Menu\SeekBar等等點擊事件統(tǒng)計與上類似
3,后臺配置:SDK通過WebSocket與處于后臺頁面的Javascript進行連接,連接成功后SDK通過給APP當前頁面進行截圖然后發(fā)送給后臺頁面,后臺頁面接收后展示并使用,當埋點配置完后生成DSL規(guī)則文件
網(wǎng)絡(luò)模塊
概述:SDK統(tǒng)計數(shù)據(jù)存入數(shù)據(jù)庫,然后在Activity頁面關(guān)閉后等等時機進行同步數(shù)據(jù)到服務(wù)器,數(shù)據(jù)經(jīng)過GZIP壓縮字符串,然后Base64加密處理,數(shù)據(jù)大小上限默認保存32MB(有接口可以設(shè)置大小)
1,設(shè)置數(shù)據(jù)保存大小接口
2,監(jiān)聽activity頁面關(guān)閉,同步數(shù)據(jù)庫數(shù)據(jù)到服務(wù)器
3,將數(shù)據(jù)使用GZIP壓縮,然后再Base64加密,準備發(fā)送到服務(wù)器
4,將處理后的數(shù)據(jù)發(fā)送至服務(wù)器