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 1980ac8..41ec718 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 @@ -3,7 +3,6 @@ package com.xuqm.sdk.bugcollect.gradle import com.android.build.api.artifact.SingleArtifact import com.android.build.api.dsl.ApplicationExtension import com.android.build.api.variant.ApplicationAndroidComponentsExtension -import com.android.build.api.variant.BuildConfigField import org.gradle.api.Plugin import org.gradle.api.Project import java.io.File @@ -96,10 +95,9 @@ class XuqmBugCollectPlugin : Plugin { // Generate a per-build identifier stamped at configuration time. val buildId = SimpleDateFormat("yyyyMMddHHmmss", Locale.US).format(Date()) - variant.buildConfigFields?.put( - "XUQM_BUILD_ID", - BuildConfigField("String", "\"$buildId\"", "XuqmGroup BugCollect build ID") - ) + // 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 { diff --git a/sdk-bugcollect/src/main/AndroidManifest.xml b/sdk-bugcollect/src/main/AndroidManifest.xml index d1cb683..39bed9d 100644 --- a/sdk-bugcollect/src/main/AndroidManifest.xml +++ b/sdk-bugcollect/src/main/AndroidManifest.xml @@ -1,7 +1,13 @@ - + + + + diff --git a/sdk-bugcollect/src/main/java/com/xuqm/sdk/bugcollect/BugCollect.kt b/sdk-bugcollect/src/main/java/com/xuqm/sdk/bugcollect/BugCollect.kt index dae2345..2649f53 100644 --- a/sdk-bugcollect/src/main/java/com/xuqm/sdk/bugcollect/BugCollect.kt +++ b/sdk-bugcollect/src/main/java/com/xuqm/sdk/bugcollect/BugCollect.kt @@ -242,15 +242,13 @@ object BugCollect { ctx.packageManager.getPackageInfo(ctx.packageName, 0).versionName ?: "unknown" }.getOrDefault("unknown") - /** - * Read the build ID injected by the XuqmGroup BugCollect Gradle plugin. - * The plugin injects BuildConfig.XUQM_BUILD_ID (format yyyyMMddHHmmss) into the app at compile time. - * We access it via reflection so the SDK doesn't depend on the app's BuildConfig class directly. - */ private fun buildId(): String? = runCatching { if (!XuqmSDK.isInitialized()) return null - val pkg = XuqmSDK.appContext.packageName - Class.forName("$pkg.BuildConfig").getField("XUQM_BUILD_ID").get(null) as? String + val ctx = XuqmSDK.appContext + val appInfo = ctx.packageManager.getApplicationInfo( + ctx.packageName, android.content.pm.PackageManager.GET_META_DATA + ) + appInfo.metaData?.getString("com.xuqm.build_id") }.getOrNull() private fun buildDeviceInfo(): IssueEvent.DeviceInfo {