mirror of
https://github.com/HighCapable/YukiHookAPI.git
synced 2025-09-04 09:45:19 +08:00
Modify change Activity Proxy function to autogenerate
This commit is contained in:
@@ -275,6 +275,30 @@ class YukiHookXposedProcessor : SymbolProcessorProvider {
|
||||
packageName = PackageName.YukiXposedModuleStatus_Impl,
|
||||
content = data.sources()[ClassName.YukiXposedModuleStatus_Impl]
|
||||
)
|
||||
/** 插入 HandlerDelegateImpl_Impl 代码 */
|
||||
createCodeFile(
|
||||
fileName = ClassName.HandlerDelegateImpl_Impl,
|
||||
packageName = PackageName.HandlerDelegateImpl_Impl,
|
||||
content = data.sources()[ClassName.HandlerDelegateImpl_Impl]
|
||||
)
|
||||
/** 插入 HandlerDelegateClass 代码 */
|
||||
createCodeFile(
|
||||
fileName = ClassName.HandlerDelegateClass,
|
||||
packageName = PackageName.HandlerDelegateClass,
|
||||
content = data.sources()[ClassName.HandlerDelegateClass]
|
||||
)
|
||||
/** 插入 IActivityManagerProxyImpl_Impl 代码 */
|
||||
createCodeFile(
|
||||
fileName = ClassName.IActivityManagerProxyImpl_Impl,
|
||||
packageName = PackageName.IActivityManagerProxyImpl_Impl,
|
||||
content = data.sources()[ClassName.IActivityManagerProxyImpl_Impl]
|
||||
)
|
||||
/** 插入 IActivityManagerProxyClass 代码 */
|
||||
createCodeFile(
|
||||
fileName = ClassName.IActivityManagerProxyClass,
|
||||
packageName = PackageName.IActivityManagerProxyClass,
|
||||
content = data.sources()[ClassName.IActivityManagerProxyClass]
|
||||
)
|
||||
/** 插入 xposed_init 代码 */
|
||||
createCodeFile(
|
||||
fileName = data.xInitClassName,
|
||||
|
@@ -38,6 +38,10 @@ object PackageName {
|
||||
const val YukiHookAPI_Impl = "com.highcapable.yukihookapi"
|
||||
const val ModuleApplication_Impl = "com.highcapable.yukihookapi.hook.xposed.application"
|
||||
const val YukiXposedModuleStatus_Impl = "com.highcapable.yukihookapi.hook.xposed.bridge.status"
|
||||
const val HandlerDelegateImpl_Impl = "com.highcapable.yukihookapi.hook.xposed.parasitic.activity.delegate.impl"
|
||||
const val HandlerDelegateClass = "com.highcapable.yukihookapi.hook.xposed.parasitic.activity.delegate"
|
||||
const val IActivityManagerProxyImpl_Impl = "com.highcapable.yukihookapi.hook.xposed.parasitic.activity.delegate.impl"
|
||||
const val IActivityManagerProxyClass = "com.highcapable.yukihookapi.hook.xposed.parasitic.activity.delegate"
|
||||
const val BootstrapReflectionClass = "com.highcapable.yukihookapi.thirdparty.me.weishu.reflection"
|
||||
}
|
||||
|
||||
@@ -48,6 +52,10 @@ object ClassName {
|
||||
const val YukiHookAPI_Impl = "YukiHookAPI_Impl"
|
||||
const val ModuleApplication_Impl = "ModuleApplication_Impl"
|
||||
const val YukiXposedModuleStatus_Impl = "YukiXposedModuleStatus_Impl"
|
||||
const val HandlerDelegateImpl_Impl = "HandlerDelegateImpl_Impl"
|
||||
const val HandlerDelegateClass = "HandlerDelegate"
|
||||
const val IActivityManagerProxyImpl_Impl = "IActivityManagerProxyImpl_Impl"
|
||||
const val IActivityManagerProxyClass = "IActivityManagerProxy"
|
||||
const val XposedInit = "xposed_init"
|
||||
const val XposedInit_Impl = "xposed_init_Impl"
|
||||
const val BootstrapClass = "BootstrapClass"
|
||||
@@ -66,6 +74,13 @@ object YukiXposedModuleStatusJvmName {
|
||||
const val GET_EXECUTOR_VERSION_CODE_METHOD_NAME = "___-"
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建尾部包名名称
|
||||
* @param name 前置名称
|
||||
* @return [String]
|
||||
*/
|
||||
private fun GenerateData.tailPackageName(name: String) = "${name}_${modulePackageName.replace(".", "_")}"
|
||||
|
||||
/**
|
||||
* 创建文件注释
|
||||
* @param entryClassName 入口类名 - 空则不生成
|
||||
@@ -166,6 +181,74 @@ fun GenerateData.sources() = mapOf(
|
||||
" if (System.currentTimeMillis() == 0L) Log.d(\"${(1000..9999).random()}\", \"${(100000..999999).random()}\")\n" +
|
||||
" }\n" +
|
||||
"}"),
|
||||
ClassName.HandlerDelegateImpl_Impl to ("@file:Suppress(\"ClassName\")\n" +
|
||||
"\n" +
|
||||
"package ${PackageName.HandlerDelegateImpl_Impl}\n" +
|
||||
"\n" +
|
||||
"import android.os.Handler\n" +
|
||||
"import com.highcapable.yukihookapi.annotation.YukiGenerateApi\n" +
|
||||
"import ${PackageName.HandlerDelegateClass}.${tailPackageName(ClassName.HandlerDelegateClass)}\n" +
|
||||
"\n" +
|
||||
createCommentContent(currrentClassTag = ClassName.HandlerDelegateImpl_Impl) +
|
||||
"@YukiGenerateApi\n" +
|
||||
"object ${ClassName.HandlerDelegateImpl_Impl} {\n" +
|
||||
"\n" +
|
||||
" val wrapperClassName get() = \"${PackageName.HandlerDelegateClass}.${tailPackageName(ClassName.HandlerDelegateClass)}\"\n" +
|
||||
"\n" +
|
||||
" fun createWrapper(baseInstance: Handler.Callback? = null): Handler.Callback = ${tailPackageName(ClassName.HandlerDelegateClass)}(baseInstance)\n" +
|
||||
"}"),
|
||||
ClassName.HandlerDelegateClass to ("@file:Suppress(\"ClassName\")\n" +
|
||||
"\n" +
|
||||
"package ${PackageName.HandlerDelegateClass}\n" +
|
||||
"\n" +
|
||||
"import android.os.Handler\n" +
|
||||
"import android.os.Message\n" +
|
||||
"import androidx.annotation.Keep\n" +
|
||||
"import com.highcapable.yukihookapi.annotation.YukiGenerateApi\n" +
|
||||
"import com.highcapable.yukihookapi.hook.xposed.parasitic.activity.delegate.caller.HandlerDelegateCaller\n" +
|
||||
"\n" +
|
||||
createCommentContent(currrentClassTag = ClassName.HandlerDelegateClass) +
|
||||
"@Keep\n" +
|
||||
"@YukiGenerateApi\n" +
|
||||
"class ${tailPackageName(ClassName.HandlerDelegateClass)}(private val baseInstance: Handler.Callback?) : Handler.Callback {\n" +
|
||||
"\n" +
|
||||
" override fun handleMessage(msg: Message) = HandlerDelegateCaller.callHandleMessage(baseInstance, msg)\n" +
|
||||
"}"),
|
||||
ClassName.IActivityManagerProxyImpl_Impl to ("@file:Suppress(\"ClassName\")\n" +
|
||||
"\n" +
|
||||
"package ${PackageName.IActivityManagerProxyImpl_Impl}\n" +
|
||||
"\n" +
|
||||
"import android.os.Handler\n" +
|
||||
"import com.highcapable.yukihookapi.annotation.YukiGenerateApi\n" +
|
||||
"import com.highcapable.yukihookapi.hook.xposed.parasitic.activity.delegate.caller.IActivityManagerProxyCaller\n" +
|
||||
"import ${PackageName.IActivityManagerProxyClass}.${tailPackageName(ClassName.IActivityManagerProxyClass)}\n" +
|
||||
"import java.lang.reflect.Proxy\n" +
|
||||
"\n" +
|
||||
createCommentContent(currrentClassTag = ClassName.IActivityManagerProxyImpl_Impl) +
|
||||
"@YukiGenerateApi\n" +
|
||||
"object ${ClassName.IActivityManagerProxyImpl_Impl} {\n" +
|
||||
"\n" +
|
||||
" fun createWrapper(clazz: Class<*>?, instance: Any) = \n" +
|
||||
" Proxy.newProxyInstance(IActivityManagerProxyCaller.currentClassLoader, arrayOf(clazz), ${tailPackageName(ClassName.IActivityManagerProxyClass)}(instance))\n" +
|
||||
"}"),
|
||||
ClassName.IActivityManagerProxyClass to ("@file:Suppress(\"ClassName\")\n" +
|
||||
"\n" +
|
||||
"package ${PackageName.IActivityManagerProxyClass}\n" +
|
||||
"\n" +
|
||||
"import androidx.annotation.Keep\n" +
|
||||
"import com.highcapable.yukihookapi.annotation.YukiGenerateApi\n" +
|
||||
"import com.highcapable.yukihookapi.hook.xposed.parasitic.activity.delegate.caller.IActivityManagerProxyCaller\n" +
|
||||
"import java.lang.reflect.InvocationHandler\n" +
|
||||
"import java.lang.reflect.Method\n" +
|
||||
"import java.lang.reflect.Proxy\n" +
|
||||
"\n" +
|
||||
createCommentContent(currrentClassTag = ClassName.IActivityManagerProxyClass) +
|
||||
"@Keep\n" +
|
||||
"@YukiGenerateApi\n" +
|
||||
"class ${tailPackageName(ClassName.IActivityManagerProxyClass)}(private val baseInstance: Any) : InvocationHandler {\n" +
|
||||
"\n" +
|
||||
" override fun invoke(proxy: Any?, method: Method?, args: Array<Any>?) = IActivityManagerProxyCaller.callInvoke(baseInstance, method, args)\n" +
|
||||
"}"),
|
||||
ClassName.XposedInit to ("@file:Suppress(\"ClassName\")\n" +
|
||||
"\n" +
|
||||
"package $entryPackageName\n" +
|
||||
|
Reference in New Issue
Block a user