引入&配置SDK

使用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「首页」-「管理控制台」,在「管理控制台」进入「组织列表」功能,组织列表展示当前已创建的组织,找到应用归属组织,点击「管理应用」功能跳转到「应用管理]页面,在已创建好的应用右侧点击去「去集成」。

image.png

点击「去集成」按钮跳转到新页面可以获取专属集成代码,点击下一步按引导进入到「集成校验」,扫码唤起APP,确认集成是否成功。

image.png

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。