From e1046e901607c403565f7972bc0bc3e78d734097 Mon Sep 17 00:00:00 2001 From: Fankesyooni Date: Sun, 20 Mar 2022 02:43:43 +0800 Subject: [PATCH] Merge code --- demo-app/proguard-rules.pro | 2 -- demo-module/proguard-rules.pro | 2 -- .../YukiHookXposedProcessor.kt | 18 ++++++++++++--- .../hook/xposed/YukiHookModuleStatus.kt | 22 ++++++++++++++----- 4 files changed, 31 insertions(+), 13 deletions(-) diff --git a/demo-app/proguard-rules.pro b/demo-app/proguard-rules.pro index 02f50092..a4dfd7e5 100644 --- a/demo-app/proguard-rules.pro +++ b/demo-app/proguard-rules.pro @@ -29,13 +29,11 @@ -dontoptimize -verbose -overloadaggressively --repackageclasses i -allowaccessmodification -adaptclassstrings -adaptresourcefilenames -adaptresourcefilecontents -# -optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/* -renamesourcefileattribute P -keepattributes SourceFile,LineNumberTable \ No newline at end of file diff --git a/demo-module/proguard-rules.pro b/demo-module/proguard-rules.pro index 02f50092..a4dfd7e5 100644 --- a/demo-module/proguard-rules.pro +++ b/demo-module/proguard-rules.pro @@ -29,13 +29,11 @@ -dontoptimize -verbose -overloadaggressively --repackageclasses i -allowaccessmodification -adaptclassstrings -adaptresourcefilenames -adaptresourcefilecontents -# -optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/* -renamesourcefileattribute P -keepattributes SourceFile,LineNumberTable \ No newline at end of file diff --git a/yukihookapi-ksp-xposed/src/api/kotlin/com/highcapable/yukihookapi_ksp_xposed/YukiHookXposedProcessor.kt b/yukihookapi-ksp-xposed/src/api/kotlin/com/highcapable/yukihookapi_ksp_xposed/YukiHookXposedProcessor.kt index f812ca52..dfecb37c 100644 --- a/yukihookapi-ksp-xposed/src/api/kotlin/com/highcapable/yukihookapi_ksp_xposed/YukiHookXposedProcessor.kt +++ b/yukihookapi-ksp-xposed/src/api/kotlin/com/highcapable/yukihookapi_ksp_xposed/YukiHookXposedProcessor.kt @@ -46,6 +46,18 @@ import java.io.File @AutoService(SymbolProcessorProvider::class) class YukiHookXposedProcessor : SymbolProcessorProvider { + companion object { + + /** 定义 Jvm 方法名 */ + private const val IS_ACTIVE_METHOD_NAME = "__--" + + /** 定义 Jvm 方法名 */ + private const val GET_XPOSED_VERSION_METHOD_NAME = "--__" + + /** 定义 Jvm 方法名 */ + private const val GET_XPOSED_TAG_METHOD_NAME = "_-_-" + } + override fun create(environment: SymbolProcessorEnvironment) = object : SymbolProcessor { /** 自动处理程序的 TAG */ @@ -262,14 +274,14 @@ class YukiHookXposedProcessor : SymbolProcessorProvider { " XposedHelpers.findAndHookMethod(\n" + " YukiHookModuleStatus::class.java.name,\n" + " lpparam.classLoader,\n" + - " \"isActive\",\n" + + " \"$IS_ACTIVE_METHOD_NAME\",\n" + " object : XC_MethodReplacement() {\n" + " override fun replaceHookedMethod(param: MethodHookParam?) = true\n" + " })\n" + " XposedHelpers.findAndHookMethod(\n" + " YukiHookModuleStatus::class.java.name,\n" + " lpparam.classLoader,\n" + - " \"getXposedBridgeTag\",\n" + + " \"$GET_XPOSED_TAG_METHOD_NAME\",\n" + " object : XC_MethodReplacement() {\n" + " override fun replaceHookedMethod(param: MethodHookParam?) = try {\n" + " XposedBridge::class.java.getDeclaredField(\"TAG\").apply { isAccessible = true }.get(null) as String\n" + @@ -280,7 +292,7 @@ class YukiHookXposedProcessor : SymbolProcessorProvider { " XposedHelpers.findAndHookMethod(\n" + " YukiHookModuleStatus::class.java.name,\n" + " lpparam.classLoader,\n" + - " \"getXposedVersion\",\n" + + " \"$GET_XPOSED_VERSION_METHOD_NAME\",\n" + " object : XC_MethodReplacement() {\n" + " override fun replaceHookedMethod(param: MethodHookParam?) = XposedBridge.getXposedVersion()\n" + " })\n" + diff --git a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/xposed/YukiHookModuleStatus.kt b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/xposed/YukiHookModuleStatus.kt index 18e8d9d6..2d76595c 100644 --- a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/xposed/YukiHookModuleStatus.kt +++ b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/xposed/YukiHookModuleStatus.kt @@ -33,7 +33,6 @@ import com.highcapable.yukihookapi.annotation.DoNotUseMethod import com.highcapable.yukihookapi.hook.factory.isModuleActive import com.highcapable.yukihookapi.hook.factory.isTaiChiModuleActive import com.highcapable.yukihookapi.hook.factory.isXposedModuleActive -import com.highcapable.yukihookapi.hook.log.yLoggerI import com.highcapable.yukihookapi.hook.xposed.YukiHookModuleStatus.executorName import com.highcapable.yukihookapi.hook.xposed.YukiHookModuleStatus.executorVersion import de.robv.android.xposed.XposedBridge @@ -55,9 +54,17 @@ import de.robv.android.xposed.XposedBridge * * 详情请参考 [判断自身激活状态](https://github.com/fankes/YukiHookAPI/wiki#%E5%88%A4%E6%96%AD%E8%87%AA%E8%BA%AB%E6%BF%80%E6%B4%BB%E7%8A%B6%E6%80%81) */ -@Keep object YukiHookModuleStatus { + /** 定义 Jvm 方法名 */ + private const val IS_ACTIVE_METHOD_NAME = "__--" + + /** 定义 Jvm 方法名 */ + private const val GET_XPOSED_VERSION_METHOD_NAME = "--__" + + /** 定义 Jvm 方法名 */ + private const val GET_XPOSED_TAG_METHOD_NAME = "_-_-" + /** * 获取当前 Hook 框架的名称 * @@ -83,21 +90,24 @@ object YukiHookModuleStatus { * - ❗此方法为私有功能性 API - 你不应该手动调用此方法 * @return [Boolean] */ + @Keep @DoNotUseMethod - internal fun isActive(): Boolean { - yLoggerI(msg = "This Module is not actived") - return false - } + @JvmName(IS_ACTIVE_METHOD_NAME) + internal fun isActive() = false /** * 此方法经过 Hook 后返回 [XposedBridge.getXposedVersion] * @return [Int] */ + @Keep + @JvmName(GET_XPOSED_VERSION_METHOD_NAME) private fun getXposedVersion() = -1 /** * 此方法经过 Hook 后返回 [XposedBridge] 的 TAG * @return [String] */ + @Keep + @JvmName(GET_XPOSED_TAG_METHOD_NAME) private fun getXposedBridgeTag() = "unknown" } \ No newline at end of file