mirror of
https://github.com/HighCapable/YukiHookAPI.git
synced 2025-09-04 01:35:17 +08:00
Modify support hook entry class "OBJECT" kind and add hook entry class kind checking in GenerateData, CodeSourceFileFactory, YukiHookXposedProcessor
This commit is contained in:
@@ -31,6 +31,7 @@ package com.highcapable.yukihookapi_ksp_xposed
|
||||
|
||||
import com.google.auto.service.AutoService
|
||||
import com.google.devtools.ksp.processing.*
|
||||
import com.google.devtools.ksp.symbol.ClassKind
|
||||
import com.google.devtools.ksp.symbol.FileLocation
|
||||
import com.google.devtools.ksp.symbol.KSAnnotated
|
||||
import com.google.devtools.ksp.symbol.KSClassDeclaration
|
||||
@@ -140,6 +141,11 @@ class YukiHookXposedProcessor : SymbolProcessorProvider {
|
||||
data.entryPackageName = it.packageName.asString()
|
||||
data.entryClassName = it.simpleName.asString()
|
||||
data.xInitClassName = xInitPatchName
|
||||
data.isEntryClassKindOfObject = when (it.classKind) {
|
||||
ClassKind.CLASS -> false
|
||||
ClassKind.OBJECT -> true
|
||||
else -> problem(msg = "Invalid HookEntryClass \"${it.simpleName.asString()}\" kind \"${it.classKind}\"")
|
||||
}
|
||||
generateAssetsFile(codePath = (it.location as? FileLocation?)?.filePath ?: "", sourcePath = sourcePath, data)
|
||||
}
|
||||
it.superTypes.any { type -> type.element.toString() == "YukiHookXposedInitProxy" } ->
|
||||
|
@@ -34,6 +34,7 @@ package com.highcapable.yukihookapi_ksp_xposed.bean
|
||||
* @param customMPackageName 自定义模块包名
|
||||
* @param entryClassName 入口类名
|
||||
* @param xInitClassName xposed_init 入口类名
|
||||
* @param isEntryClassKindOfObject 入口类种类 (类型) 是否为 object (单例)
|
||||
* @param isUsingResourcesHook 是否启用 Resources Hook
|
||||
*/
|
||||
data class GenerateData(
|
||||
@@ -42,5 +43,6 @@ data class GenerateData(
|
||||
var customMPackageName: String = "",
|
||||
var entryClassName: String = "",
|
||||
var xInitClassName: String = "",
|
||||
var isEntryClassKindOfObject: Boolean = false,
|
||||
var isUsingResourcesHook: Boolean = true
|
||||
)
|
@@ -82,7 +82,7 @@ fun GenerateData.sources() = mapOf(
|
||||
"object ${ClassName.ModuleApplication_Impl} {\n" +
|
||||
"\n" +
|
||||
" fun callHookEntryInit() = try {\n" +
|
||||
" $entryClassName().onInit()\n" +
|
||||
" " + (if (isEntryClassKindOfObject) "$entryClassName.onInit()\n" else "$entryClassName().onInit()\n") +
|
||||
" } catch (_: Throwable) {\n" +
|
||||
" }\n" +
|
||||
"}"),
|
||||
@@ -150,7 +150,7 @@ fun GenerateData.sources() = mapOf(
|
||||
"\n" +
|
||||
" private var isZygoteBinded = false\n" +
|
||||
"\n" +
|
||||
" private val hookEntry = $entryClassName()\n" +
|
||||
" private val hookEntry = " + (if (isEntryClassKindOfObject) "$entryClassName\n" else "$entryClassName()\n") +
|
||||
"\n" +
|
||||
" private fun callXposedLoaded(\n" +
|
||||
" isZygoteLoaded: Boolean = false,\n" +
|
||||
|
Reference in New Issue
Block a user