---
code: android_sdk_multi_appid
name: "多实例"
wikiToken: DqIVwMvuYioiREkZ6Vrcpu4AnVc
parentWikiToken: J7zFwvYawiv1E6k6TsYc5YzXnLc
updateTime: 1765178222000
sourceUrl: https://docs-v2.thinkingdata.cn/?version=v5.0&lan=zh-CN&code=android_sdk_multi_appid
---
# 多实例

### 一、功能介绍

我们支持使用多个Appid，创建SDK实例，我们简称为多实例。通过多实例功能，您可以上报数据到不同的项目。

### 二、创建多实例

传入不同的 APP ID 完成 SDK 初始化，即可创建多个 SDK 实例：

:::: el-tabs

::: el-tab-pane label=Java

```
// 初始化 SDK
TDAnalytics.init(this, TA_APP_ID, TA_SERVER_URL);
TDAnalyticsAPI.track("some_event",properties, TA_APP_ID);

TDAnalytics.init(this, ANOTHER_TA_APP_ID, TA_SERVER_URL);
TDAnalyticsAPI.track("some_event",properties, ANOTHER_TA_APP_ID)

TDAnalytics.init(this, TA_APP_ID, TA_SERVER_URL, NAME);
TDAnalyticsAPI.track("some_event",properties, NAME);
```

:::

::: el-tab-pane label=Kotlin

```
TDAnalytics.init(this, TA_APP_ID, TA_SERVER_URL)
TDAnalytics.init(this, ANOTHER_TA_APP_ID, TA_SERVER_URL)

TDAnalyticsAPI.track("some_event",properties, TA_APP_ID)
TDAnalyticsAPI.track("some_event",properties, ANOTHER_TA_APP_ID)
```

:::

::::

请注意多个 SDK 实例的 APP ID 必须不同，多实例之间的大多数数据是不共通的，详情可参考第四节“多实例间的数据、设置共享”。

### 三、创建轻实例

您可以通过轻实例的方式，创建同一个 APPID 下的多个实例

:::: el-tabs

::: el-tab-pane label=Java

```
//首先创建一个SDK实例
TDAnalytics.init(this, TA_APP_ID, TA_SERVER_URL);
//通过之前创建的实例，调用*lightInstance*生成轻实例
String uuid = TDAnalytics.*lightInstance*();
TDAnalyticsAPI.login("anotherAccount",uuid);
TDAnalyticsAPI.track("some_event",properties,uuid);
```

:::

::: el-tab-pane label=Kotlin

```
//首先创建一个SDK实例
TDAnalytics.init(this, TA_APP_ID, TA_SERVER_URL)
//通过之前创建的实例，调用lightInstance生成轻实例
val uuid = TDAnalytics.lightInstance()
TDAnalyticsAPI.login("anotherAccount", uuid)
TDAnalyticsAPI.track("some_event", properties, uuid)
```

:::

::::

子轻量实例与父实例的 APPID、上报地址以及部分设置一致，但其他信息不共享，详情可参考第四节“多实例间的数据、设置共享”。

### 四、多实例间的数据共享

大多数接口都是由实例对象所调用，因此绝大部分数据与设置在多 APPID 实例、父实例与轻量实例间是不共享的，但有部分数据与设置会对所有实例生效，以下是所有数据与设置在多实例间是否共享的详细说明：

1. 账号相关信息
- 系统默认生成的访客 ID`#distinct_id`：共享
- 调用 `identify` 设置的访客 ID`#distinct_id`：不共享
- 调用`login`设置的账号 ID`#account_id`：不共享
1. 事件上报`track`与用户属性上报`user_set`、`user_setOnce`、`user_add`、`user_delete`：不共享
1. 公共属性`setSuperProperties`和动态公共属性`setDynamicSuperPropertiesTracker`：不共享
1. SDK 配置信息是否在多实例之间共享：
- 上报策略相关（即上报的间隔时间与每批次数据量）：共享，由第一个实例化的 APPID 对应的项目数据决定
- 上传的网络条件`setNetworkType`：共享
- 打印上传数据 Log`EnableTrackLogging`：共享
1. 自动采集事件
- 建议只在一个实例上开启自动采集事件
- 支持向多个 APP ID 上报自动采集事件
- 自动采集事件的相关配置是否在多实例共享： 
- 设置控件 ID`setViewID`：不共享
- 自定义控件属性`setViewProperties`等：不共享
- 忽略某个页面的自动采集事件`ignoreAutoTrackActivity`等：不共享
- 忽略某个类型控件的点击事件`ignoreViewType`：不共享
- 忽略某个控件`ignoreView`：不共享
- 所有的注解：可以通过设置 appId 参数指定生效的实例。如果不设置，则所有实例共享该配置，如：
```
@ThinkingDataIgnoreTrackAppViewScreen(appId = "debug-appid")
```

1. 记录事件时长`timeEvent`：不共享
