Add API version and code and fix some code

This commit is contained in:
2022-03-06 00:42:43 +08:00
parent ebd38a4173
commit 2e8ad861ef

View File

@@ -57,6 +57,12 @@ object YukiHookAPI {
/** Xposed Hook API 方法体回调 */ /** Xposed Hook API 方法体回调 */
private var packageParamCallback: (PackageParam.() -> Unit)? = null private var packageParamCallback: (PackageParam.() -> Unit)? = null
/** 获取当前 [YukiHookAPI] 的版本 */
const val API_VERSION_NAME = "1.0.4"
/** 获取当前 [YukiHookAPI] 的版本号 */
const val API_VERSION_CODE = 5
/** /**
* 预设的 Xposed 模块包名 * 预设的 Xposed 模块包名
* *
@@ -138,7 +144,7 @@ object YukiHookAPI {
appClassLoader = lpparam.classLoader, appClassLoader = lpparam.classLoader,
appInfo = lpparam.appInfo appInfo = lpparam.appInfo
) )
) ).apply { printHelloMsg() }
) )
/** /**
@@ -171,7 +177,7 @@ object YukiHookAPI {
packageParamCallback = { packageParamCallback = {
if (hooker.isNotEmpty()) if (hooker.isNotEmpty())
hooker.forEach { it.assignInstance(packageParam = this) } hooker.forEach { it.assignInstance(packageParam = this) }
else error("Hooker is empty") else yLoggerE(msg = "Failed to passing \"encase\" method because your hooker param is empty")
} }
else printNoXposedBridge() else printNoXposedBridge()
} }
@@ -192,7 +198,7 @@ object YukiHookAPI {
fun encase(baseContext: Context?, initiate: PackageParam.() -> Unit) { fun encase(baseContext: Context?, initiate: PackageParam.() -> Unit) {
isLoadedFromBaseContext = true isLoadedFromBaseContext = true
if (hasXposedBridge) if (hasXposedBridge)
(if (baseContext != null) initiate.invoke(baseContext.packagePararm)) (if (baseContext != null) initiate.invoke(baseContext.packagePararm.apply { printHelloMsg() }))
else printNoXposedBridge() else printNoXposedBridge()
} }
@@ -214,15 +220,22 @@ object YukiHookAPI {
isLoadedFromBaseContext = true isLoadedFromBaseContext = true
if (hasXposedBridge) if (hasXposedBridge)
(if (baseContext != null) (if (baseContext != null)
if (hooker.isNotEmpty()) if (hooker.isNotEmpty()) {
printHelloMsg()
hooker.forEach { it.assignInstance(packageParam = baseContext.packagePararm) } hooker.forEach { it.assignInstance(packageParam = baseContext.packagePararm) }
else error("Hooker is empty")) } else yLoggerE(msg = "Failed to passing \"encase\" method because your hooker param is empty"))
else printNoXposedBridge() else printNoXposedBridge()
} }
/** 输出找不到 [XposedBridge] 的错误日志 */ /** 输出找不到 [XposedBridge] 的错误日志 */
private fun printNoXposedBridge() = yLoggerE(msg = "Could not found XposedBridge in current space! Aborted") private fun printNoXposedBridge() = yLoggerE(msg = "Could not found XposedBridge in current space! Aborted")
/** 输出欢迎信息调试日志 */
private fun printHelloMsg() {
if (Configs.isDebug)
yLoggerI(msg = "Welcome to YukiHookAPI $API_VERSION_NAME($API_VERSION_CODE)! Using Xposed API $hookingXposedApiVersion")
}
/** /**
* 通过 baseContext 创建 Hook 入口类 * 通过 baseContext 创建 Hook 入口类
* @return [PackageParam] * @return [PackageParam]
@@ -234,9 +247,11 @@ object YukiHookAPI {
* 是否存在 [XposedBridge] * 是否存在 [XposedBridge]
* @return [Boolean] * @return [Boolean]
*/ */
internal val hasXposedBridge internal val hasXposedBridge get() = hookingXposedApiVersion >= 0
get() = runCatching {
if (Configs.isDebug) yLoggerI(msg = "YukiHookAPI is running on Xposed API ${XposedBridge.getXposedVersion()}") /**
true * 输出当前使用的 Xposed 版本
}.getOrNull() ?: false * @return [Int]
*/
internal val hookingXposedApiVersion get() = runCatching { XposedBridge.getXposedVersion() }.getOrNull() ?: -1
} }