diff --git a/app/src/main/java/com/gh/common/util/UsageStatsHelper.kt b/app/src/main/java/com/gh/common/util/UsageStatsHelper.kt index 58e7c0b5ed..4e0c9fce13 100644 --- a/app/src/main/java/com/gh/common/util/UsageStatsHelper.kt +++ b/app/src/main/java/com/gh/common/util/UsageStatsHelper.kt @@ -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 } } } diff --git a/buildSrc/src/main/kotlin/com/gh/gamecenter/plugin/GhTransform.kt b/buildSrc/src/main/kotlin/com/gh/gamecenter/plugin/GhTransform.kt index 3121eb6aed..466ac0118f 100644 --- a/buildSrc/src/main/kotlin/com/gh/gamecenter/plugin/GhTransform.kt +++ b/buildSrc/src/main/kotlin/com/gh/gamecenter/plugin/GhTransform.kt @@ -49,6 +49,7 @@ class GhTransform(var project: Project) : Transform() { mTransformHelper.addTransformer(RoomTransformer()) mTransformHelper.addTransformer(ActivityTransformer()) mTransformHelper.addTransformer(AppCompatEditTextTransformer()) + mTransformHelper.addTransformer(MiniGameWebViewTransformer()) } /** diff --git a/buildSrc/src/main/kotlin/com/gh/gamecenter/plugin/transform/MiniGameWebViewTransformer.kt b/buildSrc/src/main/kotlin/com/gh/gamecenter/plugin/transform/MiniGameWebViewTransformer.kt new file mode 100644 index 0000000000..7be3fc8050 --- /dev/null +++ b/buildSrc/src/main/kotlin/com/gh/gamecenter/plugin/transform/MiniGameWebViewTransformer.kt @@ -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 + } + +} \ No newline at end of file