Modify merge YukiHookAPI new usage and remove DataConst.ENABLE_MODULE_VERSION

This commit is contained in:
2022-09-28 20:10:51 +08:00
parent 5542cdef64
commit f7f4427c61
4 changed files with 21 additions and 27 deletions

View File

@@ -33,5 +33,4 @@ object DataConst {
val ENABLE_QQTIM_CORESERVICE_BAN = PrefsData("_qqtim_core_service_ban", false) val ENABLE_QQTIM_CORESERVICE_BAN = PrefsData("_qqtim_core_service_ban", false)
val ENABLE_QQTIM_CORESERVICE_CHILD_BAN = PrefsData("_qqtim_core_service_child_ban", false) val ENABLE_QQTIM_CORESERVICE_CHILD_BAN = PrefsData("_qqtim_core_service_child_ban", false)
val DISABLE_WECHAT_HOOK = PrefsData("_disable_wechat_hook", false) val DISABLE_WECHAT_HOOK = PrefsData("_disable_wechat_hook", false)
val ENABLE_MODULE_VERSION = PrefsData("_module_version", "")
} }

View File

@@ -34,6 +34,7 @@ import android.view.ViewGroup.LayoutParams.MATCH_PARENT
import android.view.ViewGroup.LayoutParams.WRAP_CONTENT import android.view.ViewGroup.LayoutParams.WRAP_CONTENT
import android.view.ViewGroup.MarginLayoutParams import android.view.ViewGroup.MarginLayoutParams
import android.widget.Toast import android.widget.Toast
import androidx.core.app.ServiceCompat
import com.fankes.tsbattery.BuildConfig import com.fankes.tsbattery.BuildConfig
import com.fankes.tsbattery.data.DataConst import com.fankes.tsbattery.data.DataConst
import com.fankes.tsbattery.hook.HookConst.QQ_PACKAGE_NAME import com.fankes.tsbattery.hook.HookConst.QQ_PACKAGE_NAME
@@ -293,7 +294,7 @@ class HookEntry : IYukiHookXposedInit {
(if (isQQ && isHookClientSupport.not()) (if (isQQ && isHookClientSupport.not())
"❎ 当前版本 $versionName($versionCode) 不在兼容列表,请自行测试是否生效~\n\n" "❎ 当前版本 $versionName($versionCode) 不在兼容列表,请自行测试是否生效~\n\n"
else "✅ 模块工作看起来一切正常,请自行测试是否能达到省电效果。\n\n") + else "✅ 模块工作看起来一切正常,请自行测试是否能达到省电效果。\n\n") +
"已生效模块版本:${prefs.get(DataConst.ENABLE_MODULE_VERSION)}\n" + "已生效模块版本:${BuildConfig.VERSION_NAME}\n" +
"当前模式:${if (prefs.get(DataConst.ENABLE_QQTIM_WHITE_MODE)) "保守模式" else "完全模式"}" + "当前模式:${if (prefs.get(DataConst.ENABLE_QQTIM_WHITE_MODE)) "保守模式" else "完全模式"}" +
"\n\n包名:${packageName}\n版本:$versionName($versionCode)" + "\n\n包名:${packageName}\n版本:$versionName($versionCode)" +
"\n\n模块只对挂后台锁屏情况下有省电效果," + "\n\n模块只对挂后台锁屏情况下有省电效果," +
@@ -301,7 +302,7 @@ class HookEntry : IYukiHookXposedInit {
"如果你不想看到此提示。请在模块设置中关闭“提示模块运行信息”,此设置默认关闭。\n\n" + "如果你不想看到此提示。请在模块设置中关闭“提示模块运行信息”,此设置默认关闭。\n\n" +
"持续常驻使用 QQ、TIM 依然会耗电,任何软件都是如此," + "持续常驻使用 QQ、TIM 依然会耗电,任何软件都是如此," +
"模块是无法帮你做到前台不耗电的。\n\n" + "模块是无法帮你做到前台不耗电的。\n\n" +
"开发者 酷安 @星夜不荟\n未经允许禁止转载、修改或复制我的劳动成果。" "开发者 酷安 @星夜不荟\n未经允许禁止修改或复制我的劳动成果。"
confirmButton(text = "我知道了") confirmButton(text = "我知道了")
noCancelable() noCancelable()
} }
@@ -326,15 +327,15 @@ class HookEntry : IYukiHookXposedInit {
title = "TSBattery 已激活" title = "TSBattery 已激活"
msg = "[提示模块运行信息功能已打开]\n\n" + msg = "[提示模块运行信息功能已打开]\n\n" +
"模块工作看起来一切正常,请自行测试是否能达到省电效果。\n\n" + "模块工作看起来一切正常,请自行测试是否能达到省电效果。\n\n" +
"已生效模块版本:${prefs.get(DataConst.ENABLE_MODULE_VERSION)}\n" + "已生效模块版本:${BuildConfig.VERSION_NAME}\n" +
"当前模式:基础省电" + "当前模式:基础省电" +
"\n\n包名:${packageName}\n版本:$versionName($versionCode)" + "\n\n包名:${packageName}\n版本:$versionName($versionCode)" +
"\n\n当前只支持微信的基础省电,即系统电源锁,后续会继续适配微信相关的省电功能(在新建文件夹了)。\n\n" + "\n\n当前只支持微信的基础省电,即系统电源锁,后续会继续适配微信相关的省电功能(在新建文件夹了)。\n\n" +
"如果你不想看到此提示。请在模块设置中关闭“提示模块运行信息”,此设置默认关闭。\n\n" + "如果你不想看到此提示。请在模块设置中关闭“提示模块运行信息”,此设置默认关闭。\n\n" +
"持续常驻使用微信依然会耗电,任何软件都是如此," + "持续常驻使用微信依然会耗电,任何软件都是如此," +
"模块是无法帮你做到前台不耗电的。\n\n" + "模块是无法帮你做到前台不耗电的。\n\n" +
"开发者 酷安 @星夜不荟\n未经允许禁止转载、修改或复制我的劳动成果。" "开发者 酷安 @星夜不荟\n未经允许禁止修改或复制我的劳动成果。"
confirmButton(text = "我知道了") confirmButton(text = "我知道了") { finish() }
noCancelable() noCancelable()
} }
} }
@@ -374,7 +375,7 @@ class HookEntry : IYukiHookXposedInit {
afterHook { afterHook {
if (prefs.get(DataConst.ENABLE_QQTIM_CORESERVICE_BAN)) if (prefs.get(DataConst.ENABLE_QQTIM_CORESERVICE_BAN))
instance<Service>().apply { instance<Service>().apply {
stopForeground(true) ServiceCompat.stopForeground(this, ServiceCompat.STOP_FOREGROUND_REMOVE)
stopSelf() stopSelf()
loggerD(msg = "Shutdown CoreService OK!") loggerD(msg = "Shutdown CoreService OK!")
} }
@@ -387,7 +388,7 @@ class HookEntry : IYukiHookXposedInit {
afterHook { afterHook {
if (prefs.get(DataConst.ENABLE_QQTIM_CORESERVICE_CHILD_BAN)) if (prefs.get(DataConst.ENABLE_QQTIM_CORESERVICE_CHILD_BAN))
instance<Service>().apply { instance<Service>().apply {
stopForeground(true) ServiceCompat.stopForeground(this, ServiceCompat.STOP_FOREGROUND_REMOVE)
stopSelf() stopSelf()
loggerD(msg = "Shutdown CoreService\$KernelService OK!") loggerD(msg = "Shutdown CoreService\$KernelService OK!")
} }
@@ -419,11 +420,11 @@ class HookEntry : IYukiHookXposedInit {
/** 当前的顶级 Item 实例 */ /** 当前的顶级 Item 实例 */
val formItemRefRoot = field { val formItemRefRoot = field {
type(FormSimpleItemClass).index(num = 1) type(FormSimpleItemClass).index(num = 1)
}.ignoredError().get(instance).cast() ?: field { }.ignored().get(instance).cast() ?: field {
type(FormCommonSingleLineItemClass).index(num = 1) type(FormCommonSingleLineItemClass).index(num = 1)
}.ignoredError().get(instance).cast<View?>() }.ignored().get(instance).cast<View?>()
/** 创建一个新的 Item */ /** 创建一个新的 Item */
FormSimpleItemClass.clazz.buildOf<View>(instance) { param(ContextClass) }?.current { FormSimpleItemClass.toClass().buildOf<View>(instance) { param(ContextClass) }?.current {
method { method {
name = "setLeftText" name = "setLeftText"
param(CharSequenceType) param(CharSequenceType)
@@ -431,7 +432,7 @@ class HookEntry : IYukiHookXposedInit {
method { method {
name = "setRightText" name = "setRightText"
param(CharSequenceType) param(CharSequenceType)
}.call("${if (isQQ && isHookClientSupport.not()) "❎" else "✅"} ${prefs.get(DataConst.ENABLE_MODULE_VERSION)}") }.call("${if (isQQ && isHookClientSupport.not()) "❎" else "✅"} ${BuildConfig.VERSION_NAME}")
method { method {
name = "setBgType" name = "setBgType"
param(IntType) param(IntType)
@@ -443,14 +444,14 @@ class HookEntry : IYukiHookXposedInit {
title = "TSBattery 守护中" title = "TSBattery 守护中"
msg = (if (isQQ && isHookClientSupport.not()) msg = (if (isQQ && isHookClientSupport.not())
"❎ 当前版本 $versionName($versionCode) 不在兼容列表,请自行测试是否生效~\n\n" else "") + "❎ 当前版本 $versionName($versionCode) 不在兼容列表,请自行测试是否生效~\n\n" else "") +
"已生效模块版本:${prefs.get(DataConst.ENABLE_MODULE_VERSION)}\n" + "已生效模块版本:${BuildConfig.VERSION_NAME}\n" +
"当前模式:${if (prefs.get(DataConst.ENABLE_QQTIM_WHITE_MODE)) "保守模式" else "完全模式"}" + "当前模式:${if (prefs.get(DataConst.ENABLE_QQTIM_WHITE_MODE)) "保守模式" else "完全模式"}" +
"\n\n包名:${packageName}\n版本:$versionName($versionCode)" + "\n\n包名:${packageName}\n版本:$versionName($versionCode)" +
"\n\n模块只对挂后台锁屏情况下有省电效果," + "\n\n模块只对挂后台锁屏情况下有省电效果," +
"请不要将过多的群提醒,消息通知打开,这样子在使用过程时照样会极其耗电。\n\n" + "请不要将过多的群提醒,消息通知打开,这样子在使用过程时照样会极其耗电。\n\n" +
"持续常驻使用 QQ、TIM 依然会耗电,任何软件都是如此," + "持续常驻使用 QQ、TIM 依然会耗电,任何软件都是如此," +
"模块是无法帮你做到前台不耗电的。\n\n" + "模块是无法帮你做到前台不耗电的。\n\n" +
"开发者 酷安 @星夜不荟\n未经允许禁止转载、修改或复制我的劳动成果。" "开发者 酷安 @星夜不荟\n未经允许禁止修改或复制我的劳动成果。"
confirmButton(text = "打开模块设置") { confirmButton(text = "打开模块设置") {
runCatching { runCatching {
startActivity(Intent().apply { startActivity(Intent().apply {
@@ -483,7 +484,7 @@ class HookEntry : IYukiHookXposedInit {
} }
override fun onInit() = configs { override fun onInit() = configs {
debugTag = "TSBattery" debugLog { tag = "TSBattery" }
isDebug = false isDebug = false
isEnableModulePrefsCache = false isEnableModulePrefsCache = false
isEnableDataChannel = false isEnableDataChannel = false

View File

@@ -87,8 +87,6 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
binding.mainTextStatus.text = "模块已激活" binding.mainTextStatus.text = "模块已激活"
binding.mainTextApiWay.isVisible = true binding.mainTextApiWay.isVisible = true
refreshActivateExecutor() refreshActivateExecutor()
/** 写入激活的模块版本 */
modulePrefs.put(DataConst.ENABLE_MODULE_VERSION, moduleVersion)
/** 推广、恰饭 */ /** 推广、恰饭 */
YukiPromoteTool.promote(context = this) YukiPromoteTool.promote(context = this)
} else } else

View File

@@ -31,9 +31,9 @@ import androidx.core.view.WindowCompat
import androidx.viewbinding.ViewBinding import androidx.viewbinding.ViewBinding
import com.fankes.tsbattery.R import com.fankes.tsbattery.R
import com.fankes.tsbattery.utils.factory.isNotSystemInDarkMode import com.fankes.tsbattery.utils.factory.isNotSystemInDarkMode
import com.highcapable.yukihookapi.hook.factory.current
import com.highcapable.yukihookapi.hook.factory.method import com.highcapable.yukihookapi.hook.factory.method
import com.highcapable.yukihookapi.hook.type.android.LayoutInflaterClass import com.highcapable.yukihookapi.hook.type.android.LayoutInflaterClass
import java.lang.reflect.ParameterizedType
abstract class BaseActivity<VB : ViewBinding> : AppCompatActivity() { abstract class BaseActivity<VB : ViewBinding> : AppCompatActivity() {
@@ -42,15 +42,11 @@ abstract class BaseActivity<VB : ViewBinding> : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
javaClass.genericSuperclass.also { type -> binding = current().generic()?.argument()?.method {
if (type is ParameterizedType) { name = "inflate"
binding = (type.actualTypeArguments[0] as Class<VB>).method { param(LayoutInflaterClass)
name = "inflate" }?.get()?.invoke<VB>(layoutInflater) ?: error("binding failed")
param(LayoutInflaterClass) setContentView(binding.root)
}.get().invoke<VB>(layoutInflater) ?: error("binding failed")
setContentView(binding.root)
} else error("binding but got wrong type")
}
/** 隐藏系统的标题栏 */ /** 隐藏系统的标题栏 */
supportActionBar?.hide() supportActionBar?.hide()
/** 初始化沉浸状态栏 */ /** 初始化沉浸状态栏 */