XuqmGroup-AndroidSDK/sdk-bugcollect/src/main/java/com/xuqm/sdk/bugcollect/Fingerprint.kt

16 行
658 B
Kotlin

package com.xuqm.sdk.bugcollect
object Fingerprint {
// exceptionType = exception class name (e.g. "NullPointerException"), NOT the level string
fun compute(exceptionType: String, message: String, stack: String): String {
val top3 = stack.lines().filter { it.trim().startsWith("at ") }.take(3).joinToString("|")
val normalized = message.replace(Regex("\\b\\d{4,}\\b"), "N")
return sha256("$exceptionType:$normalized:$top3")
}
private fun sha256(s: String): String =
java.security.MessageDigest.getInstance("SHA-256")
.digest(s.toByteArray())
.joinToString("") { "%02x".format(it) }
}