diff --git a/Assets/CHANGELOG.md b/Assets/CHANGELOG.md index 627889b..359a215 100644 --- a/Assets/CHANGELOG.md +++ b/Assets/CHANGELOG.md @@ -1,3 +1,15 @@ +# [1.0.5] + +### 调整 + +* Android native 聚合 SDK AAR 升级到 `4.2.7.3`。 +* Android Pangle 依赖升级到 `7.6.1.2`,GDT 依赖升级到 `4.690.1560`,改由 Gradle 后处理注入 Maven 依赖。 +* 移除旧本地 Pangle/GDT AAR,避免与 Maven 依赖重复类。 + +### 文档 + +* 新增 `SDK_MAINTENANCE.md`,记录官方源码改动清单、封装层职责、SDK 升级步骤和发布流程。 + # [1.0.4] ### 新增 diff --git a/Assets/DirichletMediation/Editor/DirichletGradlePostProcessor.cs b/Assets/DirichletMediation/Editor/DirichletGradlePostProcessor.cs index f0553c0..8b9b8fd 100644 --- a/Assets/DirichletMediation/Editor/DirichletGradlePostProcessor.cs +++ b/Assets/DirichletMediation/Editor/DirichletGradlePostProcessor.cs @@ -23,6 +23,8 @@ namespace Dirichlet.Mediation.Editor private const string DIRICHLET_DEPS_END = "// Dirichlet Mediation Dependencies End"; private const string DIRICHLET_REPOS_START = "// Dirichlet Mediation Repositories Start"; private const string DIRICHLET_REPOS_END = "// Dirichlet Mediation Repositories End"; + private const string PangleSdkVersion = "7.6.1.2"; + private const string GdtSdkVersion = "4.690.1560"; public int callbackOrder => 100; // Run after EDM4U (which uses lower values) @@ -157,6 +159,16 @@ namespace Dirichlet.Mediation.Editor } // Maven dependencies (required for SDK functionality) + if (enableCsj) + { + depsBlock.AppendLine($" implementation('com.pangle.cn:ads-sdk-pro:{PangleSdkVersion}') {{"); + depsBlock.AppendLine(" exclude group: 'com.android.support'"); + depsBlock.AppendLine(" }"); + } + if (enableGdt) + { + depsBlock.AppendLine($" implementation 'com.qq.e.union:union:{GdtSdkVersion}'"); + } depsBlock.AppendLine(" implementation 'com.android.support:recyclerview-v7:28.0.0'"); depsBlock.AppendLine(" implementation 'com.github.bumptech.glide:glide:4.9.0'"); depsBlock.AppendLine(" implementation 'com.android.support:support-v4:28.0.0'"); diff --git a/Assets/Plugins/Android/DirichletMediation/libs/DirichletAD_CSJ_Adapter_4.2.5.0.aar b/Assets/Plugins/Android/DirichletMediation/libs/DirichletAD_CSJ_Adapter_4.2.5.0.aar deleted file mode 100644 index 7c277fe..0000000 Binary files a/Assets/Plugins/Android/DirichletMediation/libs/DirichletAD_CSJ_Adapter_4.2.5.0.aar and /dev/null differ diff --git a/Assets/Plugins/Android/DirichletMediation/libs/DirichletAD_CSJ_Adapter_4.2.7.3.aar b/Assets/Plugins/Android/DirichletMediation/libs/DirichletAD_CSJ_Adapter_4.2.7.3.aar new file mode 100644 index 0000000..a46718f Binary files /dev/null and b/Assets/Plugins/Android/DirichletMediation/libs/DirichletAD_CSJ_Adapter_4.2.7.3.aar differ diff --git a/Assets/Plugins/Android/DirichletMediation/libs/DirichletAD_CSJ_Adapter_4.2.5.0.aar.meta b/Assets/Plugins/Android/DirichletMediation/libs/DirichletAD_CSJ_Adapter_4.2.7.3.aar.meta similarity index 100% rename from Assets/Plugins/Android/DirichletMediation/libs/DirichletAD_CSJ_Adapter_4.2.5.0.aar.meta rename to Assets/Plugins/Android/DirichletMediation/libs/DirichletAD_CSJ_Adapter_4.2.7.3.aar.meta diff --git a/Assets/Plugins/Android/DirichletMediation/libs/DirichletAD_GDT_Adapter_4.2.5.0.aar b/Assets/Plugins/Android/DirichletMediation/libs/DirichletAD_GDT_Adapter_4.2.5.0.aar deleted file mode 100644 index f00d661..0000000 Binary files a/Assets/Plugins/Android/DirichletMediation/libs/DirichletAD_GDT_Adapter_4.2.5.0.aar and /dev/null differ diff --git a/Assets/Plugins/Android/DirichletMediation/libs/DirichletAD_GDT_Adapter_4.2.7.3.aar b/Assets/Plugins/Android/DirichletMediation/libs/DirichletAD_GDT_Adapter_4.2.7.3.aar new file mode 100644 index 0000000..b4e494a Binary files /dev/null and b/Assets/Plugins/Android/DirichletMediation/libs/DirichletAD_GDT_Adapter_4.2.7.3.aar differ diff --git a/Assets/Plugins/Android/DirichletMediation/libs/DirichletAD_GDT_Adapter_4.2.5.0.aar.meta b/Assets/Plugins/Android/DirichletMediation/libs/DirichletAD_GDT_Adapter_4.2.7.3.aar.meta similarity index 100% rename from Assets/Plugins/Android/DirichletMediation/libs/DirichletAD_GDT_Adapter_4.2.5.0.aar.meta rename to Assets/Plugins/Android/DirichletMediation/libs/DirichletAD_GDT_Adapter_4.2.7.3.aar.meta diff --git a/Assets/Plugins/Android/DirichletMediation/libs/DirichletAD_IQY_Adapter_4.2.5.0.aar b/Assets/Plugins/Android/DirichletMediation/libs/DirichletAD_IQY_Adapter_4.2.5.0.aar deleted file mode 100644 index 4868a04..0000000 Binary files a/Assets/Plugins/Android/DirichletMediation/libs/DirichletAD_IQY_Adapter_4.2.5.0.aar and /dev/null differ diff --git a/Assets/Plugins/Android/DirichletMediation/libs/DirichletAD_IQY_Adapter_4.2.7.3.aar b/Assets/Plugins/Android/DirichletMediation/libs/DirichletAD_IQY_Adapter_4.2.7.3.aar new file mode 100644 index 0000000..f0127f1 Binary files /dev/null and b/Assets/Plugins/Android/DirichletMediation/libs/DirichletAD_IQY_Adapter_4.2.7.3.aar differ diff --git a/Assets/Plugins/Android/DirichletMediation/libs/DirichletAD_IQY_Adapter_4.2.5.0.aar.meta b/Assets/Plugins/Android/DirichletMediation/libs/DirichletAD_IQY_Adapter_4.2.7.3.aar.meta similarity index 100% rename from Assets/Plugins/Android/DirichletMediation/libs/DirichletAD_IQY_Adapter_4.2.5.0.aar.meta rename to Assets/Plugins/Android/DirichletMediation/libs/DirichletAD_IQY_Adapter_4.2.7.3.aar.meta diff --git a/Assets/Plugins/Android/DirichletMediation/libs/DirichletAD_Mediation_4.2.5.0.aar b/Assets/Plugins/Android/DirichletMediation/libs/DirichletAD_Mediation_4.2.5.0.aar deleted file mode 100644 index 6746cea..0000000 Binary files a/Assets/Plugins/Android/DirichletMediation/libs/DirichletAD_Mediation_4.2.5.0.aar and /dev/null differ diff --git a/Assets/Plugins/Android/DirichletMediation/libs/DirichletAD_Mediation_4.2.7.3.aar b/Assets/Plugins/Android/DirichletMediation/libs/DirichletAD_Mediation_4.2.7.3.aar new file mode 100644 index 0000000..93da284 Binary files /dev/null and b/Assets/Plugins/Android/DirichletMediation/libs/DirichletAD_Mediation_4.2.7.3.aar differ diff --git a/Assets/Plugins/Android/DirichletMediation/libs/DirichletAD_Mediation_4.2.5.0.aar.meta b/Assets/Plugins/Android/DirichletMediation/libs/DirichletAD_Mediation_4.2.7.3.aar.meta similarity index 100% rename from Assets/Plugins/Android/DirichletMediation/libs/DirichletAD_Mediation_4.2.5.0.aar.meta rename to Assets/Plugins/Android/DirichletMediation/libs/DirichletAD_Mediation_4.2.7.3.aar.meta diff --git a/Assets/Plugins/Android/libs/GDTSDK.unionNormal.4.671.1541.aar b/Assets/Plugins/Android/libs/GDTSDK.unionNormal.4.671.1541.aar deleted file mode 100644 index 68322db..0000000 Binary files a/Assets/Plugins/Android/libs/GDTSDK.unionNormal.4.671.1541.aar and /dev/null differ diff --git a/Assets/Plugins/Android/libs/GDTSDK.unionNormal.4.671.1541.aar.meta b/Assets/Plugins/Android/libs/GDTSDK.unionNormal.4.671.1541.aar.meta deleted file mode 100644 index c0095bf..0000000 --- a/Assets/Plugins/Android/libs/GDTSDK.unionNormal.4.671.1541.aar.meta +++ /dev/null @@ -1,33 +0,0 @@ -fileFormatVersion: 2 -guid: 90b3b17e0788494398662e729c344ee2 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Android: Android - second: - enabled: 1 - settings: {} - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: - diff --git a/Assets/Plugins/Android/libs/open_ad_sdk_7.4.2.2.aar b/Assets/Plugins/Android/libs/open_ad_sdk_7.4.2.2.aar deleted file mode 100644 index a98d09d..0000000 Binary files a/Assets/Plugins/Android/libs/open_ad_sdk_7.4.2.2.aar and /dev/null differ diff --git a/Assets/Plugins/Android/libs/open_ad_sdk_7.4.2.2.aar.meta b/Assets/Plugins/Android/libs/open_ad_sdk_7.4.2.2.aar.meta deleted file mode 100644 index d3f502a..0000000 --- a/Assets/Plugins/Android/libs/open_ad_sdk_7.4.2.2.aar.meta +++ /dev/null @@ -1,33 +0,0 @@ -fileFormatVersion: 2 -guid: 930136242e574a2b89110e6a25e49065 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Android: Android - second: - enabled: 1 - settings: {} - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: - diff --git a/Assets/SDK_MAINTENANCE.md b/Assets/SDK_MAINTENANCE.md new file mode 100644 index 0000000..700869d --- /dev/null +++ b/Assets/SDK_MAINTENANCE.md @@ -0,0 +1,115 @@ +# TapADN SDK 封装维护说明 + +本文记录 `Commercialization.tapadn` 对官方 Dirichlet/TapADN 聚合 SDK 的封装、改动和升级注意事项。维护或升级 SDK 时先读本文,再改文件。 + +## 当前 SDK 版本 + +官方链接: + +* 资源下载页:https://ssp.dirichlet.cn/docs/resource-download/ +* 聚合 Unity 接入文档:https://ssp.dirichlet.cn/docs/dirichlet-mediation-sdk/dirichlet-mediation-sdk-guide-unity/ +* 聚合 Android 接入文档:https://ssp.dirichlet.cn/docs/dirichlet-mediation-sdk/dirichlet-mediation-sdk-guide-android/ + +| 范围 | 当前版本 | 来源 | 说明 | +| --- | --- | --- | --- | +| Unity 聚合 SDK | 4.2.5.0 | 官方 `dirichlet_mediation_unity_4.2.5.0.unitypackage` | 官方资源页当前仍只提供 Unity 4.2.5.0。 | +| Android 聚合 native AAR | 4.2.7.3 | 官方 `dirichlet_ad_mediation_4.2.7.3.zip` | 已单独升级 Android native 侧。 | +| Android Pangle | 7.6.1.2 | 官方 Android 聚合接入文档 | 通过 Gradle 后处理注入 Maven 依赖。 | +| Android GDT | 4.690.1560 | 官方 Android 聚合接入文档 | 通过 Gradle 后处理注入 Maven 依赖。 | +| iOS 聚合 SDK Pod | 4.2.0.1 | 官方 iOS 聚合版本 | 默认值在 `DirichletMediationIOSPostProcessor`,可用环境变量覆盖。 | + +## 模块结构 + +| 路径 | 归属 | 维护说明 | +| --- | --- | --- | +| `Assets/DirichletMediation` | 官方 Unity SDK 基础层 | 不再视为纯官方源码,部分文件已有本地改动。 | +| `Assets/Plugins/Android/DirichletMediation` | 官方 Android Unity bridge + native AAR | Java bridge 当前与官方 Unity 包一致;AAR 已升级到 Android native 4.2.7.3。 | +| `Assets/Plugins/Android/libs` | Android 本地依赖 | 保留 `iadsdk-release-2.3.102.110.aar`;Pangle/GDT 不再放本地 AAR,改由 Maven 注入。 | +| `Assets/Tapadn_Adapter` | 本模块封装层 | 对接 `CC-Framework.Commercialization`,不要让业务层直接调用官方 SDK。 | +| `Assets/Samples~` | 可选调试样例 | 不是官方 sample,是本模块验证 `ADManager` 流程的样例。 | + +## 官方源码改动清单 + +以下文件来自官方 Unity SDK,但本仓库已经修改过。升级官方 Unity SDK 时不能直接覆盖,必须三方合并: + +| 文件 | 本地改动目的 | +| --- | --- | +| `Assets/DirichletMediation/Runtime/DirichletAdTypes.cs` | 补齐 Unity 侧 ad handle、auto-ad fallback、事件会话保活、`IsValid` / `Destroy` 包装等桥接行为。 | +| `Assets/DirichletMediation/Runtime/DirichletMediationSdk.cs` | 增强 Android/iOS/noop bridge、Unity 线程派发、iOS load/init callback receiver 和平台兼容逻辑。 | +| `Assets/DirichletMediation/Editor/DirichletGradlePostProcessor.cs` | 改为适配 Unity 导出的 Gradle 工程,注入仓库、support/glide/okhttp、Pangle/GDT Maven 依赖,避免本地 AAR 重复类。 | +| `Assets/DirichletMediation/Editor/DirichletMediationIOSPostProcessor.cs` | 自动生成 Podfile,处理 UnityFramework target、framework/header search paths、SKAdNetwork、ATT、GDT 动态 framework 嵌入和 CocoaPods 异常兜底。 | + +以下官方文件当前与官方 Unity 4.2.5.0 包一致,升级时可优先直接替换后验证: + +| 文件 | 说明 | +| --- | --- | +| `Assets/DirichletMediation/Editor/DirichletMediationDependencies.xml` | EDM4U 依赖声明。 | +| `Assets/Plugins/Android/DirichletMediation/src/main/java/com/dirichlet/unity/DirichletUnityBridge.java` | Android Java bridge。 | +| `Assets/Plugins/Android/AndroidManifest.xml` | 官方基础 Manifest。 | +| `Assets/Plugins/Android/proguard-user.txt` | 当前为空文件。 | + +## 封装层做了什么 + +`Tapadn_Adapter` 的目标是让业务项目只面对 `ADManager` / `ADConfig` / `AD_Type`: + +1. `TapadnAdController` 从 `ADConfig` 和 `CommonKeyValues` 解析媒体 ID、MediaKey、广告位、渠道、debug、权限、预加载和展示超时配置。 +2. `TapadnCommercialization` 提供创建 controller、初始化 `ADManager`、创建默认 `ADConfig`、批量写入激励场景广告位映射的便捷入口。 +3. `TapadnAdRequestFactory` 统一构建 `DirichletAdRequest`,保证 SpaceId 是正整数,并注入 UserId、奖励名、奖励数量、展示尺寸。 +4. `TapadnAwardVideoPlayer` 对接激励视频。手动 load/show 模式下,按 SpaceId 隔离缓存;展示关闭、展示失败、`IsValid == false`、或默认 600 秒未消费都会销毁缓存。 +5. `TapadnInteractionPlayer` 对接插屏;`TapadnSplashPlayer` 对接开屏。两者保持单默认广告位语义。 +6. `TapadnSmartLoadOrchestrator` 维护场景学习数据和智能预加载归因。当前是保守策略:默认不开启;开启后先观察用户点击广告的概率,达到阈值才自动预加载。 + +## 场景广告位规则 + +激励视频支持游戏场景映射不同 SpaceId: + +| 配置 key | 示例 | +| --- | --- | +| `tapadn.rewarded_scene_slot.` | `tapadn.rewarded_scene_slot.level_clear = 200101` | +| `tapadn.rewarded_scene_slots` | `level_clear=200101,daily_bonus=200102` | +| `tapadn.rewarded_scene_slots_json` | `{ "Mappings": [ { "Scene": "level_clear", "SlotId": "200101" } ] }` | + +回退规则: + +1. 未传场景、场景为空、场景未配置、配置 SpaceId 非法时,使用 `BaseAwardAdKeyValue.value`。 +2. 如果两个场景配置到同一个 SpaceId,它们共享同一个广告位缓存。 +3. 如果 A 场景 SpaceId 已加载但没展示,用户去 B 场景展示 B SpaceId,A 缓存不会被 B 消费;A 会等回到 A 时复用,或超时/失效后销毁。 + +## Android 升级步骤 + +1. 查官方资源页和聚合 Android 发布记录,确认最新 Android 聚合版本、Pangle 版本、GDT 版本。 +2. 下载 `dirichlet_ad_mediation_.zip`,校验官方 MD5。 +3. 替换 `Assets/Plugins/Android/DirichletMediation/libs/DirichletAD_*_.aar`。 +4. 检查官方 Android 接入文档中的 Maven 依赖,更新 `DirichletGradlePostProcessor` 里的 `PangleSdkVersion`、`GdtSdkVersion`。 +5. 不要同时保留 Pangle/GDT 本地 AAR 和 Maven 依赖,否则容易出现 duplicate classes。当前策略是 Pangle/GDT 走 Maven。 +6. 搜索旧版本号,更新 `GLOBAL_DESIGN.md`、`README.md`、`CHANGELOG.md` 和 `Assets/package.json`。 +7. 至少执行 `dotnet build Commercialization.tapadn.sln --no-restore` 和 `git diff --check`。 +8. Android 真机构建仍需在消费项目里跑项目自带构建流程验证 Manifest merge、Gradle dependency resolution 和广告展示回调。 + +## Unity SDK 升级步骤 + +1. 下载官方新的 `dirichlet_mediation_unity_.unitypackage` 并校验 MD5。 +2. 解包到临时目录,对比 `Assets/DirichletMediation` 和 `Assets/Plugins/Android`。 +3. 对“官方源码改动清单”里的 4 个文件做三方合并,不允许直接覆盖。 +4. 官方 sample 不进入默认包;如需要保留调试能力,继续放到 `Samples~`。 +5. 检查 Android Java bridge API 是否和当前 C# bridge 匹配,重点是 load/show/destroy/isValid/auto-ad callback。 +6. 检查 iOS Pod 名称和版本是否变化,同步 `DirichletMediationIOSPostProcessor` 的默认版本和 search path 规则。 +7. 重新验证 Android/iOS editor compile;真机展示验证至少覆盖初始化、激励 load/show/close/reward、插屏、开屏、无填充失败。 + +## 发布步骤 + +包根是 `Assets/package.json`,消费者应使用: + +```json +"com.commercialization.tapadn": "http://private.lightyears.ltd:18650/foldcc/Commercialization.tapadn.git?path=/Assets#" +``` + +发布命令: + +```bash +git subtree split --prefix=Assets --branch upm +git tag +git push origin master upm +``` + +注意:当前版本 tag 打在完整仓库 `master` 上,因此消费者必须带 `?path=/Assets`。 diff --git a/Assets/SDK_MAINTENANCE.md.meta b/Assets/SDK_MAINTENANCE.md.meta new file mode 100644 index 0000000..1bacffc --- /dev/null +++ b/Assets/SDK_MAINTENANCE.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: dcf571baef764df0aa6789990d47c36a +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/package.json b/Assets/package.json index e9a4553..dcbf331 100644 --- a/Assets/package.json +++ b/Assets/package.json @@ -2,7 +2,7 @@ "name": "com.commercialization.tapadn", "displayName": "Commercialization.tapadn", "description": "TapADN / Dirichlet mediation implementation for CC-Framework.Commercialization.", - "version": "1.0.4", + "version": "1.0.5", "unity": "2022.3", "license": "MIT", "repository": { diff --git a/GLOBAL_DESIGN.md b/GLOBAL_DESIGN.md index 0d7fb98..80a6d84 100644 --- a/GLOBAL_DESIGN.md +++ b/GLOBAL_DESIGN.md @@ -12,7 +12,7 @@ ## 目录 -* `Assets/DirichletMediation`: 官方聚合 Unity SDK `4.2.5.0`,已删除官方 Sample。 +* `Assets/DirichletMediation`: 官方聚合 Unity SDK 基础层 `4.2.5.0`,已删除官方 Sample;Android native AAR 单独升级到 `4.2.7.3`。 * `Assets/Plugins/Android`: 官方 Android AAR、Manifest、ProGuard、本地微信 OpenSDK AAR。 * `Assets/Plugins/iOS`: iOS Objective-C++ bridge。 * `Assets/Tapadn_Adapter/Runtime/Scripts`: 商业化抽象层适配。 diff --git a/README.md b/README.md index 8825ec7..cd11f57 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ ```json { "com.foldcc.cc-framework.commercialization": "http://private.lightyears.ltd:18650/foldcc/CC-Framework.Commercialization.git#1.0.15", - "com.commercialization.tapadn": "http://private.lightyears.ltd:18650/foldcc/Commercialization.tapadn.git?path=/Assets#1.0.4" + "com.commercialization.tapadn": "http://private.lightyears.ltd:18650/foldcc/Commercialization.tapadn.git?path=/Assets#1.0.5" } ``` @@ -188,11 +188,14 @@ JSON 配置示例: 包内包含官方 `DirichletMediation` SDK、Android AAR、iOS bridge、EDM4U 依赖声明和构建后处理。 +维护和升级说明见 `SDK_MAINTENANCE.md`,其中记录了官方源码改动清单、Android/iOS/Unity SDK 升级步骤和发布流程。 + 构建后处理会自动补齐: * TapADN 所需权限。 * TapADN `TapADFileProvider` 与 `tapad_ad_file_path.xml`。 * 微信 OpenSDK `WXEntryActivity`、`queries`、本地 `wechat-sdk-android-6.8.34.aar`。 +* Pangle `com.pangle.cn:ads-sdk-pro:7.6.1.2` 和 GDT `com.qq.e.union:union:4.690.1560` Maven 依赖。 * `android.useAndroidX=true` 与 `android.enableJetifier=true`。 包内不默认暴露可视化编辑面板;调试样例通过 `Samples~` 作为可选导入内容。