From 7a3406511f5f8037ac7558c1c2ea6e94b2473716 Mon Sep 17 00:00:00 2001 From: weiry Date: Tue, 28 Apr 2026 10:38:13 +0800 Subject: [PATCH] =?UTF-8?q?android:=20=E7=94=A8=20after=5Fprepare=20hook?= =?UTF-8?q?=20=E6=9B=BF=E4=BB=A3=20edit-config=20=E6=B3=A8=E5=85=A5=20xmln?= =?UTF-8?q?s:tools?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 避免多插件场景下 edit-config 修改同一 节点时产生冲突, 改为在 prepare 后由 hooks/androidManifestToolsNs.js 按需幂等注入。 Co-Authored-By: Claude Sonnet 4.6 --- hooks/androidManifestToolsNs.js | 41 +++++++++++++++++++++++++++++++++ plugin.xml | 6 ++--- 2 files changed, 43 insertions(+), 4 deletions(-) create mode 100644 hooks/androidManifestToolsNs.js diff --git a/hooks/androidManifestToolsNs.js b/hooks/androidManifestToolsNs.js new file mode 100644 index 0000000..6a3887a --- /dev/null +++ b/hooks/androidManifestToolsNs.js @@ -0,0 +1,41 @@ +/** + * Ensures root declares xmlns:tools so tools:replace on JPUSH_* meta-data merges. + * Idempotent: if xmlns:tools is already present, does nothing (avoids edit-config conflicts at plugin add). + */ +'use strict'; + +const fs = require('fs'); +const path = require('path'); + +const TOOLS_NS = 'xmlns:tools="http://schemas.android.com/tools"'; + +function hasToolsNamespace(xml) { + return /\bxmlns:tools\s*=\s*["']http:\/\/schemas\.android\.com\/tools["']/.test(xml); +} + +function ensureToolsNamespace(xml) { + if (hasToolsNamespace(xml)) { + return xml; + } + return xml.replace(/ - - - - + +