mirror of
https://github.com/HighCapable/YukiHookAPI.git
synced 2025-09-04 09:45:19 +08:00
Added Module Generated Version
This commit is contained in:
@@ -217,14 +217,25 @@ class YukiHookXposedProcessor : SymbolProcessorProvider {
|
||||
packageName.split(".hook")[0]
|
||||
else error("Cannot identify your Module App's package name, please manually configure the package name")
|
||||
}
|
||||
val injectPackageName = "com.highcapable.yukihookapi.hook.xposed.application.inject"
|
||||
val mdAppInjectPackageName = "com.highcapable.yukihookapi.hook.xposed.application.inject"
|
||||
val ykBridgeInjectPackageName = "com.highcapable.yukihookapi.hook.xposed.bridge.inject"
|
||||
/** 插入 ModuleApplication_Injector 代码 */
|
||||
codeGenerator.createNewFile(
|
||||
dependencies = Dependencies.ALL_FILES,
|
||||
packageName = injectPackageName,
|
||||
packageName = mdAppInjectPackageName,
|
||||
fileName = "ModuleApplication_Injector"
|
||||
).apply {
|
||||
write(CodeSourceFileTemplate.getModuleApplicationInjectorFileByteArray(injectPackageName, packageName, entryClassName))
|
||||
write(CodeSourceFileTemplate.getModuleApplicationInjectorFileByteArray(mdAppInjectPackageName, packageName, entryClassName))
|
||||
flush()
|
||||
close()
|
||||
}
|
||||
/** 插入 YukiHookBridge_Injector 代码 */
|
||||
codeGenerator.createNewFile(
|
||||
dependencies = Dependencies.ALL_FILES,
|
||||
packageName = ykBridgeInjectPackageName,
|
||||
fileName = "YukiHookBridge_Injector"
|
||||
).apply {
|
||||
write(CodeSourceFileTemplate.getYukiHookBridgeInjectorFileByteArray(ykBridgeInjectPackageName, entryClassName))
|
||||
flush()
|
||||
close()
|
||||
}
|
||||
|
@@ -80,6 +80,24 @@ object CodeSourceFileTemplate {
|
||||
" }\n" +
|
||||
"}").toByteArray()
|
||||
|
||||
/**
|
||||
* 获得 YukiHookBridge_Injector 注入文件
|
||||
* @param packageName 包名
|
||||
* @param entryClassName 入口类名
|
||||
* @return [ByteArray]
|
||||
*/
|
||||
fun getYukiHookBridgeInjectorFileByteArray(packageName: String, entryClassName: String) =
|
||||
("@file:Suppress(\"ClassName\")\n" +
|
||||
"\n" +
|
||||
"package $packageName\n" +
|
||||
"\n" +
|
||||
getCommentContent(entryClassName, currrentClassTag = "YukiHookBridge") +
|
||||
"object YukiHookBridge_Injector {\n" +
|
||||
"\n" +
|
||||
" @JvmStatic\n" +
|
||||
" fun getModuleGeneratedVersion() = \"${System.currentTimeMillis()}\"\n" +
|
||||
"}").toByteArray()
|
||||
|
||||
/**
|
||||
* 获得 xposed_init 注入文件
|
||||
* @param packageName 包名
|
||||
|
BIN
yukihookapi/libs/bridge-injector.jar
Normal file
BIN
yukihookapi/libs/bridge-injector.jar
Normal file
Binary file not shown.
@@ -25,7 +25,7 @@
|
||||
*
|
||||
* This file is Created by fankes on 2022/4/3.
|
||||
*/
|
||||
@file:Suppress("unused")
|
||||
@file:Suppress("unused", "StaticFieldLeak")
|
||||
|
||||
package com.highcapable.yukihookapi.hook.xposed.bridge
|
||||
|
||||
@@ -41,7 +41,7 @@ import com.highcapable.yukihookapi.hook.param.wrapper.PackageParamWrapper
|
||||
import com.highcapable.yukihookapi.hook.xposed.YukiHookModuleStatus
|
||||
import com.highcapable.yukihookapi.hook.xposed.bridge.dummy.YukiModuleResources
|
||||
import com.highcapable.yukihookapi.hook.xposed.bridge.dummy.YukiResources
|
||||
import com.highcapable.yukihookapi.hook.xposed.channel.YukiHookDataChannel
|
||||
import com.highcapable.yukihookapi.hook.xposed.bridge.inject.YukiHookBridge_Injector
|
||||
import de.robv.android.xposed.*
|
||||
import de.robv.android.xposed.callbacks.XC_InitPackageResources
|
||||
import de.robv.android.xposed.callbacks.XC_LoadPackage
|
||||
@@ -72,9 +72,6 @@ object YukiHookBridge {
|
||||
/** 当前 [PackageParamWrapper] 实例数组 */
|
||||
private var packageParamWrappers = HashMap<String, PackageParamWrapper>()
|
||||
|
||||
/** 已在 [YukiHookDataChannel] 注册的包名数组 */
|
||||
private val dataChannelRegisters = HashSet<String>()
|
||||
|
||||
/** 当前 [PackageParam] 方法体回调 */
|
||||
internal var packageParamCallback: (PackageParam.() -> Unit)? = null
|
||||
|
||||
@@ -90,6 +87,12 @@ object YukiHookBridge {
|
||||
*/
|
||||
internal val dynamicModuleAppResources get() = runCatching { YukiModuleResources.createInstance(moduleAppFilePath) }.getOrNull()
|
||||
|
||||
/**
|
||||
* 自动生成的 Xposed 模块构建版本号
|
||||
* @return [String]
|
||||
*/
|
||||
internal val moduleGeneratedVersion get() = YukiHookBridge_Injector.getModuleGeneratedVersion()
|
||||
|
||||
/**
|
||||
* 模块是否装载了 Xposed 回调方法
|
||||
*
|
||||
|
Reference in New Issue
Block a user