From 212fec1d1dc0198a702f34b3234a4a627368d3e5 Mon Sep 17 00:00:00 2001 From: CORE-FOLDCCCore <1813547935@qq.com> Date: Sat, 16 May 2026 13:05:06 +0800 Subject: [PATCH] fix: merge android manifest replace entries --- CHANGELOG.md | 6 +++++ .../Editor/AD_BuildAndroidProcess.cs | 26 ++++++++++++++++++- package.json | 2 +- 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c7393a7..9f36d37 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +# [1.4.11] + +### 修复 + +* Android 构建后处理合并 `tools:replace` 声明,避免覆盖宿主项目已有的 `android:appComponentFactory` 冲突处理。 + # [1.4.10] ### 更新 diff --git a/Topon_Adapter/Editor/AD_BuildAndroidProcess.cs b/Topon_Adapter/Editor/AD_BuildAndroidProcess.cs index 74965b0..7476196 100644 --- a/Topon_Adapter/Editor/AD_BuildAndroidProcess.cs +++ b/Topon_Adapter/Editor/AD_BuildAndroidProcess.cs @@ -121,7 +121,7 @@ namespace Topon_Adapter.Editor elementlauncherApplication.Add (CreateCSJGromore ()); SetOrAddAttribute (elementlauncherApplication, AndroidNamespace + "allowBackup", "false"); - SetOrAddAttribute (elementlauncherApplication, ToolsNamespace + "replace", "android:allowBackup"); + MergeToolsReplaceAttribute (elementlauncherApplication, "android:allowBackup"); var elementMainManifest = manifest.Element ("manifest"); var elementMainApplication = elementMainManifest.Element ("application"); @@ -263,6 +263,30 @@ namespace Topon_Adapter.Editor attribute.SetValue (value); } + private static void MergeToolsReplaceAttribute (XElement element, params string[] replaceValues) + { + XName replaceAttributeName = ToolsNamespace + "replace"; + List mergedValues = new List (); + + var currentValue = element.Attribute (replaceAttributeName)?.Value; + if (string.IsNullOrWhiteSpace (currentValue) == false) + { + mergedValues.AddRange (currentValue.Split (',') + .Select (value => value.Trim ()) + .Where (value => string.IsNullOrWhiteSpace (value) == false)); + } + + foreach (var replaceValue in replaceValues) + { + if (mergedValues.Contains (replaceValue) == false) + { + mergedValues.Add (replaceValue); + } + } + + element.SetAttributeValue (replaceAttributeName, string.Join (",", mergedValues)); + } + public int callbackOrder { get; } } } diff --git a/package.json b/package.json index c374de3..723592e 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "com.commercialization.topon", "displayName": "Commercialization.topon", "description": "基于topon的广告sdk封装,依赖基础商业化模块", - "version": "1.4.10", + "version": "1.4.11", "unity": "2021.1", "license": "MIT", "repository": {