使用App SDK必备操作,缺少任一操作都会造成数据的缺失
SDK基本信息
SDK名称 | 版本号 | md5 | 包名 |
QuickTracking Android SDK | 最新版本:1.6.3.PX 更新日志:Android SDK更新日志 | 2354af2e9f74dcd10dddbe5af845ff37 | com.lydaas.qtsdk:qt-px-common |
gradle 插件 | 最新版本: gradle7+ : quick-gradle-plugin2:2.0.0 gradle7以下版本 : quick-gradle-plugin2:1.0.2 | 2.0.0:bb00122c48a471cf94fc81db3bfb951a 1.0.2: 494dc42eb188ed02a56d1b90292961b6 | com.lydaas.qtsdk:quick-gradle-plugin2 |
1 快速集成
在QuickTracking后台,为每一个App生成了专属的集成代码,可以根据产品内的引导进行集成。注意,需要检查目前是否已经使用了友盟+SDK,如果已经使用,请及时设置更改SDK文件路径,具体设置方式请参考本文档中1.2章节部分内容。
1.1 产品路径
Quick Tracking「首页」-「管理控制台」,在「管理控制台」进入「组织列表」功能,组织列表展示当前已创建的组织,找到应用归属组织,点击「管理应用」功能跳转到「应用管理]页面,在已创建好的应用右侧点击去「去集成」。
点击「去集成」按钮跳转到新页面可以获取专属集成代码,点击下一步按引导进入到「集成校验」,扫码唤起APP,确认集成是否成功。
1.2 检查是否与友盟+SDK冲突
注意,需要检查目前是否已经使用了友盟+SDK,如果已经使用,请务必设置更改SDK文件路径。
更改SDK文件路径方式:
已经集成了友盟+SDK,现在需要集成QT SDK:在QT和友盟+的所有代码最前面增加(至少早于收数域名)QTConfigure.resetStorePath;
已经集成了QT SDK,现在需要集成友盟+SDK:在QT和友盟+的所有代码最前面增加(至少早于收数域名)UMConfigure.resetStorePath;
如果不按照上述的逻辑调用,则会使友盟+SDK与QT SDK共同使用一个存储路径,导致日志混乱。具体逻辑为:先调用的哪个SDK初始化方法,就重新设置另外一个SDK的文件路径,比如先初始化的友盟+SDK,就调用 QTConfigure.resetStorePath;,如果是先初始化的QT SDK,就需要调用UMConfigure.resetStorePath;
2 集成代码明细
如果因为特定原因,无法抵达上述页面,需要观看文档才可以进行集成,具体集成代码如下:
2.1 参数准备
appKey:在应用列表中获取
收数域名:在“管理控制台-采集信息”模块中获取
SDK信息:在“管理控制台-采集信息”模块中获取添加网页链接
2.2 引入SDK
2.2.1 自动集成
在工程build.gradle配置脚本中buildscript和allprojects段中添加 QuickTracking SDK新Maven仓库地址。
maven { url 'https://repo1.maven.org/maven2/' }
在工程对应build.gradle配置脚本repositories段中添加SDK Maven库地址:
buildscript {
repositories {
google()
jcenter()
maven { url 'https://repo1.maven.org/maven2/' }
}
dependencies {
classpath 'com.android.tools.build:gradle:3.4.0'
}
}
allprojects {
repositories {
google()
jcenter()
maven { url 'https://repo1.maven.org/maven2/' }
}
}
在工程App 对应build.gradle配置脚本dependencies段中添加统计SDK库和其它库依赖:
dependencies {
implementation fileTree(include:['*.jar'], dir:'libs')
//QuickTracking统计分析SDK
implementation 'com.lydaas.qtsdk:qt-px-common:1.6.3.PX'
}
在Android Studio 3.1及以上版本开发环境下,指定引用最新版本依赖写法"latest.integration"可能导致下载库超时,此时需要指定具体版本号。
2.2.2 手动集成
选择SDK功能组件并下载,解压.zip文件得到相应组件包:
qt-px-common-1.x.x.PX.aar // 统计SDK,必须集成。
在Android Studio的项目工程libs目录中拷入相关组件jar包,右键点击Android Studio的项目工程,选择Open Module Settings —>在 Project Structure弹出框中 —>选择 Dependencies选项卡 —>点击左下“+” —>选择组件包类型 —>引入相应的包。
在Eclipse中右键工程根目录,选择Properties —> Java Build Path —> Libraries,然后点击Add External JARs… 选择指向JAR的路径,点击OK,即导入成功。(ADT17及以上不需要手动导入)。
在工程App级别对应build.gradle配置脚本dependencies段中添加统计SDK库。
repositories{
flatDir{
dirs 'libs'
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation files('libs/qt-px-common-1.x.x.PX.aar') // 必选
}
2.3 配置权限
统计SDK需要宿主APP授予如下权限:
权限 | 用途 |
ACCESS_NETWORK_STATE | 检测联网方式,在网络异常状态下避免数据发送,节省流量和电量。 |
READ_PHONE_STATE(可选) | 获取用户设备的IMEI,通过IMEI对用户进行唯一标识,以便提供统计分析服务。 |
ACCESS_WIFI_STATE | 获取WIFI mac地址,在平板设备或电视盒子上,无法通过IMEI标识设备,我们会将WIFI mac地址作为用户的唯一标识,以便正常提供统计分析服务。 |
INTERNET | 允许应用程序联网和发送统计数据的权限,以便提供统计分析服务。 |
下面给出AndroidManifest.xml清单文件示例:
<manifest>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>
2.4 混淆配置
如果您的应用使用了代码混淆,请添加如下配置,以避免Quick Tracking SDK被错误混淆导致SDK不可用。
-keep class com.umeng.** {*;}
-keep class org.repackage.** {*;}
-keep class com.quick.qt.** {*;}
-keep class rpk.quick.qt.** {*;}
-keepclassmembers class * {
public <init> (org.json.JSONObject);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
SDK需要引用导入工程的资源文件,通过了反射机制得到资源引用文件R.java,但是在开发者通过proguard等混淆/优化工具处理apk时,proguard可能会将R.java删除,如果遇到这个问题,请添加如下配置:
-keep public class [您的应用包名].R$*{
public static final int *;
}
2.5 埋点验证配置
在AndroidManifest.xml文件中找到响应android.intent.action.MAIN的activity(也就是应用可以被外部唤起的第一个Activity),加上如下代码,让应用能被指定连接scheme唤起:
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="atm.您的appKey" />
</intent-filter>
注意:
1、请使用单独intent-filter,和其他intent-filter并列,不要将上述代码填入其他intent-filter里;
2、请将“您的appKey”替换成您的应用的appKey。