# Unity SDK升级方案

> 来源：https://help.gravity-engine.com/docs/client-sdk/unity/sdk-upgrade
> 说明 Unity SDK 导入方式的变更、旧文件清理与新版升级步骤，避免升级后出现文件冲突。





## 1. Unity SDK 导入方式变更说明 [#1-unity-sdk-导入方式变更说明]

> **🚨 重要提示：从老版本迁移到新版本的必须操作**

**迁移前必须执行的步骤**

**移除老版本 SDK 文件（\<=5.0.24）**

**在导入新版本 UnityPackage 之前，必须先手动删除以下老版本文件：**

> **⚠️ 注意：** 必须在导入新版本 UnityPackage 之前完成删除操作，否则会导致编译冲突！

**📱 Android SDK 文件移除：**

```
Assets/Plugins/Android/GravityEngineSDK-*.aar # 所有以 GravityEngineSDK- 开头的 aar 文件
```

**📱 iOS SDK 文件移除：**

```
Assets/Plugins/iOS/GravityEngineSDK/ # 整个 GravityEngineSDK 文件夹
```

***

## 2. 新版本接入方式（版本 ≥ 5.0.25） [#2-新版本接入方式版本--5025]

### 方式一：插件引入（推荐） [#方式一插件引入推荐]

**EDM4U 插件使用说明**

* **引入方式**：使用 EDM4U 插件动态引用底层 SDK
* **Android**：通过 Maven 库方式引用
* **iOS**：通过 CocoaPods 方式引用
* **详细操作请参考**：《[EDM4U 插件使用说明](https://resource.helplook.net/docker_production/p4xbdk/article/Cy9ZDPCW/attachments/EDM4U自动集成使用事项.zip)》文档

### 方式二：非插件引入 [#方式二非插件引入]

如果不使用自动导入 SDK 插件，在导入 unitypackage 时，**无需**勾选以下两个文件夹：

* `Assets/ExternalDependencyManager`
* `Assets/GravityNet`

此时需要将 Android 和 iOS 的 SDK 手动导入到 Unity 项目，可参考下述的导入方式。

***

## 📱 Android SDK 导入 [#-android-sdk-导入]

### 方法 1：Maven 方式（推荐） [#方法-1maven-方式推荐]

**1. 配置仓库地址**：在 `/Assets/Plugins/Android/settingsTemplate.gradle` 文件中添加以下仓库地址：

```groovy
maven { url 'https://nexus.gravity-engine.com/repository/maven-releases/' }
maven { url 'https://nexus.gravity-engine.com/repository/maven-snapshots/' }
maven { url 'https://developer.huawei.com/repo' }
maven { url 'https://developer.hihonor.com/repo' }
```

**2. 添加依赖**

**国内：** 在 `/Assets/Plugins/Android/mainTemplate.gradle` 文件中添加以下依赖：

```groovy
implementation ("cn.gravity.android:GravityEngineSDK:+")
implementation "com.huawei.hms:ads-identifier:3.4.62.300" // 华为 SDK
implementation 'com.hihonor.mcs:ads-identifier:1.0.3.300' // 荣耀 SDK
```

**海外：** 在 `/Assets/Plugins/Android/mainTemplate.gradle` 文件中添加以下依赖：

```groovy
implementation ("oversea.gravity.android:GravityEngineSDK:+")
implementation "com.huawei.hms:ads-identifier:3.4.62.300" // 华为 SDK
implementation 'com.hihonor.mcs:ads-identifier:1.0.3.300' // 荣耀 SDK
implementation "com.android.installreferrer:installreferrer:+" // Google
```

### 方法 2：手动导入 AAR 方式（不推荐） [#方法-2手动导入-aar-方式不推荐]

1. 下载 Android 最新 SDK 的 AAR 文件（[下载地址](/docs/client-sdk/sdk-overview)）
2. 将 AAR 文件放入 `Assets/Plugins/Android/` 目录下
3. 华为 SDK 和荣耀 SDK 仍需通过上述 Maven 方式引入

### 方法 3：在已有的 Android 项目中接入 [#方法-3在已有的-android-项目中接入]

除上述方式外，也可在已有的 Android 项目中接入，详细操作请参考 [Android 接入文档](/docs/client-sdk/android/quickstart)。

***

## 📱 iOS SDK 导入 [#-ios-sdk-导入]

### 方法 1：CocoaPods 导入（推荐） [#方法-1cocoapods-导入推荐]

**国内：** 在原有的 Podfile 文件中，添加引力 SDK 的引用：

```ruby
pod 'GravityEngineSDK'
```

**海外：** 在原有的 Podfile 文件中，添加引力 SDK 的引用：

```ruby
pod 'GravityEngineOverseaSDK'
```

### 方法 2：手动导入 Framework 方式（不推荐） [#方法-2手动导入-framework-方式不推荐]

1. 下载 iOS 最新 SDK 的 Framework 文件（[下载地址](/docs/client-sdk/sdk-overview)）
2. 将 Framework 文件放入 `Assets/Plugins/iOS/` 目录下
3. 需要对 iOS 项目进行相应设置，详细操作请参考 [iOS 接入文档](/docs/client-sdk/ios/quickstart)

### 方法 3：在已有的 iOS 项目中接入 [#方法-3在已有的-ios-项目中接入]

除上述方式外，也可在已有的 iOS 项目中接入，详细操作请参考 [iOS 接入文档](/docs/client-sdk/ios/quickstart)。

> **注意：** 如果 Unity 版本是区分 UnityFramework 方式，需要将 GravityEngineSDK 引入到名字为 UnityFramework 的 Target 中

<img src="__img0" />
