Dirichlet Ad SDK Unity 接入文档
SDK 支持版本
- Unity 2019.4 LTS 及以上(推荐使用 Unity 2022.3 LTS)
- Android 5.0(API level 21)及以上
- .NET Standard 2.0 及以上
- Gradle 7.x + Android Gradle Plugin 4.0.1 及以上
- Unity 集成资源:
dirichlet_ad_unity_5.2.1.5.unitypackage
SDK 集成
方式一:UnityPackage 导入(推荐)
- 下载
dirichlet_ad_unity_5.2.1.5.unitypackage - 在 Unity 中依次点击 Assets → Import Package → Custom Package…
- 选择下载的
.unitypackage,保持所有条目勾选并导入 - 导入完成后确认存在以下目录:
Assets/DirichletAdAssets/DirichletAd/sample(示例代码)Assets/Plugins/Android/DirichletAd
sample 目录包含示例代码,仅供开发调试参考。
正式发布前请务必删除 sample 目录,避免示例代码被打包到线上版本。
使用 UnityPackage 导入后,可直接跳转至「SDK 初始化」章节开始接入。UnityPackage 已包含完整的 Gradle 依赖配置、AndroidManifest 权限声明及 ProGuard 混淆规则,无需手动处理。
下方「SDK 配置」章节仅适用于以下场景:
- 采用「方式二:手动拷贝」进行集成
- 项目已启用自定义 Gradle/Manifest 模板,需要与现有配置合并
- 构建时出现依赖冲突或 Manifest 合并错误
方式二:手动拷贝
- 将官方提供的
Assets/DirichletAd、Assets/Plugins/Android、Assets/Plugins/Android/libs等目录完整复制至项目 - 保留随包提供的
AndroidManifest.xml、mainTemplate.gradle、proguard-user.txt等构建文件 - 如项目已有自定义模板,请根据下方「SDK 配置」章节合并配置
SDK 配置
本章节仅适用于手动拷贝集成或需要自定义构建配置的场景。若使用 UnityPackage 导入且构建正常,可跳过本章节,直接阅读「运行时权限」及后续内容。
mainTemplate.gradle 依赖配置
- 在 Unity 中勾选 Project Settings → Player → Android → Publish Settings → Build → Custom Main Gradle Template
- 确认生成的
Assets/Plugins/Android/mainTemplate.gradle中包含:flatDir { dirs 'libs', 'DirichletAd/libs' }- 下列依赖声明
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation(name: "dirichlet_ad_5.2.1.5", ext: "aar")
implementation 'com.squareup.okhttp3:okhttp:3.12.1'
implementation "com.android.support:appcompat-v7:28.0.0"
implementation "com.android.support:support-annotations:28.0.0"
implementation "com.android.support:support-v4:28.0.0"
implementation "com.github.bumptech.glide:glide:4.9.0"
implementation 'com.android.support:recyclerview-v7:28.0.0'
}
若接入方使用 EDM4U(External Dependency Manager for Unity),可保留 TapAdDependencies.xml 以自动解析所需依赖。
AndroidManifest 权限配置
在 Custom Main Manifest 模式下编辑 Assets/Plugins/Android/AndroidManifest.xml,按需声明以下权限。SDK 的 Provider 等组件会从 AAR 的 Manifest 自动合并,无需手动添加:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.unity3d.player">
<!-- 必须权限 -->
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<!-- 建议权限(提高定向及下载能力,可按需裁剪) -->
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
</manifest>
正常全量导入 5.2.1.5 UnityPackage 无需额外处理。该版本的 TapADFileProvider 不再使用 @xml/tapad_ad_file_path,Provider 声明会从 SDK AAR 自动合并。
若升级后构建时报 resource xml/tapad_ad_file_path not found,说明工程仍残留旧版 Manifest 配置,并非 SDK 漏包。请按以下步骤排查:
- 全工程搜索
tapad_ad_file_path,重点检查Assets/Plugins/Android/DirichletAd/AndroidManifest.xml和Assets/Plugins/Android/AndroidManifest.xml - 删除旧 Provider 中引用该资源的
<meta-data>;若整个TapADFileProvider都是手动添加的,请删除完整的<provider>节点 - 确保工程中没有旧版
dirichlet_ad_*.aar共存 - 删除 Unity 生成缓存
Library/Bee/Android,然后执行 Clean Build
不要修改报错路径中的 packaged_manifests,该目录由构建过程生成;也不要自行创建同名 XML。
ProGuard 混淆配置
SDK 已内置 R8/ProGuard 混淆规则(通过 consumerProguardFiles 自动合并),通常无需手动添加配置。
如遇混淆相关问题,可在 Assets/Plugins/Android/proguard-user.txt 中增加以下规则:
-dontwarn okhttp3.**
-dontwarn okio.**
-dontwarn com.tapsdk.tapad.**
-keeppackagenames com.tapsdk.tapad.**
-keepclassmembers class * {
@android.webkit.JavascriptInterface <methods>;
}
-keepclassmembers class * extends com.tapsdk.tapad.protobuf.GeneratedMessageLite {
<fields>;
}
-keepnames class * extends com.tapsdk.tapad.protobuf.GeneratedMessageLite