import{_ as a,r as t,o as n,c as r,b as e,d as o,e as d,a as c}from"./app-BpUB8-Q8.js";const s={},h=e("h1",{id:"更新日志",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#更新日志","aria-hidden":"true"},"#"),o(" 更新日志")],-1),u=e("blockquote",null,[e("p",null,[o("这里记录了 "),e("code",null,"YukiHookAPI"),o(" 的版本更新历史。")])],-1),_=e("div",{class:"custom-container danger"},[e("p",{class:"custom-container-title"},"特别注意"),e("p",null,"我们只会对最新的 API 版本进行维护,若你正在使用过时的 API 版本则代表你自愿放弃一切维护的可能性。")],-1),k={id:"_1-3-0-2025-06-25",tabindex:"-1"},p=e("a",{class:"header-anchor",href:"#_1-3-0-2025-06-25","aria-hidden":"true"},"#",-1),g={href:"https://highcapable.github.io/YukiHookAPI/zh-cn/config/move-to-api-1-3-x",target:"_blank",rel:"noopener noreferrer"},f=e("code",null,"YukiHookAPI",-1),H={href:"https://github.com/HighCapable/KavaRef",target:"_blank",rel:"noopener noreferrer"},m=c("
  • 弃用了重复 Hook 的限制,现在你可以重复 Hook 同一个方法
  • 弃用了 ModuleAppActivityModuleAppCompatActivity,现在请使用 ModuleActivity 创建自己的代理 Activity
  • YLog 现已允许 msg 传入任意对象,将自动转换为字符串进行打印
  • ",3),P=e("code",null,"FreeReflection",-1),b={href:"https://github.com/LSPosed/AndroidHiddenApiBypass",target:"_blank",rel:"noopener noreferrer"},A={id:"_1-2-1-2024-06-20",tabindex:"-1"},C=e("a",{class:"header-anchor",href:"#_1-2-1-2024-06-20","aria-hidden":"true"},"#",-1),y=e("li",null,"捕获单例 Hooker 中的异常,防止其阻断整个进程",-1),x={href:"https://github.com/zhufengning",target:"_blank",rel:"noopener noreferrer"},Y={href:"https://github.com/HighCapable/YukiHookAPI/pull/70",target:"_blank",rel:"noopener noreferrer"},v={href:"https://github.com/xihan123",target:"_blank",rel:"noopener noreferrer"},I={href:"https://github.com/HighCapable/YukiHookAPI/pull/76",target:"_blank",rel:"noopener noreferrer"},M={id:"_1-2-0-2023-10-07",tabindex:"-1"},R=e("a",{class:"header-anchor",href:"#_1-2-0-2023-10-07","aria-hidden":"true"},"#",-1),L=e("li",null,[o("许可协议由 "),e("code",null,"MIT"),o(" 变更为 "),e("code",null,"Apache-2.0"),o(",在此之后的版本将由此许可协议进行分发,您在使用此版本后应变更相关许可协议")],-1),S={href:"https://highcapable.github.io/YukiHookAPI/zh-cn/config/move-to-api-1-2-x",target:"_blank",rel:"noopener noreferrer"},B={href:"https://github.com/BlueCat300",target:"_blank",rel:"noopener noreferrer"},F={href:"https://github.com/HighCapable/YukiHookAPI/pull/44",target:"_blank",rel:"noopener noreferrer"},X=e("code",null,"findAllInterfaces",-1),D={href:"https://github.com/buffcow",target:"_blank",rel:"noopener noreferrer"},E={href:"https://github.com/HighCapable/YukiHookAPI/pull/38",target:"_blank",rel:"noopener noreferrer"},N={href:"https://github.com/cesaryuan",target:"_blank",rel:"noopener noreferrer"},O={href:"https://github.com/HighCapable/YukiHookAPI/issues/47",target:"_blank",rel:"noopener noreferrer"},T={href:"https://github.com/HighCapable/YukiHookAPI/issues/36",target:"_blank",rel:"noopener noreferrer"},W=c("
  • 新增 YukiHookAPI.TAG
  • 作废了 YukiHookAPI.API_VERSION_NAMEYukiHookAPI.API_VERSION_CODE,统一合并到 YukiHookAPI.VERSION
  • 作废了 YukiMemberHookCreator 中的 useDangerousOperation 方法
  • 作废了 YukiMemberHookCreator 中的 instanceClass 功能,不再推荐使用
  • 修改 HookParam 中的 instanceClass 为空安全返回值类型
  • 分离全部使用 injectMember 创建的 Hook 对象到 LegacyCreator
  • 修改 PackageParam 中的 appClassLoader 为空安全返回值类型
  • 重构全部 logger... 方法到新用法 YLog
  • 移除了打印日志功能后方的 --> 样式
  • 修复并改进在使用 namespace 后通过 KSP 无法获取模块包名的问题
  • 是否启用模块激活状态等功能现已移动到 InjectYukiHookWithXposed 注解中
  • ",11),U={href:"https://github.com/tiann/FreeReflection",target:"_blank",rel:"noopener noreferrer"},w=c("
  • 新增重复 Hook 同一个方法时将自动打印警告日志
  • 作废了 PackageParam 中的 findClass(...) 方法,请迁移到 "...".toClass() 方法
  • 作废了 PackageParam 中的 String.hook { ... } 方法,推荐使用新方式进行 Hook
  • AppLifecycle 现在可以在不同 Hooker 中重复创建
  • 作废了旧版 Hook 优先级写法,统一迁移到 YukiHookPriority
  • 移除了 Hook 过程中的 tag 功能
  • 重构方法查找中的 remendy 功能,现在可以对其进行分步打印异常
  • 多重方法查找结果类型由 HashSet 改为 MutableList
  • 新增使用 method()constructor()field() 可直接获取到类中的所有对象功能
  • constructor() 的行为不再是 constructor { emptyParam() }
  • 新增 lazyClasslazyClassOrNull 方法,可延迟装载 Class
  • ",11),G={id:"_1-1-11-2023-04-25",tabindex:"-1"},z=e("a",{class:"header-anchor",href:"#_1-1-11-2023-04-25","aria-hidden":"true"},"#",-1),V=e("code",null,"1.1.5",-1),K=e("code",null,"Member",-1),j={href:"https://github.com/Art-Chen",target:"_blank",rel:"noopener noreferrer"},Z=c("
  • 移除 Member 的直接缓存功能并作废 YukiHookAPI.Configs.isEnableMemberCache,保留 Class 的缓存功能
  • 对接查找功能到 Sequence,优化 Member 的查找速度与性能
  • 移除 YukiHookPrefsBridge 的直接键值缓存功能并移除 LruCache 相关功能
  • 作废了 YukiHookAPI.Configs.isEnablePrefsBridgeCache
  • 作废了 YukiHookPrefsBridge 中的 directclearCache 方法
  • ",5),J={id:"_1-1-10-2023-04-21",tabindex:"-1"},q=e("a",{class:"header-anchor",href:"#_1-1-10-2023-04-21","aria-hidden":"true"},"#",-1),Q=c("",1),$={id:"_1-1-9-2023-04-17",tabindex:"-1"},ee=e("a",{class:"header-anchor",href:"#_1-1-9-2023-04-17","aria-hidden":"true"},"#",-1),oe=c("",1),de={id:"_1-1-8-2023-02-01",tabindex:"-1"},ie=e("a",{class:"header-anchor",href:"#_1-1-8-2023-02-01","aria-hidden":"true"},"#",-1),le=e("code",null,"result",-1),ce={href:"https://github.com/elvizlai",target:"_blank",rel:"noopener noreferrer"},te={href:"https://github.com/HighCapable/YukiHookAPI/issues/23",target:"_blank",rel:"noopener noreferrer"},ae=c("
  • 移动 YukiHookAPI 自动生成的入口类名称文件 assets/yukihookapi_initresources/META-INF/yukihookapi_init
  • 允许在仅打印异常堆栈时 msg 参数为空并可以不设置 msg 参数,留空 msg 参数的日志除非异常堆栈不为空否则将不会被记录
  • 修复 Hook 回调方法体内发生的异常打印的日志无具体方法信息的 BUG
  • HookParam 新增 instanceOrNull 变量与方法,可以在不确定 Hook 实例是否为空的前提下使用以防止 Hook 实例为空抛出异常
  • 解耦合所有 Member 查找功能中的 Hooker 到 MemberBaseFinder.MemberHookerManager
  • 修改了 YukiMemberHookCreator 中的 by 条件用法,现在可以重复使用 by 方法设置多个条件
  • 移除了 Android type 中的错误 Class 对象声明
  • PackageParam.AppLifecycle 中的 registerReceiver 方法新增直接使用 IntentFilter 创建系统广播监听的功能
  • 修复在 PackageParam.AppLifecycle 中可能存在多次注册生命周期的问题
  • Revert: 1.1.7 版本由于有一个严重问题已经撤回,请直接更新到此版本即可 (更新日志同 1.1.7 版本)
  • ",10),ne={id:"_1-1-6-2023-01-21",tabindex:"-1"},re=e("a",{class:"header-anchor",href:"#_1-1-6-2023-01-21","aria-hidden":"true"},"#",-1),se=c("",1),he={id:"_1-1-5-2023-01-13",tabindex:"-1"},ue=e("a",{class:"header-anchor",href:"#_1-1-5-2023-01-13","aria-hidden":"true"},"#",-1),_e=c('',1),ke={id:"_1-1-4-2022-10-04",tabindex:"-1"},pe=e("a",{class:"header-anchor",href:"#_1-1-4-2022-10-04","aria-hidden":"true"},"#",-1),ge=c("",1),fe={id:"_1-1-3-2022-09-30",tabindex:"-1"},He=e("a",{class:"header-anchor",href:"#_1-1-3-2022-09-30","aria-hidden":"true"},"#",-1),me=e("ul",null,[e("li",null,"修复一个无法自定义 Hook 入口类名的致命错误"),e("li",null,[o("添加 "),e("code",null,"LoggerFactory"),o(" 中的部分代码注释文案并更新特色功能文档")])],-1),Pe={id:"_1-1-2-2022-09-30",tabindex:"-1"},be=e("a",{class:"header-anchor",href:"#_1-1-2-2022-09-30","aria-hidden":"true"},"#",-1),Ae=c('',1),Ce={id:"_1-1-1-2022-09-28",tabindex:"-1"},ye=e("a",{class:"header-anchor",href:"#_1-1-1-2022-09-28","aria-hidden":"true"},"#",-1),xe=e("ul",null,[e("li",null,[o("修复了文档 "),e("a",{href:"../guide/knowledge"},"基础知识"),o(" 页面友情链接错误的问题")]),e("li",null,[o("修复了文档 "),e("code",null,"favicon"),o(" 不显示的问题")]),e("li",null,[o("修复 "),e("code",null,"DexClassFinder"),o(" 查找条件中的 BUG")])],-1),Ye={id:"_1-1-0-2022-09-28",tabindex:"-1"},ve=e("a",{class:"header-anchor",href:"#_1-1-0-2022-09-28","aria-hidden":"true"},"#",-1),Ie=e("li",null,[o("这是一次大版本更新,有关更新日志中提到的变化及用法请参考 "),e("a",{href:"../api/home"},"API 文档"),o(" 以及 "),e("a",{href:"../api/special-features/reflection"},"特色功能")],-1),Me={href:"https://v2.vuepress.vuejs.org",target:"_blank",rel:"noopener noreferrer"},Re=c('
  • 统一并规范文档中的术语名词,例如“查询”一律更改为了“查找”,XposedHelper 拼写错误修改为了 XposedHelpers
  • 文档 基础知识 页面加入友情链接,仅限简体中文
  • 将 Hook App Demo 的 ClassMethod 转为 Java 以提供更好的演示效果
  • 修正了 Hook Module Demo 中的代码注释命名
  • 重构了大量底层 Hook 逻辑及 Xposed API 的对接方式
  • 移除了 HookParamWrapper,现已将其直接与 YukiBridgeFactory 对接
  • 移动部分 YukiHookBridge 中的方法到 AppParasitics
  • 移除了 HookParam.args 与底层的直接对接方法 setArgs,直接获取并设置当前数组的对象
  • 优化自动处理程序,将引用的 jar 合并到 stub 项目
  • ',9),Le={href:"https://github.com/5ec1cff",target:"_blank",rel:"noopener noreferrer"},Se=c("
  • 对 API 私有工具类的方法进行了 internal 闭包处理,避免污染顶级命名空间
  • 修正了所有反射和 Hook 类的 Creater 命名到 Creator
  • 新增 YukiHookAPI.Status.compiledTimestamp 功能,可以在作为 Xposed 模块使用时获取编译完成的时间戳
  • 新增 YukiHookAPI.Status.isXposedEnvironment 功能,可以判断当前为 (Xposed) 宿主环境还是模块环境
  • 调试日志功能进行了大改版,现已将 YukiHookAPI.Configs.debugTag 等功能合并到 YukiHookLogger.Configs
  • 调试日志新增可指定打印使用的方法为 XposedBridge.logLogd
  • 调试日志中默认加入当前宿主的包名以及当前用户 ID,以供调试,你可以在 debugLog 配置中自行更改
  • 新增 generic 功能,可对泛型进行反射和调用,你可以在 ClassCurrentClass 中使用它
  • 作废 buildOfAny 方法,现在请直接使用 buildOf 方法 (不带泛型) 来使用构造方法创建新对象并得到结果 Any
  • 修复 hasExtends 使用过程发生空指针异常的问题
  • CurrentClass 新增非 lambda 方式的调用方法
  • CurrentClass 新增 namesimpleName 功能
  • 完全重写 ReflectionTool 的核心方法,将不同的查找条件进行了整理分类
  • 修复 ReflectionTool 中可能的直接调用 declared 获取的 Member 抛出异常的问题
  • 修复 ReflectionToolUndefinedType 未在 MethodConstructor 条件中正确判断的问题
  • 新增反射查找结果发生异常时的友好提示方式,可具体定位到指定条件找不到 Member 的问题
  • 反射查找 MethodConstructor 中新增 VagueType 条件,可使用在 param 条件中用于忽略你不想填写的参数
  • 反射查找 MethodConstructor 中新增 paramCount { ... } 条件,现在你可以直接拿到其中的 it 来自定义你的判断条件
  • FieldFinder 结果中新增 current 方法,可直接对结果实例创建调用空间
  • 修改了反射查找功能中的 modifiers 条件以及 name 条件,现在你需要对此方法体结尾返回一个 Boolean 以使条件成立
  • ",20),Be=e("code",null,"ModifierRules",-1),Fe=e("code",null,"as*",-1),Xe=e("code",null,"is*",-1),De={href:"https://github.com/KyuubiRan",target:"_blank",rel:"noopener noreferrer"},Ee=c("
  • FieldFinder 中新增 RemedyPlan 功能
  • 新增 Dex 中的 Class 模糊查找功能 (Beta),你现在可以直接使用 searchClass 功能来使用指定条件模糊查找 Class
  • ",2),Ne=e("strong",null,"AA",-1),Oe={href:"https://github.com/KyuubiRan",target:"_blank",rel:"noopener noreferrer"},Te=e("code",null,"appClassLoader",-1),We={href:"https://github.com/luckyzyx",target:"_blank",rel:"noopener noreferrer"},Ue=e("li",null,[o("修改了 "),e("code",null,"XposedBridge.invokeOriginalMethod"),o(" 的调用方式并在 "),e("code",null,"MethodFinder.Result.Instance"),o(" 中增加 "),e("code",null,"original"),o(" 功能")],-1),we=e("code",null,"YukiHookModulePrefs",-1),Ge=e("code",null,"getStringSet",-1),ze={href:"https://github.com/Teddy-Zhu",target:"_blank",rel:"noopener noreferrer"},Ve={href:"https://github.com/HighCapable/YukiHookAPI/pull/19",target:"_blank",rel:"noopener noreferrer"},Ke=e("li",null,[o("修改 "),e("code",null,"YukiHookModulePrefs"),o(",拦截 "),e("code",null,"XSharePreference"),o(" 可能不存在的异常")],-1),je=e("li",null,[o("修复 "),e("code",null,"YukiHookDataChannel"),o(" 在某些第三方 ROM 系统框架中无法注册成功的问题")],-1),Ze=e("li",null,[o("安全化 "),e("code",null,"YukiHookDataChannel"),o(",现在它只能在来自指定包名的模块与宿主之间通信")],-1),Je=e("code",null,"SharedPreferences",-1),qe=e("code",null,"0664",-1),Qe={href:"https://github.com/5ec1cff",target:"_blank",rel:"noopener noreferrer"},$e=c("
  • 新增 YukiHookAPI.Configs.isEnableHookSharedPreferences 功能,默认关闭,若 SharedPreferences 的权限错误可进行启用
  • 修复查找 Constructor 时无参构造方法在不填写查找条件时无法找到的 BUG,感谢 B5 KAKA 的反馈
  • 分离位于 injectMembermethodconstructorResult 实例到 Process
  • 在 Hook 过程中新增 useDangerousOperation 方法,未进行声明时在 Hook 危险列表中的功能后会自动停止 Hook 并打印错误
  • 新增模块资源注入与 Activity 代理功能,你可以调用 injectModuleAppResourcesregisterModuleAppActivities 来使用
  • 新增 ModuleContextThemeWrapper 功能,你可以调用 applyModuleTheme 在任意 Activity 中创建模块的 Context
  • 新增 ClassLoader.onLoadClass 功能,可用于监听 ClassLoaderloadClass 方法被调用的事件
  • 作废了 classOfclazz 扩展方法,新增 toClass 以及 toClassOrNull 用法,请现在迁移到新的方法
  • VariousClass 新增 getOrNull 方法,可在匹配不到 Class 的时候不抛出异常而是返回 null
  • PackageParam.hook 中移除了 isUseAppClassLoader 参数,修改为 isForceUseAbsolute 并自动匹配目标 Class
  • PackageParam 新增 systemContext 功能,你可以在任意时间调用此功能获取一个持久化的 Context
  • 不再对外开放 HookClass 中的任何方法
  • HookParam 中新增 throwToApp 功能,可将异常直接抛给宿主
  • Hook 回调中新增 onFailureThrowToApp 功能,可在发生异常时直接抛给宿主
  • 修改了调试日志的打印逻辑,反射查找功能中的耗时记录仅会在 Hook 过程中进行打印
  • Hook 过程中新增解除 Hook 功能,可使用 removeremoveSelf 方法解除 Hook
  • 修复在 ReplaceHook 失败的时候导致宿主抛出异常的问题,现修改为调用原始方法保证宿主功能正常运行
  • 新增 Hook 过程中对方法返回值的检查功能,在返回值不匹配的情况下会根据情景自动抛出异常或打印错误
  • ",18),eo=e("code",null,"array",-1),oo={href:"https://github.com/GSWXXN",target:"_blank",rel:"noopener noreferrer"},io={href:"https://github.com/HighCapable/YukiHookAPI/pull/12",target:"_blank",rel:"noopener noreferrer"},lo=e("li",null,[o("移动 "),e("code",null,"me.weishu.reflection"),o(" 到 "),e("code",null,"thirdparty"),o(" 防止同时引入的同名依赖冲突")],-1),co=e("li",null,"移除 Hook 方法体为空时抛出的异常,修改为打印警告日志",-1),to=e("li",null,[o("修改 "),e("code",null,"AppLifecycle"),o(" 的异常处理逻辑,当其发生异常时直接抛给宿主")],-1),ao=e("li",null,"更新 Demo 的 API 版本到 33",-1),no={id:"_1-0-92-2022-05-31",tabindex:"-1"},ro=e("a",{class:"header-anchor",href:"#_1-0-92-2022-05-31","aria-hidden":"true"},"#",-1),so=c("",1),ho={id:"_1-0-91-2022-05-29",tabindex:"-1"},uo=e("a",{class:"header-anchor",href:"#_1-0-91-2022-05-29","aria-hidden":"true"},"#",-1),_o=e("code",null,"ClassLoader",-1),ko={href:"https://github.com/luckyzyx",target:"_blank",rel:"noopener noreferrer"},po=c("
  • 修复 YukiHookDataChannelZUI 以及低于 Android 12 的系统上不能回调当前 Activity 广播的问题
  • 整合 YukiHookModuleStatus 功能到 YukiHookAPI.Status,重写了大量方法,现在你可以在模块与宿主中双向判断模块激活等状态信息
  • ",2),go={id:"_1-0-90-2022-05-27",tabindex:"-1"},fo=e("a",{class:"header-anchor",href:"#_1-0-90-2022-05-27","aria-hidden":"true"},"#",-1),Ho=c("",1),mo={id:"_1-0-89-2022-05-26",tabindex:"-1"},Po=e("a",{class:"header-anchor",href:"#_1-0-89-2022-05-26","aria-hidden":"true"},"#",-1),bo=c("",1),Ao={id:"_1-0-88-2022-05-25",tabindex:"-1"},Co=e("a",{class:"header-anchor",href:"#_1-0-88-2022-05-25","aria-hidden":"true"},"#",-1),yo=c("",1),xo={id:"_1-0-87-2022-05-10",tabindex:"-1"},Yo=e("a",{class:"header-anchor",href:"#_1-0-87-2022-05-10","aria-hidden":"true"},"#",-1),vo=e("ul",null,[e("li",null,[o("新增 "),e("code",null,"refreshModuleAppResources"),o(" 功能,以适配语言区域、字体大小、分辨率改变等情况下的 Resources 刷新")]),e("li",null,[o("新增 "),e("code",null,"isEnableModuleAppResourcesCache"),o(" 功能,可自行设置是否自动缓存当前模块的 Resources")])],-1),Io={id:"_1-0-86-2022-05-06",tabindex:"-1"},Mo=e("a",{class:"header-anchor",href:"#_1-0-86-2022-05-06","aria-hidden":"true"},"#",-1),Ro=e("ul",null,[e("li",null,[o("修复不支持 Resources Hook(资源钩子) 的情况下在 "),e("code",null,"initZygote"),o(" 时持续报错的问题,复现在 "),e("strong",null,"ZUI"),o("/"),e("strong",null,"LSPosed CI(1.8.3-6550)")]),e("li",null,"优化并对 Resources Hook 进行异常处理,只有被使用后不支持才会打印错误和警告")],-1),Lo={id:"_1-0-85-2022-05-04",tabindex:"-1"},So=e("a",{class:"header-anchor",href:"#_1-0-85-2022-05-04","aria-hidden":"true"},"#",-1),Bo=c("",1),Fo={id:"_1-0-83-2022-05-04",tabindex:"-1"},Xo=e("a",{class:"header-anchor",href:"#_1-0-83-2022-05-04","aria-hidden":"true"},"#",-1),Do=e("ul",null,[e("li",null,[o("修复 "),e("code",null,"YukiHookModuleStatus"),o(" 在 "),e("code",null,"loadSystem"),o(" 后大量报错的问题")]),e("li",null,[o("新增 "),e("code",null,"type"),o(" 中的 "),e("code",null,"android"),o(" 类型")]),e("li",null,"更新帮助文档的示例说明")],-1),Eo={id:"_1-0-82-2022-05-04",tabindex:"-1"},No=e("a",{class:"header-anchor",href:"#_1-0-82-2022-05-04","aria-hidden":"true"},"#",-1),Oo=e("ul",null,[e("li",null,[o("修复了一处概念混淆错误,区分 "),e("code",null,"initZygote"),o(" 与系统框架的关系,之前的注释和文档有问题,非常抱歉")]),e("li",null,[e("code",null,"PackageParam"),o(" 新增 "),e("code",null,"loadSystem"),o(" 方法,不需要再写 "),e("code",null,'loadApp(name = "android")'),o(" 即可 Hook 系统框架")])],-1),To={id:"_1-0-81-2022-05-04",tabindex:"-1"},Wo=e("a",{class:"header-anchor",href:"#_1-0-81-2022-05-04","aria-hidden":"true"},"#",-1),Uo=e("ul",null,[e("li",null,[o("修复使用 "),e("code",null,"by"),o(" 方法设置条件后 Hook 方法体内查找不到的方法、构造方法依然输出错误日志的问题")]),e("li",null,"在执行 Hook 过程中加入全局日志显示当前 Hook APP 的包名,并修复一处错误日志打印样式的问题")],-1),wo={id:"_1-0-80-2022-05-01",tabindex:"-1"},Go=e("a",{class:"header-anchor",href:"#_1-0-80-2022-05-01","aria-hidden":"true"},"#",-1),zo=c("
  • InjectYukiHookWithXposed 注解新增 entryClassName 功能,可自定义生成的 xposed_init 入口类名
  • YukiHookXposedInitProxy 更名为 IYukiHookXposedInit,原接口名称已作废,将在后续版本中直接被删除
  • 新增 initZygote 与 Resources Hook 功能,支持 Hook Layout
  • 新增 onXposedEvent 方法,可监听原生 Xposed API 的全部事件
  • 对 Hook 功能的 lambda 进行 inline 处理,避免生成过碎的匿名类,提升编译后的运行性能
  • 修复 PrefsData 编译后的方法体复制过大的问题
  • 增加 XSharePreference 可读性测试,失败后会自动打印警告日志
  • PackageParam 新增 appResourcesmoduleAppResourcesmoduleAppFilePath 功能
  • PackageParamloadApp 新增不写 name 功能,默认筛选全部 APP
  • PackageParam 新增 loadZygote 方法,可直接 Hook 系统框架
  • PackageParam 新增 resources().hook 功能
  • 优化方法、构造方法、变量查找功能,找不到的错误日志将优先显示已设置的查找条件
  • 增加 hasExtends 扩展方法,可判断当前 Class 是否有继承关系
  • 增加 isSupportResourcesHook 功能,判断当前是否支持资源钩子(Resources Hook)
  • current 功能新增 superClass 方法调用父类
  • 查找方法、构造方法、变量新增 superClass 查找条件,可继续在父类中查找
  • YukiHookAPI 大量方法与 Xposed API 解耦合
  • 新增 Xposed API 的原生 Hook 优先级功能
  • 修复 isFirstApplication 可能判断不准确的问题
  • 屏蔽 MIUI 系统上 MiuiCatcherPatch 重复调用 Hook 入口方法的问题
  • 优化 Hook 入口调用方法,避免因为 Hook Framework 问题导致多次调用
  • ",21),Vo=e("code",null,"ClassLoader",-1),Ko={href:"https://github.com/WankkoRee",target:"_blank",rel:"noopener noreferrer"},jo=e("li",null,[o("提升 "),e("code",null,"XC_Callback"),o(" 接口对接后的性能")],-1),Zo=e("li",null,[o("Java "),e("code",null,"type"),o(" 新增 "),e("code",null,"ClassLoader"),o(" 类型")],-1),Jo=e("li",null,"优化 API 帮助文档,修复可能持续缓存页面的问题",-1),qo={id:"_1-0-78-2022-04-18",tabindex:"-1"},Qo=e("a",{class:"header-anchor",href:"#_1-0-78-2022-04-18","aria-hidden":"true"},"#",-1),$o=c("
  • YukiHookModulePrefs 新增 isRunInNewXShareMode 方法,可用于判断模块当前是否处于 New XSharePreference 模式
  • 修复 YukiHookModulePrefsNew XSharePreference 模式下工作的部分问题
  • 新增 ModulePreferenceFragment,现在,你可以完全替换掉 PreferenceFragmentCompat 并开始使用新的功能
  • ",3),ed=e("code",null,"PreferenceFragmentCompat",-1),od={href:"https://github.com/mahoshojoHCG",target:"_blank",rel:"noopener noreferrer"},dd=e("li",null,"更新自动处理程序以及 Kotlin 依赖到最新版本",-1),id=e("li",null,"修正部分文档和代码注释中的错误",-1),ld={id:"_1-0-77-2022-04-15",tabindex:"-1"},cd=e("a",{class:"header-anchor",href:"#_1-0-77-2022-04-15","aria-hidden":"true"},"#",-1),td=e("code",null,"YukiHookModulePrefs",-1),ad=e("code",null,"clear",-1),nd={href:"https://github.com/WankkoRee",target:"_blank",rel:"noopener noreferrer"},rd=c("
  • YukiHookModulePrefs 新增 getStringSetputStringSetall 方法
  • HookParamargs 增加 any 方法
  • 新增 ModuleApplication,可在模块中继承此类实现更多功能
  • 对接全部的 findClass 功能到 Xposed API,在非宿主环境继续使用原生 ClassLoader
  • 修复了一些可能存在的 BUG
  • ",5),sd={id:"_1-0-75-2022-04-13",tabindex:"-1"},hd=e("a",{class:"header-anchor",href:"#_1-0-75-2022-04-13","aria-hidden":"true"},"#",-1),ud={href:"https://github.com/ApeaSuperz",target:"_blank",rel:"noopener noreferrer"},_d=c("
  • 修正一处文档注释的引用未更改的问题
  • HookParam 中删除了 firstArgslastArgs 方法,现在你可以使用 args().first()args().last() 来取代它
  • HookParam 中删除了 args() 中的默认参数 index = 0,现在你可以使用 args().first()args(index = 0) 来取代它
  • HookParamresult 功能增加了泛型匹配,现在你可以使用 result<T> 来匹配你的目标方法已知返回值类型了
  • 方法、构造方法查找功能新增 emptyParam 条件,并完善了文档相关需要注意的查找条件误区
  • 增加了 type 中的 android 类型
  • ",6),kd=e("h3",{id:"_1-0-73-2022-04-10",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#_1-0-73-2022-04-10","aria-hidden":"true"},"#"),o(" 1.0.73 | 2022.04.10")],-1),pd={href:"https://github.com/WankkoRee",target:"_blank",rel:"noopener noreferrer"},gd=e("code",null,"XC_LoadPackage.LoadPackageParam",-1),fd={href:"https://github.com/luckyzyx",target:"_blank",rel:"noopener noreferrer"},Hd=e("li",null,"修复一些已知的 BUG,提升 Hook 稳定性",-1),md={id:"_1-0-72-2022-04-09",tabindex:"-1"},Pd=e("a",{class:"header-anchor",href:"#_1-0-72-2022-04-09","aria-hidden":"true"},"#",-1),bd=e("ul",null,[e("li",null,"更新 API 文档到新的地址"),e("li",null,[e("code",null,"PackageParam"),o(" 中加入 "),e("code",null,"appContext"),o(" 功能")]),e("li",null,"修复一些已知的 BUG,提升 Hook 稳定性")],-1),Ad={id:"_1-0-71-2022-04-04",tabindex:"-1"},Cd=e("a",{class:"header-anchor",href:"#_1-0-71-2022-04-04","aria-hidden":"true"},"#",-1),yd=e("ul",null,[e("li",null,"修复 VariousClass 无法匹配时会停止 Hook 抛出异常的严重问题")],-1),xd={id:"_1-0-70-2022-04-04",tabindex:"-1"},Yd=e("a",{class:"header-anchor",href:"#_1-0-70-2022-04-04","aria-hidden":"true"},"#",-1),vd=e("li",null,[o("修复 "),e("code",null,"instanceClass"),o(" 在静态实例中调用后报错问题")],-1),Id=e("code",null,"isUseAppClassLoader",-1),Md={href:"https://github.com/WankkoRee",target:"_blank",rel:"noopener noreferrer"},Rd=e("li",null,[o("加入 "),e("code",null,"withProcess"),o(" 功能,可根据 APP 当前指定进程进行 Hook")],-1),Ld=e("li",null,"修复查找方法、构造类和变量的严重逻辑错误问题",-1),Sd=e("li",null,"修复 Hook 目标类不存在的时候无法忽略异常输出的问题",-1),Bd=e("li",null,"修复部分情况下 APP 启动方法装载过快导致 Hook 不能生效的问题",-1),Fd=e("code",null,"allMethods",-1),Xd={href:"https://github.com/WankkoRee",target:"_blank",rel:"noopener noreferrer"},Dd={href:"https://github.com/WankkoRee",target:"_blank",rel:"noopener noreferrer"},Ed=e("li",null,"修改 Xposed 入口注入类的方式,重新声明 API 的定义域",-1),Nd=e("code",null,"index",-1),Od={href:"https://github.com/WankkoRee",target:"_blank",rel:"noopener noreferrer"},Td=e("li",null,[o("查找方法、变量时允许传入多种类型,例如 "),e("code",null,"String"),o(" 声明的类名和 "),e("code",null,"VariousClass")],-1),Wd=e("li",null,[o("加入全新的 "),e("code",null,"current"),o(" 功能,可对任意的类构建一个反射方法操作空间,方便地调用和修改其中的方法和变量")],-1),Ud={href:"https://github.com/WankkoRee",target:"_blank",rel:"noopener noreferrer"},wd={id:"_1-0-69-2022-03-30",tabindex:"-1"},Gd=e("a",{class:"header-anchor",href:"#_1-0-69-2022-03-30","aria-hidden":"true"},"#",-1),zd=e("li",null,"添加并改进一些方法功能的注释",-1),Vd=e("li",null,"增加 Demo 中的更多示例 Hook 内容",-1),Kd=e("code",null,"allMethods",-1),jd={href:"https://github.com/WankkoRee",target:"_blank",rel:"noopener noreferrer"},Zd={id:"_1-0-68-2022-03-29",tabindex:"-1"},Jd=e("a",{class:"header-anchor",href:"#_1-0-68-2022-03-29","aria-hidden":"true"},"#",-1),qd=c("",1),Qd={id:"_1-0-67-2022-03-27",tabindex:"-1"},$d=e("a",{class:"header-anchor",href:"#_1-0-67-2022-03-27","aria-hidden":"true"},"#",-1),ei=c("",1),oi={id:"_1-0-66-2022-03-25",tabindex:"-1"},di=e("a",{class:"header-anchor",href:"#_1-0-66-2022-03-25","aria-hidden":"true"},"#",-1),ii=e("ul",null,[e("li",null,[o("修复 "),e("code",null,"MethodFinder"),o(" 中的一个严重问题")]),e("li",null,[o("增加 "),e("code",null,"hookParam"),o(" 中的 "),e("code",null,"args"),o(" 调用方法")]),e("li",null,"修复其它可能存在的问题以及修复部分类的注释问题")],-1),li={id:"_1-0-65-2022-03-25",tabindex:"-1"},ci=e("a",{class:"header-anchor",href:"#_1-0-65-2022-03-25","aria-hidden":"true"},"#",-1),ti=c("",1),ai={id:"_1-0-6-2022-03-20",tabindex:"-1"},ni=e("a",{class:"header-anchor",href:"#_1-0-6-2022-03-20","aria-hidden":"true"},"#",-1),ri=c("",1),si={id:"_1-0-55-2022-03-18",tabindex:"-1"},hi=e("a",{class:"header-anchor",href:"#_1-0-55-2022-03-18","aria-hidden":"true"},"#",-1),ui=e("ul",null,[e("li",null,"修正一处注释错误"),e("li",null,"临时修复一个 BUG"),e("li",null,[o("增加了 "),e("code",null,"type"),o(" 中的大量 "),e("code",null,"android"),o(" 类型以及少量 Java 类型")]),e("li",null,"修复新版与旧版 Kotlin APIs 的兼容性问题")],-1),_i={id:"_1-0-5-2022-03-18",tabindex:"-1"},ki=e("a",{class:"header-anchor",href:"#_1-0-5-2022-03-18","aria-hidden":"true"},"#",-1),pi=c("",1),gi={id:"_1-0-4-2022-03-06",tabindex:"-1"},fi=e("a",{class:"header-anchor",href:"#_1-0-4-2022-03-06","aria-hidden":"true"},"#",-1),Hi=c("",1),mi={id:"_1-0-3-2022-03-02",tabindex:"-1"},Pi=e("a",{class:"header-anchor",href:"#_1-0-3-2022-03-02","aria-hidden":"true"},"#",-1),bi=c("",1),Ai={id:"_1-0-2-2022-02-18",tabindex:"-1"},Ci=e("a",{class:"header-anchor",href:"#_1-0-2-2022-02-18","aria-hidden":"true"},"#",-1),yi=e("ul",null,[e("li",null,"修复 Windows 下无法找到项目路径的问题"),e("li",null,[o("移除部分反射 API,合并至 "),e("code",null,"BaseFinder"),o(" 进行整合")]),e("li",null,"增加直接使用字符串创建 Hook 的方法")],-1),xi={id:"_1-0-1-2022-02-15",tabindex:"-1"},Yi=e("a",{class:"header-anchor",href:"#_1-0-1-2022-02-15","aria-hidden":"true"},"#",-1),vi=e("ul",null,[e("li",null,[e("code",null,"RemedyPlan"),o(" 增加 "),e("code",null,"onFind"),o(" 功能")]),e("li",null,"整合并修改了部分反射 API 代码"),e("li",null,[o("增加了 "),e("code",null,"type"),o(" 中的 Java 类型")]),e("li",null,"修复忽略错误在控制台仍然输出的问题")],-1),Ii={id:"_1-0-2022-02-14",tabindex:"-1"},Mi=e("a",{class:"header-anchor",href:"#_1-0-2022-02-14","aria-hidden":"true"},"#",-1),Ri=e("ul",null,[e("li",null,"首个版本提交至 Maven")],-1);function Li(Si,Bi){const i=t("Badge"),l=t("ExternalLinkIcon");return n(),r("div",null,[h,u,_,e("h3",k,[p,o(" 1.3.0 | 2025.06.25  "),d(i,{type:"tip",text:"最新",vertical:"middle"})]),e("ul",null,[e("li",null,[o("这是一次重大更新,详情请参考 "),e("a",g,[o("迁移到 YukiHookAPI 1.3.x"),d(l)])]),e("li",null,[o("弃用了 "),f,o(" 自身的反射 API,现在请迁移到全新的 "),e("a",H,[o("KavaRef"),d(l)])]),m,e("li",null,[P,o(" 已被弃用,现已切换至 "),e("a",b,[o("AndroidHiddenApiBypass"),d(l)])])]),e("h3",A,[C,o(" 1.2.1 | 2024.06.20  "),d(i,{type:"warning",text:"过旧",vertical:"middle"})]),e("ul",null,[y,e("li",null,[o('在自动处理程序中添加自动使用 "`" 来修复 Kotlin 关键字为包名的情况,感谢 '),e("a",x,[o("Fengning Zhu"),d(l)]),o(" 的 "),e("a",Y,[o("PR"),d(l)])]),e("li",null,[o("适配 Kotlin 2.0.0+,修复在自动处理过程中无法通过编译的问题,感谢 "),e("a",v,[o("xihan123"),d(l)]),o(" 的 "),e("a",I,[o("PR"),d(l)])])]),e("h3",M,[R,o(" 1.2.0 | 2023.10.07  "),d(i,{type:"warning",text:"过旧",vertical:"middle"})]),e("ul",null,[L,e("li",null,[o("这是一次重大更新,详情请参考 "),e("a",S,[o("迁移到 YukiHookAPI 1.2.x"),d(l)])]),e("li",null,[o("适配 Android 14,感谢 "),e("a",B,[o("BlueCat300"),d(l)]),o(" 的 "),e("a",F,[o("PR"),d(l)])]),e("li",null,[o("修复 "),X,o(" 相关问题,感谢 "),e("a",D,[o("buffcow"),d(l)]),o(" 的 "),e("a",E,[o("PR"),d(l)])]),e("li",null,[o("修复 Hook 过程中的延迟回调问题,感谢 "),e("a",N,[o("cesaryuan"),d(l)]),o(" 的 "),e("a",O,[o("Issue"),d(l)])]),e("li",null,[o("新增 Resources Hook 相关功能支持,详情请参考这个 "),e("a",T,[o("Issue"),d(l)])]),W,e("li",null,[o("分离 "),e("a",U,[o("FreeReflection"),d(l)]),o(" 不再自动生成,将作为依赖自动导入")]),w]),e("h3",G,[z,o(" 1.1.11 | 2023.04.25  "),d(i,{type:"danger",text:"过期",vertical:"middle"})]),e("ul",null,[e("li",null,[o("修复从 "),V,o(" 版本开始的一个严重问题,"),K,o(" 缓存未生效且持续存储最终引发 APP 内存溢出 (OOM),感谢 "),e("a",j,[o("Art-Chen"),d(l)])]),Z]),e("h3",J,[q,o(" 1.1.10 | 2023.04.21  "),d(i,{type:"danger",text:"过期",vertical:"middle"})]),Q,e("h3",$,[ee,o(" 1.1.9 | 2023.04.17  "),d(i,{type:"danger",text:"过期",vertical:"middle"})]),oe,e("h3",de,[ie,o(" 1.1.8 | 2023.02.01  "),d(i,{type:"danger",text:"过期",vertical:"middle"})]),e("ul",null,[e("li",null,[o("修复底层 Hook 方法在回调时修改 "),le,o(" 等参数时时不能同步更新修改后的状态问题,感谢 "),e("a",ce,[o("Yongzheng Lai"),d(l)]),o(" 的 "),e("a",te,[o("Issue"),d(l)])]),ae]),e("h3",ne,[re,o(" 1.1.6 | 2023.01.21  "),d(i,{type:"danger",text:"过期",vertical:"middle"})]),se,e("h3",he,[ue,o(" 1.1.5 | 2023.01.13  "),d(i,{type:"danger",text:"过期",vertical:"middle"})]),_e,e("h3",ke,[pe,o(" 1.1.4 | 2022.10.04  "),d(i,{type:"danger",text:"过期",vertical:"middle"})]),ge,e("h3",fe,[He,o(" 1.1.3 | 2022.09.30  "),d(i,{type:"danger",text:"过期",vertical:"middle"})]),me,e("h3",Pe,[be,o(" 1.1.2 | 2022.09.30  "),d(i,{type:"danger",text:"过期",vertical:"middle"})]),Ae,e("h3",Ce,[ye,o(" 1.1.1 | 2022.09.28  "),d(i,{type:"danger",text:"过期",vertical:"middle"})]),xe,e("h3",Ye,[ve,o(" 1.1.0 | 2022.09.28  "),d(i,{type:"danger",text:"过期",vertical:"middle"})]),e("ul",null,[Ie,e("li",null,[o("更换帮助文档框架到 "),e("a",Me,[o("VuePress"),d(l)])]),Re,e("li",null,[o("修复多项目打包时模块包名无法正确匹配的问题以及修改自动处理程序的模块包名匹配逻辑,感谢 "),e("a",Le,[o("5ec1cff"),d(l)]),o(" 的反馈及提供的解决方案")]),Se,e("li",null,[Be,o(" 中的 "),Fe,o(" 功能改名为 "),Xe,o(",感谢 "),e("a",De,[o("Kitsune"),d(l)]),o(" 的建议")]),Ee,e("li",null,[o("新增反射查找中的多重查找功能,可使用相对查找条件同时获取多个查找结果,感谢 "),Ne,o(" 以及 "),e("a",Oe,[o("Kitsune"),d(l)]),o(" 的建议")]),e("li",null,[o("修复 "),Te,o(" 获取到的对象在某些系统中的系统应用中不正确的问题,感谢 "),e("a",We,[o("Luckyzyx"),d(l)]),o(" 的反馈")]),Ue,e("li",null,[o("修复 "),we,o(" 中 "),Ge,o(" 方法取值错误的问题并优化代码风格,感谢 "),e("a",ze,[o("Teddy_Zhu"),d(l)]),o(" 的 "),e("a",Ve,[o("PR"),d(l)])]),Ke,je,Ze,e("li",null,[o("新增自动 Hook "),Je,o(" 以修复部分系统中文件权限不是 "),qe,o(" 的问题,感谢 "),e("a",Qe,[o("5ec1cff"),d(l)]),o(" 的反馈及提供的实现代码")]),$e,e("li",null,[o("Resources Hook 中新增 "),eo,o(" 类型,感谢 "),e("a",oo,[o("GSWXXN"),d(l)]),o(" 的 "),e("a",io,[o("PR"),d(l)])]),lo,co,to,ao]),e("h3",no,[ro,o(" 1.0.92 | 2022.05.31  "),d(i,{type:"danger",text:"过期",vertical:"middle"})]),so,e("h3",ho,[uo,o(" 1.0.91 | 2022.05.29  "),d(i,{type:"danger",text:"过期",vertical:"middle"})]),e("ul",null,[e("li",null,[o("修复部分设备的定制系统在 LSPosed 环境下开机启动获取的 "),_o,o(" 错误的问题,感谢 "),e("a",ko,[o("Luckyzyx"),d(l)]),o(" 的反馈")]),po]),e("h3",go,[fo,o(" 1.0.90 | 2022.05.27  "),d(i,{type:"danger",text:"过期",vertical:"middle"})]),Ho,e("h3",mo,[Po,o(" 1.0.89 | 2022.05.26  "),d(i,{type:"danger",text:"过期",vertical:"middle"})]),bo,e("h3",Ao,[Co,o(" 1.0.88 | 2022.05.25  "),d(i,{type:"danger",text:"过期",vertical:"middle"})]),yo,e("h3",xo,[Yo,o(" 1.0.87 | 2022.05.10  "),d(i,{type:"danger",text:"过期",vertical:"middle"})]),vo,e("h3",Io,[Mo,o(" 1.0.86 | 2022.05.06  "),d(i,{type:"danger",text:"过期",vertical:"middle"})]),Ro,e("h3",Lo,[So,o(" 1.0.85 | 2022.05.04  "),d(i,{type:"danger",text:"过期",vertical:"middle"})]),Bo,e("h3",Fo,[Xo,o(" 1.0.83 | 2022.05.04  "),d(i,{type:"danger",text:"过期",vertical:"middle"})]),Do,e("h3",Eo,[No,o(" 1.0.82 | 2022.05.04  "),d(i,{type:"danger",text:"过期",vertical:"middle"})]),Oo,e("h3",To,[Wo,o(" 1.0.81 | 2022.05.04  "),d(i,{type:"danger",text:"过期",vertical:"middle"})]),Uo,e("h3",wo,[Go,o(" 1.0.80 | 2022.05.01  "),d(i,{type:"danger",text:"过期",vertical:"middle"})]),e("ul",null,[zo,e("li",null,[o("修复 Hook "),Vo,o(" 导致 Hook 卡死的问题,感谢 "),e("a",Ko,[o("WankkoRee"),d(l)]),o(" 的反馈")]),jo,Zo,Jo]),e("h3",qo,[Qo,o(" 1.0.78 | 2022.04.18  "),d(i,{type:"danger",text:"过期",vertical:"middle"})]),e("ul",null,[$o,e("li",null,[o("适配 "),ed,o(" 的 Sp 数据存储解决方案,感谢 "),e("a",od,[o("mahoshojoHCG"),d(l)]),o(" 的反馈")]),dd,id]),e("h3",ld,[cd,o(" 1.0.77 | 2022.04.15  "),d(i,{type:"danger",text:"过期",vertical:"middle"})]),e("ul",null,[e("li",null,[td,o(" 新增 "),ad,o(" 方法,感谢 "),e("a",nd,[o("WankkoRee"),d(l)]),o(" 的建议")]),rd]),e("h3",sd,[hd,o(" 1.0.75 | 2022.04.13  "),d(i,{type:"danger",text:"过期",vertical:"middle"})]),e("ul",null,[e("li",null,[o("更正了自动处理程序的逻辑识别部分,感谢 "),e("a",ud,[o("ApeaSuperz"),d(l)]),o(" 的贡献")]),_d]),kd,e("ul",null,[e("li",null,[o("修正几处文档的中文翻译错误,感谢 "),e("a",pd,[o("WankkoRee"),d(l)]),o(" 的贡献")]),e("li",null,[o("修复在某些情况下 "),gd,o(" 内容为空抛出异常的问题,感谢 "),e("a",fd,[o("Luckyzyx"),d(l)]),o(" 的反馈")]),Hd]),e("h3",md,[Pd,o(" 1.0.72 | 2022.04.09  "),d(i,{type:"danger",text:"过期",vertical:"middle"})]),bd,e("h3",Ad,[Cd,o(" 1.0.71 | 2022.04.04  "),d(i,{type:"danger",text:"过期",vertical:"middle"})]),yd,e("h3",xd,[Yd,o(" 1.0.70 | 2022.04.04  "),d(i,{type:"danger",text:"过期",vertical:"middle"})]),e("ul",null,[vd,e("li",null,[o("在 Hook 过程中加入 "),Id,o(" 功能,感谢 "),e("a",Md,[o("WankkoRee"),d(l)]),o(" 的反馈")]),Rd,Ld,Sd,Bd,e("li",null,[o("修复 "),Fd,o(" 未 Hook 到方法时不会抛出异常的问题,感谢 "),e("a",Xd,[o("WankkoRee"),d(l)]),o(" 的反馈")]),e("li",null,[o("加入 Hook 状态监听功能,感谢 "),e("a",Dd,[o("WankkoRee"),d(l)]),o(" 的建议")]),Ed,e("li",null,[o("加入混淆的方法以及变量的查找功能,可使用不同类型筛选 "),Nd,o(" 定位指定的方法和变量,感谢 "),e("a",Od,[o("WankkoRee"),d(l)]),o(" 提供的思路")]),Td,Wd,e("li",null,[o("修复了 Hook 过程中的大量 BUG,感谢 "),e("a",Ud,[o("WankkoRee"),d(l)]),o(" 对此项目所做出的贡献")])]),e("h3",wd,[Gd,o(" 1.0.69 | 2022.03.30  "),d(i,{type:"danger",text:"过期",vertical:"middle"})]),e("ul",null,[zd,Vd,e("li",null,[o("修复在一个 Hook 实例中,"),Kd,o(" 多次使用时只有最后一个生效的问题,感谢 "),e("a",jd,[o("WankkoRee"),d(l)]),o(" 的反馈")])]),e("h3",Zd,[Jd,o(" 1.0.68 | 2022.03.29  "),d(i,{type:"danger",text:"过期",vertical:"middle"})]),qd,e("h3",Qd,[$d,o(" 1.0.67 | 2022.03.27  "),d(i,{type:"danger",text:"过期",vertical:"middle"})]),ei,e("h3",oi,[di,o(" 1.0.66 | 2022.03.25  "),d(i,{type:"danger",text:"过期",vertical:"middle"})]),ii,e("h3",li,[ci,o(" 1.0.65 | 2022.03.25  "),d(i,{type:"danger",text:"过期",vertical:"middle"})]),ti,e("h3",ai,[ni,o(" 1.0.6 | 2022.03.20  "),d(i,{type:"danger",text:"过期",vertical:"middle"})]),ri,e("h3",si,[hi,o(" 1.0.55 | 2022.03.18  "),d(i,{type:"danger",text:"过期",vertical:"middle"})]),ui,e("h3",_i,[ki,o(" 1.0.5 | 2022.03.18  "),d(i,{type:"danger",text:"过期",vertical:"middle"})]),pi,e("h3",gi,[fi,o(" 1.0.4 | 2022.03.06  "),d(i,{type:"danger",text:"过期",vertical:"middle"})]),Hi,e("h3",mi,[Pi,o(" 1.0.3 | 2022.03.02  "),d(i,{type:"danger",text:"过期",vertical:"middle"})]),bi,e("h3",Ai,[Ci,o(" 1.0.2 | 2022.02.18  "),d(i,{type:"danger",text:"过期",vertical:"middle"})]),yi,e("h3",xi,[Yi,o(" 1.0.1 | 2022.02.15  "),d(i,{type:"danger",text:"过期",vertical:"middle"})]),vi,e("h3",Ii,[Mi,o(" 1.0 | 2022.02.14  "),d(i,{type:"danger",text:"过期",vertical:"middle"})]),Ri])}const Xi=a(s,[["render",Li],["__file","changelog.html.vue"]]);export{Xi as default};