feat(sdk-bugcollect): Gradle plugin 支持从 xuqm.config.json 读取配置
- 读取优先级:xuqm.config.json > XUQM_APP_KEY(gradle.properties) - 默认 platformUrl 改为 https://dev.xuqinmin.com(SaaS 平台) - 移除 51szyx.com 硬编码 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
这个提交包含在:
父节点
c8a482a5c0
当前提交
dff226ae71
@ -1,14 +1,26 @@
|
|||||||
package com.xuqm.sdk.bugcollect.gradle
|
package com.xuqm.sdk.bugcollect.gradle
|
||||||
|
|
||||||
import com.android.build.api.variant.ApplicationVariant
|
|
||||||
import com.android.build.gradle.AppExtension
|
import com.android.build.gradle.AppExtension
|
||||||
import org.gradle.api.Plugin
|
import org.gradle.api.Plugin
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
|
import java.io.File
|
||||||
|
|
||||||
class XuqmBugCollectPlugin : Plugin<Project> {
|
class XuqmBugCollectPlugin : Plugin<Project> {
|
||||||
|
|
||||||
|
/** Read appKey/platformUrl from xuqm.config.json at project root (optional). */
|
||||||
|
private fun readConfigFile(rootDir: File): Pair<String?, String?> {
|
||||||
|
val f = File(rootDir, "xuqm.config.json").takeIf { it.exists() } ?: return null to null
|
||||||
|
val text = runCatching { f.readText() }.getOrElse { return null to null }
|
||||||
|
val appKey = Regex(""""appKey"\s*:\s*"([^"]+)"""").find(text)?.groupValues?.get(1)
|
||||||
|
val platformUrl = Regex(""""platformUrl"\s*:\s*"([^"]+)"""").find(text)?.groupValues?.get(1)
|
||||||
|
return appKey to platformUrl
|
||||||
|
}
|
||||||
|
|
||||||
override fun apply(target: Project) {
|
override fun apply(target: Project) {
|
||||||
val android = target.extensions.findByType(AppExtension::class.java) ?: return
|
val android = target.extensions.findByType(AppExtension::class.java) ?: return
|
||||||
|
|
||||||
|
val (fileAppKey, filePlatformUrl) = readConfigFile(target.rootDir)
|
||||||
|
|
||||||
@Suppress("DEPRECATION")
|
@Suppress("DEPRECATION")
|
||||||
android.applicationVariants.all { variant ->
|
android.applicationVariants.all { variant ->
|
||||||
if (!variant.buildType.isMinifyEnabled) return@all
|
if (!variant.buildType.isMinifyEnabled) return@all
|
||||||
@ -16,15 +28,18 @@ class XuqmBugCollectPlugin : Plugin<Project> {
|
|||||||
val taskName = "xuqmUploadMapping${variant.name.replaceFirstChar { it.uppercase() }}"
|
val taskName = "xuqmUploadMapping${variant.name.replaceFirstChar { it.uppercase() }}"
|
||||||
val uploadTask = target.tasks.register(taskName, XuqmUploadMappingTask::class.java) { task ->
|
val uploadTask = target.tasks.register(taskName, XuqmUploadMappingTask::class.java) { task ->
|
||||||
task.group = "xuqm"
|
task.group = "xuqm"
|
||||||
task.description = "Upload ProGuard mapping to XuqmLog service (${variant.name})"
|
task.description = "Upload ProGuard mapping to BugCollect service (${variant.name})"
|
||||||
|
|
||||||
|
// Priority: xuqm.config.json > gradle.properties XUQM_APP_KEY > gradle.properties xuqm.appKey
|
||||||
task.appKey.set(
|
task.appKey.set(
|
||||||
target.findProperty("XUQM_APP_KEY")?.toString()
|
fileAppKey
|
||||||
|
?: target.findProperty("XUQM_APP_KEY")?.toString()
|
||||||
?: target.findProperty("xuqm.appKey")?.toString()
|
?: target.findProperty("xuqm.appKey")?.toString()
|
||||||
)
|
)
|
||||||
task.platformUrl.set(
|
task.platformUrl.set(
|
||||||
target.findProperty("XUQM_PLATFORM_URL")?.toString()
|
filePlatformUrl
|
||||||
?: "https://www.51szyx.com"
|
?: target.findProperty("XUQM_PLATFORM_URL")?.toString()
|
||||||
|
?: "https://dev.xuqinmin.com"
|
||||||
)
|
)
|
||||||
task.appVersion.set(variant.versionName)
|
task.appVersion.set(variant.versionName)
|
||||||
task.platform.set("android")
|
task.platform.set("android")
|
||||||
|
|||||||
正在加载...
在新工单中引用
屏蔽一个用户