Merge branch 'fix/crashes' into 'dev'

修复Sentry闪退问题

See merge request halo/android/assistant-android!1913
This commit is contained in:
叶子维
2024-10-09 14:04:48 +08:00
3 changed files with 52 additions and 3 deletions

View File

@ -124,11 +124,12 @@ object UsageStatsHelper {
&& curEvent.className == nextEvent.className
) {
val diff = nextEvent.timeStamp - curEvent.timeStamp
val packageName = curEvent.packageName ?: continue
if (pakAndTime[curEvent.packageName] == null) {
pakAndTime[curEvent.packageName] = diff
if (pakAndTime[packageName] == null) {
pakAndTime[packageName] = diff
} else {
pakAndTime[curEvent.packageName] = pakAndTime[curEvent.packageName]!! + diff
pakAndTime[packageName] = pakAndTime[packageName]!! + diff
}
}
}

View File

@ -49,6 +49,7 @@ class GhTransform(var project: Project) : Transform() {
mTransformHelper.addTransformer(RoomTransformer())
mTransformHelper.addTransformer(ActivityTransformer())
mTransformHelper.addTransformer(AppCompatEditTextTransformer())
mTransformHelper.addTransformer(MiniGameWebViewTransformer())
}
/**

View File

@ -0,0 +1,47 @@
package com.gh.gamecenter.plugin.transform
import javassist.ClassPool
import javassist.CtClass
import javassist.NotFoundException
import javassist.bytecode.ClassFile
import java.io.BufferedInputStream
import java.io.DataInputStream
import java.io.InputStream
class MiniGameWebViewTransformer : Transformer {
private val classPool = ClassPool.getDefault()
override fun getModifyClassName(): String {
return "QUAUtil"
}
override fun modifyClass(filePath: String, inputStream: InputStream): CtClass? {
if (filePath.contains(getModifyClassName())) {
println("发现 QUAUtil")
val classFile = ClassFile(DataInputStream(BufferedInputStream(inputStream)))
val ctClass = classPool.get(classFile.name)
if (ctClass.isFrozen) {
ctClass.defrost()
}
// 使用 try catch 包裹找到的第一个 getSystemUA 方法 (若能找到的话)
try {
val ctMethod = ctClass.getDeclaredMethod("getSystemUA")
val body = "{ if (systemUA != null) { return systemUA; } systemUA = java.net.URLEncoder.encode(System.getProperty(\"http.agent\"), \"UTF-8\"); return systemUA; }"
ctMethod.setBody(body)
println("修改 getSystemUA 方法")
} catch (e: NotFoundException) {
e.printStackTrace()
}
return ctClass
}
return null
}
}