# 基础指南

欢迎使用腾讯移动分析（简称MTA）Android统计SDK，您可以按照下面[AndroidStudio自动接入](#自动接入（推荐）)和[eclipse手动接入](#手动集成（以eclipse为例）)开始集成SDK。

## 适用范围

本指南适用MTA Android SDK 3.x.x版本

## 集成准备 —— 创建应用

登陆官网管理台，按照步骤提示注册应用，可获得AppKey，获取位置如下图所示：

![](https://2127914552-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M7ju6xZm7Kx7T1QAutN%2Fsync%2F7f54aba8f4a2083233ca88af19310315c7ff5efb.png?generation=1589941741352671\&alt=media)

## 集成接入

### 自动接入（推荐）

AndroidStudio上可以使用jcenter远程仓库自动接入，不需要在项目中导入jar包和so文件；在AndroidManifest.xml中不需要配置MTA相关的内容， jcenter 会自动导入。（升级SDK删除老版本SDK的配置）

在app build.gradle文件下配置 以下内容

```markup
android {
    defaultConfig {
        ndk {
        //根据需要 自行选择添加的对应cpu类型的.so库。
        abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a'
        // 还可以添加 'x86', 'x86_64', 'mips', 'mips64'
        }
        manifestPlaceholders = [
        MTA_APPKEY:"注册应用的appkey",
        MTA_CHANNEL:"渠道名称"
        ]
    }
}

dependencies {
// mta包稳定版和测试版本二选一，mid包必须要添加 

//mta 3.4.7 稳定版
compile 'com.qq.mta:mta:3.4.7-Release'

//mid jar包 必须添加
compile 'com.tencent.mid:mid:4.06-Release'



}
```

***注意***

如果在添加以上 abiFilter 配置之后android Studio出现以下提示：

NDK integration is deprecated in the current plugin. Consider trying the new experimental plugin. 则在 Project 根目录的gradle.properties文件中添加：

android.useDeprecatedNdk=true

### 手动集成（以eclipse为例）

#### 向工程中导入SDK

前往[SDK下载中心](http://mta.qq.com/mta/ctr_index/download)下载SDK压缩包，解压至本地目录，将其中lib目录下的mta-sdk-x.x.x.jar\[1]复制到您的应用工程libs目录（若不存在请新建一个）中。以Eclipse为例：右键点击工程根目录→选择Properties→ Java Build Path →Libraries→点击Add JARs…选中当前工程libs目彔下的mta-sdk-x.x.x.jar文件，点击“OK”按钮即导入成功。

#### 配置AndroidManifest.xml文件

需要添加下面两类配置：

| Meta-Data      | 类型                          | 用途                                     | 必选 |
| -------------- | --------------------------- | -------------------------------------- | -- |
| TA\_APPKEY     | String，不能为纯数字字符串            | MTA提供给每个app的appkey，用来定位该应用程序的唯一性       | 是  |
| InstallChannel | String，若为纯数字字符串不能超过int表示的范围 | 用来标注应用推广渠道，区分新用户的来源来查看统计[多渠道打包配置](#注意) | 是  |
| Provider       | Android组件                   | 兼容Android 6.0系统（MID 3.0以上版本才需要）        | 否  |

**注意：** appkey和installChannel也能够在代码中设置，见APP设置接口

| 需要的权限                    | 用途                                                | 必选 |
| ------------------------ | ------------------------------------------------- | -- |
| INTERNET                 | 允许应用程序联网，以便向我们的服务器端发送数据                           | 是  |
| READ\_PHONE\_STATE       | 获取用户手机的IMEI，用来唯一的标识用户。(运行在平板上的应用会读取mac地址作为用户的唯一标识 | 是  |
| ACCESS\_NETWORK\_STATE   | 获取设备的网络状态                                         | 是  |
| ACCESS\_WIFI\_STATE      | 获取设备的WIFI网络状态                                     | 是  |
| WRITE\_EXTERNAL\_STORAGE | 获取SD卡信息                                           | 是  |

权限示例文件：

```markup
<!-- 必选权限< -->
<uses-permission android:name="android.permission.INTERNET"/>
<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.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>


<application ......>


<provider
    android:name="com.tencent.mid.api.MidProvider"
    android:authorities="你的包名.TENCENT.MID.V3"
    android:exported="true" >
</provider>
<!-- 请将value改为管理台申请的AppKey < -->
<meta-data android:name="TA_APPKEY" android:value="ABCDEFG12233456"/>
<!-- 请将value改为app发布对应的渠道，不同的发布渠道使用不同的名字 < -->
<meta-data android:name="InstallChannel" android:value="play"/>


</application>
```

## 添加统计代码

### 常用类说明

MTA主要使用到2个类

```java
import com.tencent.stat.StatConfig
import com.tencent.stat.StatService
```

StatConfig类：MTA配置类，可以设置上报策略、Debug开关、session超时时间等，需要在初始化MTA之前被调用才能及时生效，通常使用SDK默认配置即可。

StatService类：MTA统计类，需要开发者按下面的步骤主动调用接口。

### 添加基础统计代码

在App初始化之处，通常为Application或MainActivity的onCreate()方法内，添加以下调用

```java
        // 打开Logcat输出，上线时，一定要关闭
        StatConfig.setDebugEnable(true);
        // 注册activity生命周期，统计时长
        StatService.registerActivityLifecycleCallbacks(this.getApplication());
```

## 集成测试验证

当您完成以下的MTA嵌入工作后，启动app，触发MTA统计接口，便会自动上报数据。

在应用的接入配置页开始SDK集成验证，查看是否接入成功，如下图所示： ![](https://2127914552-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M7ju6xZm7Kx7T1QAutN%2Fsync%2Fe3c4de07c8da6053eaffc54c8a8911d42306275e.png?generation=1589941741199760\&alt=media)

SDK会实时上报数据请等待验证，验证耗时约1分钟，超时请按以下顺序检查：

（1）设备的wifi是否打开，是否正常联网；

（2）APPKEY、权限等设置是否正确；

（3）确保已触发MTA统计接口；

（4）打开MTA的debug开关，查看标签为“MtaSDK“的logcat提示，是否有错误日志；成功上报的日志通常为

```
I/MtaSDK: [StatDispatcher(522): StatDispatcher.java:288] - http recv response status code:200, content length:29
```

（5）如果logcat提示`Compatibility problem was found in this device!`，请先删除apk重新安装，可参考兼容性错误。

## 升级SDK

新版本SDK兼容老版本接口，升级时只需要替换旧的jar包即可：先在工程所在libs目录下删除旧的jar包，复制新jar包到libs路径，同时，在Java Build Path里面删除旧的jar包，并添加新jar包引用。

## 代码混淆

请保留以下选项：

-keep class com.tencent.stat.\*{\*;}

-keep class com.tencent.mid.\*{\*;}

## 注意

* **若使用自定义或第三方打包工具打包，建议通过代码接口的方式配置渠道，具体步骤：**

1. 渠道打包工具打包
2. 代码中，读取打包工具设置的渠道
3. 初始化时，调用StatConfig.setInstallChannel(ctx, channel)设置MTA渠道

* **如需同时统计app内的h5页面数据，请根据**[**hybird app android使用说明**](https://mta.qq.com/docs/hybirid_app.html)**进行集成**
