From 50effbb274fa6b487a080ab5d0732ec7c24af5f6 Mon Sep 17 00:00:00 2001 From: XuqmGroup Date: Tue, 23 Jun 2026 11:12:42 +0800 Subject: [PATCH] fix(bugcollect-plugin): always inject xuqmBuildId manifest placeholder for all variants The placeholder was only set when minifyEnabled=true, causing debug builds to fail with "no value for is provided". Moved buildId injection before the minify guard; mapping upload task registration stays after it. Co-Authored-By: Claude Sonnet 4.6 --- .../sdk/bugcollect/gradle/XuqmBugCollectPlugin.kt | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/sdk-bugcollect-plugin/src/main/kotlin/com/xuqm/sdk/bugcollect/gradle/XuqmBugCollectPlugin.kt b/sdk-bugcollect-plugin/src/main/kotlin/com/xuqm/sdk/bugcollect/gradle/XuqmBugCollectPlugin.kt index 41ec718..d29d28e 100644 --- a/sdk-bugcollect-plugin/src/main/kotlin/com/xuqm/sdk/bugcollect/gradle/XuqmBugCollectPlugin.kt +++ b/sdk-bugcollect-plugin/src/main/kotlin/com/xuqm/sdk/bugcollect/gradle/XuqmBugCollectPlugin.kt @@ -90,15 +90,14 @@ class XuqmBugCollectPlugin : Plugin { ?: return androidComponents.onVariants { variant -> + // Always inject buildId — the AAR manifest placeholder must be resolved for every variant. + val buildId = SimpleDateFormat("yyyyMMddHHmmss", Locale.US).format(Date()) + variant.manifestPlaceholders.put("xuqmBuildId", buildId) + + // Mapping upload only makes sense for minified (release) builds. val buildType = androidDsl.buildTypes.findByName(variant.buildType ?: "") ?: return@onVariants if (!buildType.isMinifyEnabled) return@onVariants - // Generate a per-build identifier stamped at configuration time. - val buildId = SimpleDateFormat("yyyyMMddHHmmss", Locale.US).format(Date()) - // Inject via manifestPlaceholders — SDK reads it from ApplicationInfo.metaData. - // This avoids the namespace vs applicationId mismatch of BuildConfig reflection. - variant.manifestPlaceholders.put("xuqmBuildId", buildId) - val configFile = findVariantConfigFile(target.projectDir, variant.flavorName, variant.buildType) val (fileAppKey, filePlatformUrl) = when { configFile != null -> readEncryptedConfigFile(configFile)