Added Module Generated Version

This commit is contained in:
2022-05-19 03:41:54 +08:00
parent 9c008ce998
commit 017ba82c3e
4 changed files with 40 additions and 8 deletions

View File

@@ -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()
}

View File

@@ -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 包名

Binary file not shown.

View File

@@ -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 回调方法
*