diff --git a/sdk-core/src/main/java/com/xuqm/sdk/XuqmSDK.kt b/sdk-core/src/main/java/com/xuqm/sdk/XuqmSDK.kt index 2c644ef..55e3f8d 100644 --- a/sdk-core/src/main/java/com/xuqm/sdk/XuqmSDK.kt +++ b/sdk-core/src/main/java/com/xuqm/sdk/XuqmSDK.kt @@ -270,8 +270,6 @@ object XuqmSDK { fun getUserId(): String? = userInfoValue?.userId - fun getUserInfo(): XuqmUserInfo? = userInfoValue - /** * 设置用户信息 — 所有子 SDK 的统一认证入口,登录后调用一次即可。 * diff --git a/sdk-log/build.gradle.kts b/sdk-log/build.gradle.kts index 6a8635d..62bf4bd 100644 --- a/sdk-log/build.gradle.kts +++ b/sdk-log/build.gradle.kts @@ -49,4 +49,7 @@ dependencies { implementation(project(":sdk-core")) implementation("com.squareup.okhttp3:okhttp:4.12.0") implementation("com.google.code.gson:gson:2.10.1") + // Gradle Plugin classes need Gradle API + AGP on compile classpath + compileOnly(gradleApi()) + compileOnly("com.android.tools.build:gradle:9.1.0") } diff --git a/sdk-log/src/main/java/com/xuqm/sdk/log/LogQueue.kt b/sdk-log/src/main/java/com/xuqm/sdk/log/LogQueue.kt index c278e0b..09e92f7 100644 --- a/sdk-log/src/main/java/com/xuqm/sdk/log/LogQueue.kt +++ b/sdk-log/src/main/java/com/xuqm/sdk/log/LogQueue.kt @@ -13,6 +13,10 @@ import org.json.JSONArray import org.json.JSONObject import java.io.File +/** [JSONObject.optString] returns non-null on newer Android; this returns null when the key is absent or the value is null. */ +private fun JSONObject.optNullableString(key: String): String? = + if (has(key) && !isNull(key)) optString(key) else null + internal class LogQueue( private val logApiUrl: String, private val appKey: String, @@ -75,7 +79,7 @@ internal class LogQueue( stack = obj.optString("stack", ""), fingerprint = Fingerprint.compute("native_crash", obj.optString("message", ""), obj.optString("stack", "")), appKey = obj.optString("appKey", appKey), - userId = obj.optString("userId", null), + userId = obj.optNullableString("userId"), platform = "android", appVersion = runCatching { appContext.packageManager.getPackageInfo(appContext.packageName, 0).versionName ?: "unknown" @@ -147,7 +151,7 @@ internal class LogQueue( stack = obj.optString("stack", ""), fingerprint = obj.optString("fingerprint", ""), appKey = obj.optString("appKey", appKey), - userId = obj.optString("userId", null), + userId = obj.optNullableString("userId"), platform = obj.optString("platform", "android"), appVersion = obj.optString("appVersion", ""), metadata = emptyMap(), @@ -165,7 +169,7 @@ internal class LogQueue( pendingEvents.add(LogEvent( name = obj.optString("name", ""), appKey = obj.optString("appKey", appKey), - userId = obj.optString("userId", null), + userId = obj.optNullableString("userId"), platform = obj.optString("platform", "android"), appVersion = obj.optString("appVersion", ""), environment = obj.optString("environment", "production"), diff --git a/sdk-log/src/main/java/com/xuqm/sdk/log/gradle/XuqmLogPlugin.kt b/sdk-log/src/main/java/com/xuqm/sdk/log/gradle/XuqmLogPlugin.kt index f703b00..5390825 100644 --- a/sdk-log/src/main/java/com/xuqm/sdk/log/gradle/XuqmLogPlugin.kt +++ b/sdk-log/src/main/java/com/xuqm/sdk/log/gradle/XuqmLogPlugin.kt @@ -1,5 +1,6 @@ package com.xuqm.sdk.log.gradle +import com.android.build.api.variant.ApplicationVariant import com.android.build.gradle.AppExtension import org.gradle.api.Plugin import org.gradle.api.Project @@ -8,6 +9,7 @@ class XuqmLogPlugin : Plugin { override fun apply(target: Project) { val android = target.extensions.findByType(AppExtension::class.java) ?: return + @Suppress("DEPRECATION") android.applicationVariants.all { variant -> if (!variant.buildType.isMinifyEnabled) return@all @@ -26,7 +28,11 @@ class XuqmLogPlugin : Plugin { ) task.appVersion.set(variant.versionName) task.platform.set("android") - task.mappingFile.set(variant.mappingFileProvider) + task.mappingFile.set( + variant.mappingFileProvider.map { files -> + target.layout.projectDirectory.file(files.singleFile.absolutePath) + } + ) } variant.assembleProvider.configure { it.finalizedBy(uploadTask) } diff --git a/sdk-log/src/main/java/com/xuqm/sdk/log/internal/LogUploader.kt b/sdk-log/src/main/java/com/xuqm/sdk/log/internal/LogUploader.kt index 4b5c620..5c96ecc 100644 --- a/sdk-log/src/main/java/com/xuqm/sdk/log/internal/LogUploader.kt +++ b/sdk-log/src/main/java/com/xuqm/sdk/log/internal/LogUploader.kt @@ -72,12 +72,12 @@ internal object LogUploader { put("appVersion", issue.appVersion) put("environment", issue.environment) put("timestamp", issue.timestamp) - put("metadata", JSONObject(issue.metadata as? Map ?: emptyMap())) + put("metadata", JSONObject(issue.metadata as? Map ?: emptyMap())) } private fun eventToJson(event: LogEvent): JSONObject = JSONObject().apply { put("name", event.name) - put("properties", JSONObject(event.properties as? Map ?: emptyMap())) + put("properties", JSONObject(event.properties as? Map ?: emptyMap())) put("appKey", event.appKey) put("userId", event.userId ?: JSONObject.NULL) put("platform", event.platform) diff --git a/sdk-webview/src/main/java/com/xuqm/sdk/webview/XWebViewStandardHandlers.kt b/sdk-webview/src/main/java/com/xuqm/sdk/webview/XWebViewStandardHandlers.kt index e505fb0..e661c0c 100644 --- a/sdk-webview/src/main/java/com/xuqm/sdk/webview/XWebViewStandardHandlers.kt +++ b/sdk-webview/src/main/java/com/xuqm/sdk/webview/XWebViewStandardHandlers.kt @@ -45,11 +45,11 @@ object XWebViewStandardHandlers { } private fun handleGetUserInfo(): String { - val userInfo = XuqmSDK.getUserInfo() + val userInfo = XuqmSDK.userInfo if (userInfo == null) return errorResponse("not logged in") val data = JSONObject().apply { put("userId", userInfo.userId ?: "") - put("nickname", userInfo.nickname ?: "") + put("nickname", userInfo.name ?: "") put("avatar", userInfo.avatar ?: "") put("phone", userInfo.phone ?: "") }