mirror of
https://github.com/HighCapable/YukiHookAPI.git
synced 2025-09-05 18:25:28 +08:00
Modify merge external caller package and class name to ExternalCallerName in CodeSourceFileFactory
This commit is contained in:
@@ -62,6 +62,36 @@ object ClassName {
|
|||||||
const val Reflection = "Reflection"
|
const val Reflection = "Reflection"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 外部调用者包名和类名定义类
|
||||||
|
*/
|
||||||
|
object ExternalCallerName {
|
||||||
|
val YukiGenerateApiAnnotation = Pair(
|
||||||
|
"com.highcapable.yukihookapi.annotation.YukiGenerateApi",
|
||||||
|
"YukiGenerateApi"
|
||||||
|
)
|
||||||
|
val HandlerDelegateCaller = Pair(
|
||||||
|
"com.highcapable.yukihookapi.hook.xposed.parasitic.activity.delegate.caller.HandlerDelegateCaller",
|
||||||
|
"HandlerDelegateCaller"
|
||||||
|
)
|
||||||
|
val IActivityManagerProxyCaller = Pair(
|
||||||
|
"com.highcapable.yukihookapi.hook.xposed.parasitic.activity.delegate.caller.IActivityManagerProxyCaller",
|
||||||
|
"IActivityManagerProxyCaller"
|
||||||
|
)
|
||||||
|
val YukiXposedEventCaller = Pair(
|
||||||
|
"com.highcapable.yukihookapi.hook.xposed.bridge.event.caller.YukiXposedEventCaller",
|
||||||
|
"YukiXposedEventCaller"
|
||||||
|
)
|
||||||
|
val YukiXposedModuleCaller = Pair(
|
||||||
|
"com.highcapable.yukihookapi.hook.xposed.bridge.caller.YukiXposedModuleCaller",
|
||||||
|
"YukiXposedModuleCaller"
|
||||||
|
)
|
||||||
|
val YukiXposedResourcesCaller = Pair(
|
||||||
|
"com.highcapable.yukihookapi.hook.xposed.bridge.resources.caller.YukiXposedResourcesCaller",
|
||||||
|
"YukiXposedResourcesCaller"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* YukiXposedModuleStatus 方法名称定义类
|
* YukiXposedModuleStatus 方法名称定义类
|
||||||
*/
|
*/
|
||||||
@@ -186,11 +216,11 @@ fun GenerateData.sources() = mapOf(
|
|||||||
"package ${PackageName.HandlerDelegateImpl_Impl}\n" +
|
"package ${PackageName.HandlerDelegateImpl_Impl}\n" +
|
||||||
"\n" +
|
"\n" +
|
||||||
"import android.os.Handler\n" +
|
"import android.os.Handler\n" +
|
||||||
"import com.highcapable.yukihookapi.annotation.YukiGenerateApi\n" +
|
"import ${ExternalCallerName.YukiGenerateApiAnnotation.first}\n" +
|
||||||
"import ${PackageName.HandlerDelegateClass}.${tailPackageName(ClassName.HandlerDelegateClass)}\n" +
|
"import ${PackageName.HandlerDelegateClass}.${tailPackageName(ClassName.HandlerDelegateClass)}\n" +
|
||||||
"\n" +
|
"\n" +
|
||||||
createCommentContent(currrentClassTag = ClassName.HandlerDelegateImpl_Impl) +
|
createCommentContent(currrentClassTag = ClassName.HandlerDelegateImpl_Impl) +
|
||||||
"@YukiGenerateApi\n" +
|
"@${ExternalCallerName.YukiGenerateApiAnnotation.second}\n" +
|
||||||
"object ${ClassName.HandlerDelegateImpl_Impl} {\n" +
|
"object ${ClassName.HandlerDelegateImpl_Impl} {\n" +
|
||||||
"\n" +
|
"\n" +
|
||||||
" val wrapperClassName get() = \"${PackageName.HandlerDelegateClass}.${tailPackageName(ClassName.HandlerDelegateClass)}\"\n" +
|
" val wrapperClassName get() = \"${PackageName.HandlerDelegateClass}.${tailPackageName(ClassName.HandlerDelegateClass)}\"\n" +
|
||||||
@@ -204,58 +234,59 @@ fun GenerateData.sources() = mapOf(
|
|||||||
"import android.os.Handler\n" +
|
"import android.os.Handler\n" +
|
||||||
"import android.os.Message\n" +
|
"import android.os.Message\n" +
|
||||||
"import androidx.annotation.Keep\n" +
|
"import androidx.annotation.Keep\n" +
|
||||||
"import com.highcapable.yukihookapi.annotation.YukiGenerateApi\n" +
|
"import ${ExternalCallerName.YukiGenerateApiAnnotation.first}\n" +
|
||||||
"import com.highcapable.yukihookapi.hook.xposed.parasitic.activity.delegate.caller.HandlerDelegateCaller\n" +
|
"import ${ExternalCallerName.HandlerDelegateCaller.first}\n" +
|
||||||
"\n" +
|
"\n" +
|
||||||
createCommentContent(currrentClassTag = ClassName.HandlerDelegateClass) +
|
createCommentContent(currrentClassTag = ClassName.HandlerDelegateClass) +
|
||||||
"@Keep\n" +
|
"@Keep\n" +
|
||||||
"@YukiGenerateApi\n" +
|
"@${ExternalCallerName.YukiGenerateApiAnnotation.second}\n" +
|
||||||
"class ${tailPackageName(ClassName.HandlerDelegateClass)}(private val baseInstance: Handler.Callback?) : Handler.Callback {\n" +
|
"class ${tailPackageName(ClassName.HandlerDelegateClass)}(private val baseInstance: Handler.Callback?) : Handler.Callback {\n" +
|
||||||
"\n" +
|
"\n" +
|
||||||
" override fun handleMessage(msg: Message) = HandlerDelegateCaller.callHandleMessage(baseInstance, msg)\n" +
|
" override fun handleMessage(msg: Message) = ${ExternalCallerName.HandlerDelegateCaller.second}.callHandleMessage(baseInstance, msg)\n" +
|
||||||
"}"),
|
"}"),
|
||||||
ClassName.IActivityManagerProxyImpl_Impl to ("@file:Suppress(\"ClassName\")\n" +
|
ClassName.IActivityManagerProxyImpl_Impl to ("@file:Suppress(\"ClassName\")\n" +
|
||||||
"\n" +
|
"\n" +
|
||||||
"package ${PackageName.IActivityManagerProxyImpl_Impl}\n" +
|
"package ${PackageName.IActivityManagerProxyImpl_Impl}\n" +
|
||||||
"\n" +
|
"\n" +
|
||||||
"import android.os.Handler\n" +
|
"import android.os.Handler\n" +
|
||||||
"import com.highcapable.yukihookapi.annotation.YukiGenerateApi\n" +
|
"import ${ExternalCallerName.YukiGenerateApiAnnotation.first}\n" +
|
||||||
"import com.highcapable.yukihookapi.hook.xposed.parasitic.activity.delegate.caller.IActivityManagerProxyCaller\n" +
|
"import ${ExternalCallerName.IActivityManagerProxyCaller.first}\n" +
|
||||||
"import ${PackageName.IActivityManagerProxyClass}.${tailPackageName(ClassName.IActivityManagerProxyClass)}\n" +
|
"import ${PackageName.IActivityManagerProxyClass}.${tailPackageName(ClassName.IActivityManagerProxyClass)}\n" +
|
||||||
"import java.lang.reflect.Proxy\n" +
|
"import java.lang.reflect.Proxy\n" +
|
||||||
"\n" +
|
"\n" +
|
||||||
createCommentContent(currrentClassTag = ClassName.IActivityManagerProxyImpl_Impl) +
|
createCommentContent(currrentClassTag = ClassName.IActivityManagerProxyImpl_Impl) +
|
||||||
"@YukiGenerateApi\n" +
|
"@${ExternalCallerName.YukiGenerateApiAnnotation.second}\n" +
|
||||||
"object ${ClassName.IActivityManagerProxyImpl_Impl} {\n" +
|
"object ${ClassName.IActivityManagerProxyImpl_Impl} {\n" +
|
||||||
"\n" +
|
"\n" +
|
||||||
" fun createWrapper(clazz: Class<*>?, instance: Any) = \n" +
|
" fun createWrapper(clazz: Class<*>?, instance: Any) = \n" +
|
||||||
" Proxy.newProxyInstance(IActivityManagerProxyCaller.currentClassLoader, arrayOf(clazz), ${tailPackageName(ClassName.IActivityManagerProxyClass)}(instance))\n" +
|
" Proxy.newProxyInstance(${ExternalCallerName.IActivityManagerProxyCaller.second}.currentClassLoader, arrayOf(clazz)," +
|
||||||
|
" ${tailPackageName(ClassName.IActivityManagerProxyClass)}(instance))\n" +
|
||||||
"}"),
|
"}"),
|
||||||
ClassName.IActivityManagerProxyClass to ("@file:Suppress(\"ClassName\")\n" +
|
ClassName.IActivityManagerProxyClass to ("@file:Suppress(\"ClassName\")\n" +
|
||||||
"\n" +
|
"\n" +
|
||||||
"package ${PackageName.IActivityManagerProxyClass}\n" +
|
"package ${PackageName.IActivityManagerProxyClass}\n" +
|
||||||
"\n" +
|
"\n" +
|
||||||
"import androidx.annotation.Keep\n" +
|
"import androidx.annotation.Keep\n" +
|
||||||
"import com.highcapable.yukihookapi.annotation.YukiGenerateApi\n" +
|
"import ${ExternalCallerName.YukiGenerateApiAnnotation.first}\n" +
|
||||||
"import com.highcapable.yukihookapi.hook.xposed.parasitic.activity.delegate.caller.IActivityManagerProxyCaller\n" +
|
"import ${ExternalCallerName.IActivityManagerProxyCaller.first}\n" +
|
||||||
"import java.lang.reflect.InvocationHandler\n" +
|
"import java.lang.reflect.InvocationHandler\n" +
|
||||||
"import java.lang.reflect.Method\n" +
|
"import java.lang.reflect.Method\n" +
|
||||||
"import java.lang.reflect.Proxy\n" +
|
"import java.lang.reflect.Proxy\n" +
|
||||||
"\n" +
|
"\n" +
|
||||||
createCommentContent(currrentClassTag = ClassName.IActivityManagerProxyClass) +
|
createCommentContent(currrentClassTag = ClassName.IActivityManagerProxyClass) +
|
||||||
"@Keep\n" +
|
"@Keep\n" +
|
||||||
"@YukiGenerateApi\n" +
|
"@${ExternalCallerName.YukiGenerateApiAnnotation.second}\n" +
|
||||||
"class ${tailPackageName(ClassName.IActivityManagerProxyClass)}(private val baseInstance: Any) : InvocationHandler {\n" +
|
"class ${tailPackageName(ClassName.IActivityManagerProxyClass)}(private val baseInstance: Any) : InvocationHandler {\n" +
|
||||||
"\n" +
|
"\n" +
|
||||||
" override fun invoke(proxy: Any?, method: Method?, args: Array<Any>?) = IActivityManagerProxyCaller.callInvoke(baseInstance, method, args)\n" +
|
" override fun invoke(proxy: Any?, method: Method?, args: Array<Any>?) = ${ExternalCallerName.IActivityManagerProxyCaller.second}.callInvoke(baseInstance, method, args)\n" +
|
||||||
"}"),
|
"}"),
|
||||||
ClassName.XposedInit to ("@file:Suppress(\"ClassName\")\n" +
|
ClassName.XposedInit to ("@file:Suppress(\"ClassName\")\n" +
|
||||||
"\n" +
|
"\n" +
|
||||||
"package $entryPackageName\n" +
|
"package $entryPackageName\n" +
|
||||||
"\n" +
|
"\n" +
|
||||||
"import androidx.annotation.Keep\n" +
|
"import androidx.annotation.Keep\n" +
|
||||||
"import com.highcapable.yukihookapi.hook.xposed.bridge.event.caller.YukiXposedEventCaller\n" +
|
"import ${ExternalCallerName.YukiXposedEventCaller.first}\n" +
|
||||||
"import com.highcapable.yukihookapi.annotation.YukiGenerateApi\n" +
|
"import ${ExternalCallerName.YukiGenerateApiAnnotation.first}\n" +
|
||||||
(if (isUsingResourcesHook) "import de.robv.android.xposed.IXposedHookInitPackageResources\n" else "") +
|
(if (isUsingResourcesHook) "import de.robv.android.xposed.IXposedHookInitPackageResources\n" else "") +
|
||||||
"import de.robv.android.xposed.IXposedHookLoadPackage\n" +
|
"import de.robv.android.xposed.IXposedHookLoadPackage\n" +
|
||||||
"import de.robv.android.xposed.IXposedHookZygoteInit\n" +
|
"import de.robv.android.xposed.IXposedHookZygoteInit\n" +
|
||||||
@@ -264,32 +295,32 @@ fun GenerateData.sources() = mapOf(
|
|||||||
"\n" +
|
"\n" +
|
||||||
createCommentContent(entryClassName, currrentClassTag = "Xposed Init") +
|
createCommentContent(entryClassName, currrentClassTag = "Xposed Init") +
|
||||||
"@Keep\n" +
|
"@Keep\n" +
|
||||||
"@YukiGenerateApi\n" +
|
"@${ExternalCallerName.YukiGenerateApiAnnotation.second}\n" +
|
||||||
"class $xInitClassName : IXposedHookZygoteInit, IXposedHookLoadPackage" +
|
"class $xInitClassName : IXposedHookZygoteInit, IXposedHookLoadPackage" +
|
||||||
"${if (isUsingResourcesHook) ", IXposedHookInitPackageResources" else ""} {\n" +
|
"${if (isUsingResourcesHook) ", IXposedHookInitPackageResources" else ""} {\n" +
|
||||||
"\n" +
|
"\n" +
|
||||||
" override fun initZygote(sparam: IXposedHookZygoteInit.StartupParam?) {\n" +
|
" override fun initZygote(sparam: IXposedHookZygoteInit.StartupParam?) {\n" +
|
||||||
" ${entryClassName}_Impl.callInitZygote(sparam)\n" +
|
" ${entryClassName}_Impl.callInitZygote(sparam)\n" +
|
||||||
" YukiXposedEventCaller.callInitZygote(sparam)\n" +
|
" ${ExternalCallerName.YukiXposedEventCaller.second}.callInitZygote(sparam)\n" +
|
||||||
" }\n" +
|
" }\n" +
|
||||||
"\n" +
|
"\n" +
|
||||||
" override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam?) {\n" +
|
" override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam?) {\n" +
|
||||||
" ${entryClassName}_Impl.callHandleLoadPackage(lpparam)\n" +
|
" ${entryClassName}_Impl.callHandleLoadPackage(lpparam)\n" +
|
||||||
" YukiXposedEventCaller.callHandleLoadPackage(lpparam)\n" +
|
" ${ExternalCallerName.YukiXposedEventCaller.second}.callHandleLoadPackage(lpparam)\n" +
|
||||||
" }\n" +
|
" }\n" +
|
||||||
(if (isUsingResourcesHook)
|
(if (isUsingResourcesHook)
|
||||||
("\n override fun handleInitPackageResources(resparam: XC_InitPackageResources.InitPackageResourcesParam?) {\n" +
|
("\n override fun handleInitPackageResources(resparam: XC_InitPackageResources.InitPackageResourcesParam?) {\n" +
|
||||||
" ${entryClassName}_Impl.callHandleInitPackageResources(resparam)\n" +
|
" ${entryClassName}_Impl.callHandleInitPackageResources(resparam)\n" +
|
||||||
" YukiXposedEventCaller.callHandleInitPackageResources(resparam)\n" +
|
" ${ExternalCallerName.YukiXposedEventCaller.second}.callHandleInitPackageResources(resparam)\n" +
|
||||||
" }\n") else "") +
|
" }\n") else "") +
|
||||||
"}"),
|
"}"),
|
||||||
ClassName.XposedInit_Impl to ("@file:Suppress(\"ClassName\")\n" +
|
ClassName.XposedInit_Impl to ("@file:Suppress(\"ClassName\")\n" +
|
||||||
"\n" +
|
"\n" +
|
||||||
"package $entryPackageName\n" +
|
"package $entryPackageName\n" +
|
||||||
"\n" +
|
"\n" +
|
||||||
"import com.highcapable.yukihookapi.annotation.YukiGenerateApi\n" +
|
"import ${ExternalCallerName.YukiGenerateApiAnnotation.first}\n" +
|
||||||
"import com.highcapable.yukihookapi.hook.xposed.bridge.caller.YukiXposedModuleCaller\n" +
|
"import ${ExternalCallerName.YukiXposedModuleCaller.first}\n" +
|
||||||
"import com.highcapable.yukihookapi.hook.xposed.bridge.resources.caller.YukiXposedResourcesCaller\n" +
|
"import ${ExternalCallerName.YukiXposedResourcesCaller.first}\n" +
|
||||||
"import com.highcapable.yukihookapi.hook.xposed.bridge.type.HookEntryType\n" +
|
"import com.highcapable.yukihookapi.hook.xposed.bridge.type.HookEntryType\n" +
|
||||||
"import de.robv.android.xposed.IXposedHookZygoteInit\n" +
|
"import de.robv.android.xposed.IXposedHookZygoteInit\n" +
|
||||||
"import de.robv.android.xposed.XposedBridge\n" +
|
"import de.robv.android.xposed.XposedBridge\n" +
|
||||||
@@ -298,7 +329,7 @@ fun GenerateData.sources() = mapOf(
|
|||||||
(if (customMPackageName.isBlank()) "import $modulePackageName.BuildConfig\n" else "") +
|
(if (customMPackageName.isBlank()) "import $modulePackageName.BuildConfig\n" else "") +
|
||||||
"\n" +
|
"\n" +
|
||||||
createCommentContent(entryClassName, currrentClassTag = "Xposed Init Impl") +
|
createCommentContent(entryClassName, currrentClassTag = "Xposed Init Impl") +
|
||||||
"@YukiGenerateApi\n" +
|
"@${ExternalCallerName.YukiGenerateApiAnnotation.second}\n" +
|
||||||
"object ${entryClassName}_Impl {\n" +
|
"object ${entryClassName}_Impl {\n" +
|
||||||
"\n" +
|
"\n" +
|
||||||
" private const val modulePackageName = " +
|
" private const val modulePackageName = " +
|
||||||
@@ -314,14 +345,14 @@ fun GenerateData.sources() = mapOf(
|
|||||||
" if (isZygoteCalled.not()) runCatching {\n" +
|
" if (isZygoteCalled.not()) runCatching {\n" +
|
||||||
" hookEntry.onXposedEvent()\n" +
|
" hookEntry.onXposedEvent()\n" +
|
||||||
" hookEntry.onInit()\n" +
|
" hookEntry.onInit()\n" +
|
||||||
" if (YukiXposedModuleCaller.isXposedCallbackSetUp) {\n" +
|
" if (${ExternalCallerName.YukiXposedModuleCaller.second}.isXposedCallbackSetUp) {\n" +
|
||||||
" YukiXposedModuleCaller.internalLoggerE(\"You cannot load a hooker in \\\"onInit\\\" or \\\"onXposedEvent\\\" method! Aborted\")\n" +
|
" ${ExternalCallerName.YukiXposedModuleCaller.second}.internalLoggerE(\"You cannot load a hooker in \\\"onInit\\\" or \\\"onXposedEvent\\\" method! Aborted\")\n" +
|
||||||
" return\n" +
|
" return\n" +
|
||||||
" }\n" +
|
" }\n" +
|
||||||
" hookEntry.onHook()\n" +
|
" hookEntry.onHook()\n" +
|
||||||
" YukiXposedModuleCaller.callOnFinishLoadModule()\n" +
|
" ${ExternalCallerName.YukiXposedModuleCaller.second}.callOnFinishLoadModule()\n" +
|
||||||
" }.onFailure { YukiXposedModuleCaller.internalLoggerE(\"YukiHookAPI try to load hook entry class failed\", it) }\n" +
|
" }.onFailure { ${ExternalCallerName.YukiXposedModuleCaller.second}.internalLoggerE(\"YukiHookAPI try to load hook entry class failed\", it) }\n" +
|
||||||
" YukiXposedModuleCaller.callOnPackageLoaded(\n" +
|
" ${ExternalCallerName.YukiXposedModuleCaller.second}.callOnPackageLoaded(\n" +
|
||||||
" type = when {\n" +
|
" type = when {\n" +
|
||||||
" isZygoteLoaded -> HookEntryType.ZYGOTE\n" +
|
" isZygoteLoaded -> HookEntryType.ZYGOTE\n" +
|
||||||
" lpparam != null -> HookEntryType.PACKAGE\n" +
|
" lpparam != null -> HookEntryType.PACKAGE\n" +
|
||||||
@@ -332,17 +363,17 @@ fun GenerateData.sources() = mapOf(
|
|||||||
" processName = lpparam?.processName,\n" +
|
" processName = lpparam?.processName,\n" +
|
||||||
" appClassLoader = lpparam?.classLoader ?: runCatching { XposedBridge.BOOTCLASSLOADER }.getOrNull(),\n" +
|
" appClassLoader = lpparam?.classLoader ?: runCatching { XposedBridge.BOOTCLASSLOADER }.getOrNull(),\n" +
|
||||||
" appInfo = lpparam?.appInfo,\n" +
|
" appInfo = lpparam?.appInfo,\n" +
|
||||||
" appResources = YukiXposedResourcesCaller.createYukiResourcesFromXResources(resparam?.res)\n" +
|
" appResources = ${ExternalCallerName.YukiXposedResourcesCaller.second}.createYukiResourcesFromXResources(resparam?.res)\n" +
|
||||||
" )\n" +
|
" )\n" +
|
||||||
" }\n" +
|
" }\n" +
|
||||||
"\n" +
|
"\n" +
|
||||||
" fun callInitZygote(sparam: IXposedHookZygoteInit.StartupParam?) {\n" +
|
" fun callInitZygote(sparam: IXposedHookZygoteInit.StartupParam?) {\n" +
|
||||||
" if (sparam == null) return\n" +
|
" if (sparam == null) return\n" +
|
||||||
" runCatching {\n" +
|
" runCatching {\n" +
|
||||||
" YukiXposedModuleCaller.callOnStartLoadModule(modulePackageName, sparam.modulePath)\n" +
|
" ${ExternalCallerName.YukiXposedModuleCaller.second}.callOnStartLoadModule(modulePackageName, sparam.modulePath)\n" +
|
||||||
" callOnXposedModuleLoaded(isZygoteLoaded = true)\n" +
|
" callOnXposedModuleLoaded(isZygoteLoaded = true)\n" +
|
||||||
" isZygoteCalled = true\n" +
|
" isZygoteCalled = true\n" +
|
||||||
" }.onFailure { YukiXposedModuleCaller.internalLoggerE(\"An exception occurred when YukiHookAPI loading Xposed Module\", it) }\n" +
|
" }.onFailure { ${ExternalCallerName.YukiXposedModuleCaller.second}.internalLoggerE(\"An exception occurred when YukiHookAPI loading Xposed Module\", it) }\n" +
|
||||||
" }\n" +
|
" }\n" +
|
||||||
"\n" +
|
"\n" +
|
||||||
" fun callHandleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam?) {\n" +
|
" fun callHandleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam?) {\n" +
|
||||||
|
Reference in New Issue
Block a user