@gkd-kit/docs 0.0.1733380249049 → 0.0.1733586377741

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/.vitepress/dist/404.html +6 -6
  2. package/.vitepress/dist/api/index.html +9 -9
  3. package/.vitepress/dist/api/interfaces/RawApp.html +9 -9
  4. package/.vitepress/dist/api/interfaces/RawAppGroup.html +9 -9
  5. package/.vitepress/dist/api/interfaces/RawAppRule.html +9 -9
  6. package/.vitepress/dist/api/interfaces/RawAppRuleProps.html +9 -9
  7. package/.vitepress/dist/api/interfaces/RawCategory.html +9 -9
  8. package/.vitepress/dist/api/interfaces/RawCommonProps.html +9 -9
  9. package/.vitepress/dist/api/interfaces/RawGlobalApp.html +9 -9
  10. package/.vitepress/dist/api/interfaces/RawGlobalGroup.html +9 -9
  11. package/.vitepress/dist/api/interfaces/RawGlobalRule.html +9 -9
  12. package/.vitepress/dist/api/interfaces/RawGlobalRuleProps.html +9 -9
  13. package/.vitepress/dist/api/interfaces/RawGroupProps.html +9 -9
  14. package/.vitepress/dist/api/interfaces/RawRuleProps.html +9 -9
  15. package/.vitepress/dist/api/interfaces/RawSubscription.html +9 -9
  16. package/.vitepress/dist/api/type-aliases/IArray.html +9 -9
  17. package/.vitepress/dist/api/type-aliases/Integer.html +9 -9
  18. package/.vitepress/dist/api/type-aliases/Position.html +9 -9
  19. package/.vitepress/dist/assets/{app.DaJeACYx.js → app.BGcf4c8V.js} +1 -1
  20. package/.vitepress/dist/assets/chunks/@localSearchIndexroot.WtjQ_uwK.js +1 -0
  21. package/.vitepress/dist/assets/chunks/{VPLocalSearchBox.CPv5jUiQ.js → VPLocalSearchBox.C8qYYfH-.js} +2 -2
  22. package/.vitepress/dist/assets/chunks/{theme.DUVDo9Tt.js → theme.XuVVFKVN.js} +1 -1
  23. package/.vitepress/dist/assets/{guide_example.md.DupfMIds.js → guide_example.md.qkY2Adjg.js} +1 -1
  24. package/.vitepress/dist/assets/{guide_example.md.DupfMIds.lean.js → guide_example.md.qkY2Adjg.lean.js} +1 -1
  25. package/.vitepress/dist/assets/{guide_external.md.C8e0UGoB.js → guide_external.md.D0Ckn3lX.js} +1 -1
  26. package/.vitepress/dist/assets/{guide_external.md.C8e0UGoB.lean.js → guide_external.md.D0Ckn3lX.lean.js} +1 -1
  27. package/.vitepress/dist/assets/{guide_faq.md.BAgWDOlY.js → guide_faq.md.BDBaGpTL.js} +1 -1
  28. package/.vitepress/dist/assets/{guide_faq.md.BAgWDOlY.lean.js → guide_faq.md.BDBaGpTL.lean.js} +1 -1
  29. package/.vitepress/dist/assets/{guide_index.md.DSRucdpD.js → guide_index.md.v996lkPD.js} +1 -1
  30. package/.vitepress/dist/assets/{guide_index.md.DSRucdpD.lean.js → guide_index.md.v996lkPD.lean.js} +1 -1
  31. package/.vitepress/dist/assets/{guide_node.md.GiHlaiKV.js → guide_node.md.Y9o0bFbA.js} +1 -1
  32. package/.vitepress/dist/assets/{guide_node.md.GiHlaiKV.lean.js → guide_node.md.Y9o0bFbA.lean.js} +1 -1
  33. package/.vitepress/dist/assets/{guide_optimize.md.D0ffWEat.js → guide_optimize.md.C68DwWCl.js} +1 -1
  34. package/.vitepress/dist/assets/{guide_optimize.md.D0ffWEat.lean.js → guide_optimize.md.C68DwWCl.lean.js} +1 -1
  35. package/.vitepress/dist/assets/{guide_selector.md.CCmHZTo-.js → guide_selector.md.JMmh32QK.js} +1 -1
  36. package/.vitepress/dist/assets/{guide_selector.md.CCmHZTo-.lean.js → guide_selector.md.JMmh32QK.lean.js} +1 -1
  37. package/.vitepress/dist/assets/{guide_snapshot.md.BzA6g7px.js → guide_snapshot.md.qJFyE8Sp.js} +1 -1
  38. package/.vitepress/dist/assets/{guide_snapshot.md.BzA6g7px.lean.js → guide_snapshot.md.qJFyE8Sp.lean.js} +1 -1
  39. package/.vitepress/dist/assets/{guide_subscription.md.BTHj0QPP.js → guide_subscription.md.BmZCK0wZ.js} +1 -1
  40. package/.vitepress/dist/assets/{guide_subscription.md.BTHj0QPP.lean.js → guide_subscription.md.BmZCK0wZ.lean.js} +1 -1
  41. package/.vitepress/dist/assets/{guide_what-is-gkd.md.DMBRnkKl.js → guide_what-is-gkd.md.Cq1cxziK.js} +1 -1
  42. package/.vitepress/dist/assets/{guide_what-is-gkd.md.DMBRnkKl.lean.js → guide_what-is-gkd.md.Cq1cxziK.lean.js} +1 -1
  43. package/.vitepress/dist/assets/{index.md.AY17Hivw.js → index.md.D5lHHJf4.js} +1 -1
  44. package/.vitepress/dist/assets/{index.md.AY17Hivw.lean.js → index.md.D5lHHJf4.lean.js} +1 -1
  45. package/.vitepress/dist/assets/style.B9Y-j_1n.css +1 -1
  46. package/.vitepress/dist/guide/example.html +10 -10
  47. package/.vitepress/dist/guide/external.html +10 -10
  48. package/.vitepress/dist/guide/faq.html +10 -10
  49. package/.vitepress/dist/guide/index.html +10 -10
  50. package/.vitepress/dist/guide/node.html +10 -10
  51. package/.vitepress/dist/guide/optimize.html +10 -10
  52. package/.vitepress/dist/guide/selector.html +10 -10
  53. package/.vitepress/dist/guide/snapshot.html +10 -10
  54. package/.vitepress/dist/guide/subscription.html +10 -10
  55. package/.vitepress/dist/guide/what-is-gkd.html +10 -10
  56. package/.vitepress/dist/hashmap.json +1 -1
  57. package/.vitepress/dist/index.html +10 -10
  58. package/package.json +1 -1
  59. package/.vitepress/dist/assets/chunks/@localSearchIndexroot.DfIWFVX7.js +0 -1
@@ -4,21 +4,21 @@
4
4
  <title>查询优化 | GKD</title>
5
5
  <meta name="description" content="自定义屏幕点击应用">
6
6
  <meta name="generator" content="VitePress v1.5.0">
7
- <link rel="preload stylesheet" href="https://registry.npmmirror.com/@gkd-kit/docs/0.0.1733380249049/files/.vitepress/dist/assets/style.B9Y-j_1n.css" as="style">
8
- <link rel="preload stylesheet" href="https://registry.npmmirror.com/@gkd-kit/docs/0.0.1733380249049/files/.vitepress/dist/vp-icons.css" as="style">
7
+ <link rel="preload stylesheet" href="https://registry.npmmirror.com/@gkd-kit/docs/0.0.1733586377741/files/.vitepress/dist/assets/style.B9Y-j_1n.css" as="style">
8
+ <link rel="preload stylesheet" href="https://registry.npmmirror.com/@gkd-kit/docs/0.0.1733586377741/files/.vitepress/dist/vp-icons.css" as="style">
9
9
 
10
- <script type="module" src="https://registry.npmmirror.com/@gkd-kit/docs/0.0.1733380249049/files/.vitepress/dist/assets/app.DaJeACYx.js"></script>
11
- <link rel="preload" href="https://registry.npmmirror.com/@gkd-kit/docs/0.0.1733380249049/files/.vitepress/dist/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
12
- <link rel="modulepreload" href="https://registry.npmmirror.com/@gkd-kit/docs/0.0.1733380249049/files/.vitepress/dist/assets/chunks/theme.DUVDo9Tt.js">
13
- <link rel="modulepreload" href="https://registry.npmmirror.com/@gkd-kit/docs/0.0.1733380249049/files/.vitepress/dist/assets/chunks/framework.CAQWXItu.js">
14
- <link rel="modulepreload" href="https://registry.npmmirror.com/@gkd-kit/docs/0.0.1733380249049/files/.vitepress/dist/assets/guide_optimize.md.D0ffWEat.lean.js">
15
- <link rel="icon" type="image/svg+xml" href="https://registry.npmmirror.com/@gkd-kit/docs/0.0.1733380249049/files/.vitepress/dist/icon.svg">
10
+ <script type="module" src="https://registry.npmmirror.com/@gkd-kit/docs/0.0.1733586377741/files/.vitepress/dist/assets/app.BGcf4c8V.js"></script>
11
+ <link rel="preload" href="https://registry.npmmirror.com/@gkd-kit/docs/0.0.1733586377741/files/.vitepress/dist/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
12
+ <link rel="modulepreload" href="https://registry.npmmirror.com/@gkd-kit/docs/0.0.1733586377741/files/.vitepress/dist/assets/chunks/theme.XuVVFKVN.js">
13
+ <link rel="modulepreload" href="https://registry.npmmirror.com/@gkd-kit/docs/0.0.1733586377741/files/.vitepress/dist/assets/chunks/framework.CAQWXItu.js">
14
+ <link rel="modulepreload" href="https://registry.npmmirror.com/@gkd-kit/docs/0.0.1733586377741/files/.vitepress/dist/assets/guide_optimize.md.C68DwWCl.lean.js">
15
+ <link rel="icon" type="image/svg+xml" href="https://registry.npmmirror.com/@gkd-kit/docs/0.0.1733586377741/files/.vitepress/dist/icon.svg">
16
16
  <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
17
17
  <script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
18
18
  </head>
19
19
  <body>
20
- <div id="app"><!--[--><div class="Layout" data-v-b8e7742e=""><!--[--><!--]--><!--[--><span tabindex="-1" data-v-d8386319=""></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-d8386319=""> Skip to content </a><!--]--><!----><header class="VPNav" data-v-b8e7742e="" data-v-46a95c78=""><div class="VPNavBar" data-v-46a95c78="" data-v-1ba5074f=""><div class="wrapper" data-v-1ba5074f=""><div class="container" data-v-1ba5074f=""><div class="title" data-v-1ba5074f=""><div class="VPNavBarTitle has-sidebar" data-v-1ba5074f="" data-v-64292b50=""><a class="title" href="/" data-v-64292b50=""><!--[--><!--]--><!--[--><img class="VPImage logo" src="https://registry.npmmirror.com/@gkd-kit/docs/0.0.1706371840771/files/.vitepress/dist/logo.svg" alt="" data-v-266ebd17=""><!--]--><span data-v-64292b50="">GKD</span><!--[--><!--]--></a></div></div><div class="content" data-v-1ba5074f=""><div class="content-body" data-v-1ba5074f=""><!--[--><!--]--><div class="VPNavBarSearch search" data-v-1ba5074f=""><!--[--><!----><div id="local-search"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-1ba5074f="" data-v-a3fe4bea=""><span id="main-nav-aria-label" class="visually-hidden" data-v-a3fe4bea=""> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink active" href="/guide/" tabindex="0" data-v-a3fe4bea="" data-v-1c8d25cc=""><!--[--><span data-v-1c8d25cc="">指引</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/api/" tabindex="0" data-v-a3fe4bea="" data-v-1c8d25cc=""><!--[--><span data-v-1c8d25cc="">API</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://i.gkd.li" target="_blank" rel="noreferrer" tabindex="0" data-v-a3fe4bea="" data-v-1c8d25cc=""><!--[--><span data-v-1c8d25cc="">审查工具</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://github.com/orgs/gkd-kit/discussions" target="_blank" rel="noreferrer" tabindex="0" data-v-a3fe4bea="" data-v-1c8d25cc=""><!--[--><span data-v-1c8d25cc="">讨论交流</span><!--]--></a><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-1ba5074f="" data-v-3d3ac355=""><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="" aria-checked="false" data-v-3d3ac355="" data-v-00dfa199="" data-v-ec96c959=""><span class="check" data-v-ec96c959=""><span class="icon" data-v-ec96c959=""><!--[--><span class="vpi-sun sun" data-v-00dfa199=""></span><span class="vpi-moon moon" data-v-00dfa199=""></span><!--]--></span></span></button></div><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-1ba5074f="" data-v-9c476ba5="" data-v-65e5c86f=""><!--[--><a class="VPSocialLink no-icon" href="https://github.com/gkd-kit" aria-label="github" target="_blank" rel="noopener" data-v-65e5c86f="" data-v-da506c84=""><span class="vpi-social-github"></span></a><!--]--></div><div class="VPFlyout VPNavBarExtra extra" data-v-1ba5074f="" data-v-68958039="" data-v-ac80e421=""><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-ac80e421=""><span class="vpi-more-horizontal icon" data-v-ac80e421=""></span></button><div class="menu" data-v-ac80e421=""><div class="VPMenu" data-v-ac80e421="" data-v-ce3f3167=""><!----><!--[--><!--[--><!----><div class="group" data-v-68958039=""><div class="item appearance" data-v-68958039=""><p class="label" data-v-68958039="">深色主题</p><div class="appearance-action" data-v-68958039=""><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="" aria-checked="false" data-v-68958039="" data-v-00dfa199="" data-v-ec96c959=""><span class="check" data-v-ec96c959=""><span class="icon" data-v-ec96c959=""><!--[--><span class="vpi-sun sun" data-v-00dfa199=""></span><span class="vpi-moon moon" data-v-00dfa199=""></span><!--]--></span></span></button></div></div></div><div class="group" data-v-68958039=""><div class="item social-links" data-v-68958039=""><div class="VPSocialLinks social-links-list" data-v-68958039="" data-v-65e5c86f=""><!--[--><a class="VPSocialLink no-icon" href="https://github.com/gkd-kit" aria-label="github" target="_blank" rel="noopener" data-v-65e5c86f="" data-v-da506c84=""><span class="vpi-social-github"></span></a><!--]--></div></div></div><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-1ba5074f="" data-v-328bb125=""><span class="container" data-v-328bb125=""><span class="top" data-v-328bb125=""></span><span class="middle" data-v-328bb125=""></span><span class="bottom" data-v-328bb125=""></span></span></button></div></div></div></div><div class="divider" data-v-1ba5074f=""><div class="divider-line" data-v-1ba5074f=""></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-b8e7742e="" data-v-e49449d2=""><div class="container" data-v-e49449d2=""><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-e49449d2=""><span class="vpi-align-left menu-icon" data-v-e49449d2=""></span><span class="menu-text" data-v-e49449d2="">菜单</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-e49449d2="" data-v-fecb5f87=""><button data-v-fecb5f87="">回到顶部</button><!----></div></div></div><aside class="VPSidebar" data-v-b8e7742e="" data-v-3678c2fc=""><div class="curtain" data-v-3678c2fc=""></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-3678c2fc=""><span class="visually-hidden" id="sidebar-aria-label" data-v-3678c2fc=""> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-539315d8=""><section class="VPSidebarItem level-0" data-v-539315d8="" data-v-d5832562=""><div class="item" role="button" tabindex="0" data-v-d5832562=""><div class="indicator" data-v-d5832562=""></div><h2 class="text" data-v-d5832562="">指引</h2><!----></div><div class="items" data-v-d5832562=""><!--[--><div class="VPSidebarItem level-1 is-link" data-v-d5832562=""><div class="item" data-v-d5832562=""><div class="indicator" data-v-d5832562=""></div><a class="VPLink link link" href="/guide/what-is-gkd" data-v-d5832562=""><!--[--><p class="text" data-v-d5832562="">什么是 GKD?</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d5832562=""><div class="item" data-v-d5832562=""><div class="indicator" data-v-d5832562=""></div><a class="VPLink link link" href="/guide/" data-v-d5832562=""><!--[--><p class="text" data-v-d5832562="">开始使用</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d5832562=""><div class="item" data-v-d5832562=""><div class="indicator" data-v-d5832562=""></div><a class="VPLink link link" href="/guide/snapshot" data-v-d5832562=""><!--[--><p class="text" data-v-d5832562="">快照审查</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d5832562=""><div class="item" data-v-d5832562=""><div class="indicator" data-v-d5832562=""></div><a class="VPLink link link" href="/guide/subscription" data-v-d5832562=""><!--[--><p class="text" data-v-d5832562="">订阅规则</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d5832562=""><div class="item" data-v-d5832562=""><div class="indicator" data-v-d5832562=""></div><a class="VPLink link link" href="/guide/external" data-v-d5832562=""><!--[--><p class="text" data-v-d5832562="">外部交互</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d5832562=""><div class="item" data-v-d5832562=""><div class="indicator" data-v-d5832562=""></div><a class="VPLink link link" href="/guide/faq" data-v-d5832562=""><!--[--><p class="text" data-v-d5832562="">常见问题</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-539315d8=""><section class="VPSidebarItem level-0 has-active" data-v-539315d8="" data-v-d5832562=""><div class="item" role="button" tabindex="0" data-v-d5832562=""><div class="indicator" data-v-d5832562=""></div><h2 class="text" data-v-d5832562="">选择器</h2><!----></div><div class="items" data-v-d5832562=""><!--[--><div class="VPSidebarItem level-1 is-link" data-v-d5832562=""><div class="item" data-v-d5832562=""><div class="indicator" data-v-d5832562=""></div><a class="VPLink link link" href="/guide/selector" data-v-d5832562=""><!--[--><p class="text" data-v-d5832562="">语法介绍</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d5832562=""><div class="item" data-v-d5832562=""><div class="indicator" data-v-d5832562=""></div><a class="VPLink link link" href="/guide/node" data-v-d5832562=""><!--[--><p class="text" data-v-d5832562="">属性方法</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d5832562=""><div class="item" data-v-d5832562=""><div class="indicator" data-v-d5832562=""></div><a class="VPLink link link" href="/guide/example" data-v-d5832562=""><!--[--><p class="text" data-v-d5832562="">选择示例</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d5832562=""><div class="item" data-v-d5832562=""><div class="indicator" data-v-d5832562=""></div><a class="VPLink link link" href="/guide/optimize" data-v-d5832562=""><!--[--><p class="text" data-v-d5832562="">查询优化</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-b8e7742e="" data-v-53ce3a4b=""><div class="VPDoc has-sidebar has-aside" data-v-53ce3a4b="" data-v-7f5b4f5c=""><!--[--><!--]--><div class="container" data-v-7f5b4f5c=""><div class="aside" data-v-7f5b4f5c=""><div class="aside-curtain" data-v-7f5b4f5c=""></div><div class="aside-container" data-v-7f5b4f5c=""><div class="aside-content" data-v-7f5b4f5c=""><div class="VPDocAside" data-v-7f5b4f5c="" data-v-81573563=""><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-81573563="" data-v-1e1c0fbd=""><div class="content" data-v-1e1c0fbd=""><div class="outline-marker" data-v-1e1c0fbd=""></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-1e1c0fbd="">页面导航</div><ul class="VPDocOutlineItem root" data-v-1e1c0fbd="" data-v-480b7683=""><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-81573563=""></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-7f5b4f5c=""><div class="content-container" data-v-7f5b4f5c=""><!--[--><!--]--><main class="main" data-v-7f5b4f5c=""><div style="position:relative;" class="vp-doc _guide_optimize" data-v-7f5b4f5c=""><div><h1 id="title" tabindex="-1">查询优化 <a class="header-anchor" href="#title" aria-label="Permalink to &quot;查询优化 {#title}&quot;">​</a></h1><p>一些关于查询优化的说明</p><h2 id="query-root" tabindex="-1">查找根节点 <a class="header-anchor" href="#query-root" aria-label="Permalink to &quot;查找根节点 {#query-root}&quot;">​</a></h2><p>选择器通过满足下列格式的属性选择器标识根节点</p><ul><li><code>[parent=null]</code></li><li><code>A[id='xxx'][parent=null][text='xxx']</code></li></ul><p>即只需存在一个 <code>[parent=null]</code> 就满足条件, 以下是对此的优化</p><h3 id="enforce" tabindex="-1">主动查询 <a class="header-anchor" href="#enforce" aria-label="Permalink to &quot;主动查询 {#enforce}&quot;">​</a></h3><p>一般的选择器如 <code>LinearLayout &gt; TextView</code>, 选择器需要从 根节点/事件节点 使用深度先序顺序遍历子孙节点并判断是否满足条件</p><p>如果屏幕上有 n 个节点, 判断逻辑需要运行 n 次</p><p>但是如果选择器是类似 <code>TextView &lt;3 LinearLayout &lt;2 [parent=null]</code>, 由于在右侧标明了从根节点查找</p><p>因此上面的 <code>深度先序顺序遍历子孙节点</code> 将省略, 只进行一次判断, 不需要判断 n 次</p><p>但是如果你在子查询里使用 <code>&lt;&lt;n</code>, 例如 <code>TextView &lt;&lt;n [parent=null]</code></p><p>根据上面说明的优化, 虽然也只有一次判断, 但是由于 <code>&lt;&lt;n</code> 导致内部的子判断也是 n 次, 实际上没有优化判断次数</p><div class="tip custom-block github-alert"><p class="custom-block-title">提示</p><p>实际上从根节点开始匹配并且目标不是根节点的选择器如 <code>A &gt; B</code> 都可等价为 <code>A &gt; @B &lt;&lt;n [parent=null]</code></p></div><h3 id="ancestor" tabindex="-1">祖先节点 <a class="header-anchor" href="#ancestor" aria-label="Permalink to &quot;祖先节点 {#ancestor}&quot;">​</a></h3><p>在示例 <code>A &lt;3 [parent=null] &gt;n TextView</code> 中, 选择器找到 <code>TextView</code> 后, 根据 <code>&gt;n</code> 表示任意祖先节点</p><p>在默认情况下, 如果 <code>TextView</code> 的层级很深, 那必然需要多次调用 获取父节点 才能最终匹配</p><p>但是如果左侧的选择器是 <code>[parent=null] &gt;n</code>, 这表示找到根节点, 选择器此时不会去执行多次调用 获取父节点</p><p>在 GKD 内部, 根节点可以直接通过 API 获取, 因此 <code>[parent=null] &gt;n</code> 只需要调用一次方法</p><h2 id="fast-query" tabindex="-1">快速查询 <a class="header-anchor" href="#fast-query" aria-label="Permalink to &quot;快速查询 {#fast-query}&quot;">​</a></h2><div class="note custom-block github-alert"><p class="custom-block-title">注意</p><p>此优化需要设置 <a href="/api/interfaces/RawCommonProps#fastquery">fastQuery</a> 来启用<br> 并且节点在快照面板被标识 <code>可快速查找</code>, 否则查找不到</p></div><h3 id="query-scene" tabindex="-1">查询场景 <a class="header-anchor" href="#query-scene" aria-label="Permalink to &quot;查询场景 {#query-scene}&quot;">​</a></h3><p>一般情况下, 选择器 <code>[vid="name"]</code> 需要从 根节点/事件节点 使用深度先序顺序遍历子孙节点并判断是否满足条件</p><p>但是 Android 提供了如下两个快速获取节点的 Api</p><ul><li><a href="https://developer.android.google.cn/reference/android/view/accessibility/AccessibilityNodeInfo#findAccessibilityNodeInfosByViewId(java.lang.String)" target="_blank" rel="noreferrer">findAccessibilityNodeInfosByViewId</a></li><li><a href="https://developer.android.google.cn/reference/android/view/accessibility/AccessibilityNodeInfo#findAccessibilityNodeInfosByText(java.lang.String)" target="_blank" rel="noreferrer">findAccessibilityNodeInfosByText</a></li></ul><p>这使得可以通过 <code>id</code>/<code>vid</code>/<code>text</code> 直接获取子孙节点</p><p>对此我们需要规定符合特定条件的选择器来调用这些 Api 从而跳过手动遍历子孙节点</p><h3 id="rule-format" tabindex="-1">规定格式 <a class="header-anchor" href="#rule-format" aria-label="Permalink to &quot;规定格式 {#rule-format}&quot;">​</a></h3><p>所有 <code>末尾属性选择器</code>的<code>第一个属性选择表达式</code>符合下面的结构之一</p><ul><li><code>[id='abc']</code></li><li><code>[vid='abc']</code></li><li><code>[text='abc']</code></li><li><code>[text^='abc']</code></li><li><code>[text*='abc']</code></li><li><code>[text$='abc']</code></li></ul><p>或者使用 <code>||</code> 将它们连接形成的逻辑表达式也符合条件, 即如下格式</p><ul><li><code>[id='abc' || id='abc2']</code></li><li><code>[id='abc' || vid='abc' || text='abc' || text^='abc' || text*='abc' || text$='abc']</code></li></ul><p>这些规定的格式都是为了提取 <code>id</code>/<code>vid</code>/<code>text</code> 来调用上面的两个 Android Api</p><p>下面给出实际示例: ✅ 表示符合格式, ❎ 表示不符合格式</p><ul><li><code>A &gt; B + C[id='x'][childCount=2]</code> ✅</li><li><code>A &gt; B + C[childCount=2][id='x']</code> ❎</li><li><code>A &gt; B + C[id='x' || text='manbaout' || text*='ikun'][childCount=2]</code> ✅</li><li><code>A &gt; B + C[childCount=2][id='x' || text='manbaout' || text*='ikun']</code> ❎</li></ul><p>这样一个选择器只能在右侧使用快速查询, 为了在中间的子选择器也能使用</p><p>额外规定如果属性选择器如果符合上面格式并且右侧是 <code>&lt;&lt;n</code>, 也能在局部使用快速查找</p><p>示例 <code>A &gt; B + C[id='x'][childCount=2] &lt;&lt;n D</code> 中的 <code>C[id='x'][childCount=2] &lt;&lt;n</code> 可以使用局部快速查找</p><p>下面给出满足局部查询优化的示例: ✅ 表示符合格式, ❎ 表示不符合格式</p><ul><li><code>A &gt; B + C[id='x'][childCount=2] &lt;&lt;n D</code> ✅</li><li><code>A &gt; B + C[childCount=2][id='x'] &lt;&lt;n D</code> ❎</li></ul><p>上面介绍的是只有一个局部选择器的情况, 下面给出多个局部快速查找的的示例</p><p>如 <code>A &gt; C[id='x'] &lt;&lt;n D[id='y'] &lt;&lt;n E</code>, 其中的 <code>C[id='x'] &lt;&lt;n</code> 和 <code>D[id='y'] &lt;&lt;n</code> 都可以使用局部快速查找</p><div class="note custom-block github-alert"><p class="custom-block-title">注意</p><p>如果选择器不存在满足快速查找的格式, fastQuery 是否开启都不影响查询复杂度</p></div><h3 id="optimize-example" tabindex="-1">优化示例 <a class="header-anchor" href="#optimize-example" aria-label="Permalink to &quot;优化示例 {#optimize-example}&quot;">​</a></h3><p>以 <a href="https://i.gkd.li/i/16201605?gkd=W3ZpZD0iaW1hZ2UiXSA8PG4gW3ZpZD0icmVjeWNsZXJWaWV3Il0gPDxuIFt2aWQ9ImNvbnRlbnRfbGF5b3V0Il0" target="_blank" rel="noreferrer"><code>[vid="image"] &lt;&lt;n [vid="recyclerView"] &lt;&lt;n [vid="content_layout"]</code></a> 为例</p><p>上面的选择器存在 3 个快速查找优化</p><ul><li><code>[vid="content_layout"]</code> 从 根节点 优化查询找到 <code>content_layout</code></li><li><code>[vid="recyclerView"]</code> 从 <code>content_layout</code> 优化查询找到 <code>recyclerView</code></li><li><code>[vid="image"]</code> 从 <code>recyclerView</code> 优化查询找到 <code>image</code></li></ul><p>也就是只需要调用 <code>findAccessibilityNodeInfosByViewId</code> 3 次即可得到目标节点</p><p>如果是从根节点开始查询, 根据快照内的 选择器路径视图</p><ul><li><code>[vid="content_layout"]</code> 从 根节点 需要 7 次找到 <code>content_layout</code></li><li><code>[vid="recyclerView"]</code> 从 <code>content_layout</code> 需要 48 次找到 <code>recyclerView</code></li><li><code>[vid="image"]</code> 从 <code>recyclerView</code> 需要 44 次找到 <code>image</code></li></ul></div></div></main><footer class="VPDocFooter" data-v-7f5b4f5c="" data-v-777673f1=""><!--[--><!--]--><div class="edit-info" data-v-777673f1=""><div class="edit-link" data-v-777673f1=""><a class="VPLink link vp-external-link-icon no-icon edit-link-button" href="https://github.com/gkd-kit/docs/edit/main/docs/guide/optimize.md" target="_blank" rel="noreferrer" data-v-777673f1=""><!--[--><span class="vpi-square-pen edit-link-icon" data-v-777673f1=""></span> 为此页提供修改建议<!--]--></a></div><div class="last-updated" data-v-777673f1=""><p class="VPLastUpdated" data-v-777673f1="" data-v-019587cc="">最后更新于: <time datetime="2024-12-05T06:30:19.000Z" data-v-019587cc=""></time></p></div></div><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-777673f1=""><span class="visually-hidden" id="doc-footer-aria-label" data-v-777673f1="">Pager</span><div class="pager" data-v-777673f1=""><a class="VPLink link pager-link prev" href="/guide/example" data-v-777673f1=""><!--[--><span class="desc" data-v-777673f1="">上一页</span><span class="title" data-v-777673f1="">选择示例</span><!--]--></a></div><div class="pager" data-v-777673f1=""><!----></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter has-sidebar" data-v-b8e7742e="" data-v-79b2db86=""><div class="container" data-v-79b2db86=""><p class="message" data-v-79b2db86="">Released under the GPL-v3 License.</p><p class="copyright" data-v-79b2db86="">Copyright © 2024 GKD. All rights reserved</p></div></footer><!--[--><!--]--></div><!----><!----><!--]--></div>
21
- <script>window.__VP_HASH_MAP__=JSON.parse("{\"api_index.md\":\"DpXyfY1L\",\"api_interfaces_rawapp.md\":\"BpGr9CnK\",\"api_interfaces_rawappgroup.md\":\"DgTybHUK\",\"api_interfaces_rawapprule.md\":\"DXz0HCLH\",\"api_interfaces_rawappruleprops.md\":\"CmoqHafA\",\"api_interfaces_rawcategory.md\":\"CQlDJU2a\",\"api_interfaces_rawcommonprops.md\":\"C7Bm8Aiw\",\"api_interfaces_rawglobalapp.md\":\"DLvGUcr3\",\"api_interfaces_rawglobalgroup.md\":\"BauiRmV2\",\"api_interfaces_rawglobalrule.md\":\"CkRXFpc0\",\"api_interfaces_rawglobalruleprops.md\":\"CqorLHIT\",\"api_interfaces_rawgroupprops.md\":\"BKxdlrTw\",\"api_interfaces_rawruleprops.md\":\"Xpur0e3V\",\"api_interfaces_rawsubscription.md\":\"D6PNqAht\",\"api_type-aliases_iarray.md\":\"BlW_x7iw\",\"api_type-aliases_integer.md\":\"Cn7gzSLN\",\"api_type-aliases_position.md\":\"DStZhezQ\",\"guide_example.md\":\"DupfMIds\",\"guide_external.md\":\"C8e0UGoB\",\"guide_faq.md\":\"BAgWDOlY\",\"guide_index.md\":\"DSRucdpD\",\"guide_node.md\":\"GiHlaiKV\",\"guide_optimize.md\":\"D0ffWEat\",\"guide_selector.md\":\"CCmHZTo-\",\"guide_snapshot.md\":\"BzA6g7px\",\"guide_subscription.md\":\"BTHj0QPP\",\"guide_what-is-gkd.md\":\"DMBRnkKl\",\"index.md\":\"AY17Hivw\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"GKD\",\"description\":\"自定义屏幕点击应用\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"logo\":\"https://registry.npmmirror.com/@gkd-kit/docs/0.0.1706371840771/files/.vitepress/dist/logo.svg\",\"lastUpdatedText\":\"最后更新于\",\"outlineTitle\":\"页面导航\",\"returnToTopLabel\":\"回到顶部\",\"darkModeSwitchLabel\":\"深色主题\",\"sidebarMenuLabel\":\"菜单\",\"docFooter\":{\"prev\":\"上一页\",\"next\":\"下一页\"},\"outline\":[2,3],\"nav\":[{\"text\":\"指引\",\"link\":\"/guide/\",\"activeMatch\":\"/guide/\"},{\"text\":\"API\",\"link\":\"/api/\",\"activeMatch\":\"/api/\"},{\"text\":\"审查工具\",\"link\":\"https://i.gkd.li\"},{\"text\":\"讨论交流\",\"link\":\"https://github.com/orgs/gkd-kit/discussions\"}],\"sidebar\":{\"/guide/\":[{\"text\":\"指引\",\"items\":[{\"text\":\"什么是 GKD?\",\"link\":\"/guide/what-is-gkd\"},{\"text\":\"开始使用\",\"link\":\"/guide/\"},{\"text\":\"快照审查\",\"link\":\"/guide/snapshot\"},{\"text\":\"订阅规则\",\"link\":\"/guide/subscription\"},{\"text\":\"外部交互\",\"link\":\"/guide/external\"},{\"text\":\"常见问题\",\"link\":\"/guide/faq\"}]},{\"text\":\"选择器\",\"items\":[{\"text\":\"语法介绍\",\"link\":\"/guide/selector\"},{\"text\":\"属性方法\",\"link\":\"/guide/node\"},{\"text\":\"选择示例\",\"link\":\"/guide/example\"},{\"text\":\"查询优化\",\"link\":\"/guide/optimize\"}]}],\"/api/\":[{\"link\":\"/api/\",\"text\":\"API Reference\"},{\"text\":\"Interfaces\",\"items\":[{\"text\":\"RawSubscription\",\"link\":\"/api/interfaces/RawSubscription.md\"},{\"text\":\"RawApp\",\"link\":\"/api/interfaces/RawApp.md\"},{\"text\":\"RawGlobalGroup\",\"link\":\"/api/interfaces/RawGlobalGroup.md\"},{\"text\":\"RawCategory\",\"link\":\"/api/interfaces/RawCategory.md\"},{\"text\":\"RawAppRule\",\"link\":\"/api/interfaces/RawAppRule.md\"},{\"text\":\"RawAppGroup\",\"link\":\"/api/interfaces/RawAppGroup.md\"},{\"text\":\"RawGlobalRule\",\"link\":\"/api/interfaces/RawGlobalRule.md\"},{\"text\":\"RawGlobalApp\",\"link\":\"/api/interfaces/RawGlobalApp.md\"},{\"text\":\"RawCommonProps\",\"link\":\"/api/interfaces/RawCommonProps.md\"},{\"text\":\"RawRuleProps\",\"link\":\"/api/interfaces/RawRuleProps.md\"},{\"text\":\"RawGroupProps\",\"link\":\"/api/interfaces/RawGroupProps.md\"},{\"text\":\"RawAppRuleProps\",\"link\":\"/api/interfaces/RawAppRuleProps.md\"},{\"text\":\"RawGlobalRuleProps\",\"link\":\"/api/interfaces/RawGlobalRuleProps.md\"}]},{\"text\":\"Type Aliases\",\"items\":[{\"text\":\"Position\",\"link\":\"/api/type-aliases/Position.md\"},{\"text\":\"IArray\",\"link\":\"/api/type-aliases/IArray.md\"},{\"text\":\"Integer\",\"link\":\"/api/type-aliases/Integer.md\"}]}]},\"editLink\":{\"pattern\":\"https://github.com/gkd-kit/docs/edit/main/docs/:path\",\"text\":\"为此页提供修改建议\"},\"search\":{\"provider\":\"local\",\"options\":{}},\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/gkd-kit\"}],\"footer\":{\"message\":\"Released under the GPL-v3 License.\",\"copyright\":\"Copyright © 2024 GKD. All rights reserved\"}},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":true}");</script>
20
+ <div id="app"><!--[--><div class="Layout" data-v-b8e7742e=""><!--[--><!--]--><!--[--><span tabindex="-1" data-v-d8386319=""></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-d8386319=""> Skip to content </a><!--]--><!----><header class="VPNav" data-v-b8e7742e="" data-v-46a95c78=""><div class="VPNavBar" data-v-46a95c78="" data-v-1ba5074f=""><div class="wrapper" data-v-1ba5074f=""><div class="container" data-v-1ba5074f=""><div class="title" data-v-1ba5074f=""><div class="VPNavBarTitle has-sidebar" data-v-1ba5074f="" data-v-64292b50=""><a class="title" href="/" data-v-64292b50=""><!--[--><!--]--><!--[--><img class="VPImage logo" src="https://registry.npmmirror.com/@gkd-kit/docs/0.0.1706371840771/files/.vitepress/dist/logo.svg" alt="" data-v-266ebd17=""><!--]--><span data-v-64292b50="">GKD</span><!--[--><!--]--></a></div></div><div class="content" data-v-1ba5074f=""><div class="content-body" data-v-1ba5074f=""><!--[--><!--]--><div class="VPNavBarSearch search" data-v-1ba5074f=""><!--[--><!----><div id="local-search"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-1ba5074f="" data-v-a3fe4bea=""><span id="main-nav-aria-label" class="visually-hidden" data-v-a3fe4bea=""> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink active" href="/guide/" tabindex="0" data-v-a3fe4bea="" data-v-1c8d25cc=""><!--[--><span data-v-1c8d25cc="">指引</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/api/" tabindex="0" data-v-a3fe4bea="" data-v-1c8d25cc=""><!--[--><span data-v-1c8d25cc="">API</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://i.gkd.li" target="_blank" rel="noreferrer" tabindex="0" data-v-a3fe4bea="" data-v-1c8d25cc=""><!--[--><span data-v-1c8d25cc="">审查工具</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://github.com/orgs/gkd-kit/discussions" target="_blank" rel="noreferrer" tabindex="0" data-v-a3fe4bea="" data-v-1c8d25cc=""><!--[--><span data-v-1c8d25cc="">讨论交流</span><!--]--></a><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-1ba5074f="" data-v-3d3ac355=""><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="" aria-checked="false" data-v-3d3ac355="" data-v-00dfa199="" data-v-ec96c959=""><span class="check" data-v-ec96c959=""><span class="icon" data-v-ec96c959=""><!--[--><span class="vpi-sun sun" data-v-00dfa199=""></span><span class="vpi-moon moon" data-v-00dfa199=""></span><!--]--></span></span></button></div><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-1ba5074f="" data-v-9c476ba5="" data-v-65e5c86f=""><!--[--><a class="VPSocialLink no-icon" href="https://github.com/gkd-kit" aria-label="github" target="_blank" rel="noopener" data-v-65e5c86f="" data-v-da506c84=""><span class="vpi-social-github"></span></a><!--]--></div><div class="VPFlyout VPNavBarExtra extra" data-v-1ba5074f="" data-v-68958039="" data-v-ac80e421=""><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-ac80e421=""><span class="vpi-more-horizontal icon" data-v-ac80e421=""></span></button><div class="menu" data-v-ac80e421=""><div class="VPMenu" data-v-ac80e421="" data-v-ce3f3167=""><!----><!--[--><!--[--><!----><div class="group" data-v-68958039=""><div class="item appearance" data-v-68958039=""><p class="label" data-v-68958039="">深色主题</p><div class="appearance-action" data-v-68958039=""><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="" aria-checked="false" data-v-68958039="" data-v-00dfa199="" data-v-ec96c959=""><span class="check" data-v-ec96c959=""><span class="icon" data-v-ec96c959=""><!--[--><span class="vpi-sun sun" data-v-00dfa199=""></span><span class="vpi-moon moon" data-v-00dfa199=""></span><!--]--></span></span></button></div></div></div><div class="group" data-v-68958039=""><div class="item social-links" data-v-68958039=""><div class="VPSocialLinks social-links-list" data-v-68958039="" data-v-65e5c86f=""><!--[--><a class="VPSocialLink no-icon" href="https://github.com/gkd-kit" aria-label="github" target="_blank" rel="noopener" data-v-65e5c86f="" data-v-da506c84=""><span class="vpi-social-github"></span></a><!--]--></div></div></div><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-1ba5074f="" data-v-328bb125=""><span class="container" data-v-328bb125=""><span class="top" data-v-328bb125=""></span><span class="middle" data-v-328bb125=""></span><span class="bottom" data-v-328bb125=""></span></span></button></div></div></div></div><div class="divider" data-v-1ba5074f=""><div class="divider-line" data-v-1ba5074f=""></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-b8e7742e="" data-v-e49449d2=""><div class="container" data-v-e49449d2=""><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-e49449d2=""><span class="vpi-align-left menu-icon" data-v-e49449d2=""></span><span class="menu-text" data-v-e49449d2="">菜单</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-e49449d2="" data-v-fecb5f87=""><button data-v-fecb5f87="">回到顶部</button><!----></div></div></div><aside class="VPSidebar" data-v-b8e7742e="" data-v-3678c2fc=""><div class="curtain" data-v-3678c2fc=""></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-3678c2fc=""><span class="visually-hidden" id="sidebar-aria-label" data-v-3678c2fc=""> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-539315d8=""><section class="VPSidebarItem level-0" data-v-539315d8="" data-v-d5832562=""><div class="item" role="button" tabindex="0" data-v-d5832562=""><div class="indicator" data-v-d5832562=""></div><h2 class="text" data-v-d5832562="">指引</h2><!----></div><div class="items" data-v-d5832562=""><!--[--><div class="VPSidebarItem level-1 is-link" data-v-d5832562=""><div class="item" data-v-d5832562=""><div class="indicator" data-v-d5832562=""></div><a class="VPLink link link" href="/guide/what-is-gkd" data-v-d5832562=""><!--[--><p class="text" data-v-d5832562="">什么是 GKD?</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d5832562=""><div class="item" data-v-d5832562=""><div class="indicator" data-v-d5832562=""></div><a class="VPLink link link" href="/guide/" data-v-d5832562=""><!--[--><p class="text" data-v-d5832562="">开始使用</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d5832562=""><div class="item" data-v-d5832562=""><div class="indicator" data-v-d5832562=""></div><a class="VPLink link link" href="/guide/snapshot" data-v-d5832562=""><!--[--><p class="text" data-v-d5832562="">快照审查</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d5832562=""><div class="item" data-v-d5832562=""><div class="indicator" data-v-d5832562=""></div><a class="VPLink link link" href="/guide/subscription" data-v-d5832562=""><!--[--><p class="text" data-v-d5832562="">订阅规则</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d5832562=""><div class="item" data-v-d5832562=""><div class="indicator" data-v-d5832562=""></div><a class="VPLink link link" href="/guide/external" data-v-d5832562=""><!--[--><p class="text" data-v-d5832562="">外部交互</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d5832562=""><div class="item" data-v-d5832562=""><div class="indicator" data-v-d5832562=""></div><a class="VPLink link link" href="/guide/faq" data-v-d5832562=""><!--[--><p class="text" data-v-d5832562="">常见问题</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-539315d8=""><section class="VPSidebarItem level-0 has-active" data-v-539315d8="" data-v-d5832562=""><div class="item" role="button" tabindex="0" data-v-d5832562=""><div class="indicator" data-v-d5832562=""></div><h2 class="text" data-v-d5832562="">选择器</h2><!----></div><div class="items" data-v-d5832562=""><!--[--><div class="VPSidebarItem level-1 is-link" data-v-d5832562=""><div class="item" data-v-d5832562=""><div class="indicator" data-v-d5832562=""></div><a class="VPLink link link" href="/guide/selector" data-v-d5832562=""><!--[--><p class="text" data-v-d5832562="">语法介绍</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d5832562=""><div class="item" data-v-d5832562=""><div class="indicator" data-v-d5832562=""></div><a class="VPLink link link" href="/guide/node" data-v-d5832562=""><!--[--><p class="text" data-v-d5832562="">属性方法</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d5832562=""><div class="item" data-v-d5832562=""><div class="indicator" data-v-d5832562=""></div><a class="VPLink link link" href="/guide/example" data-v-d5832562=""><!--[--><p class="text" data-v-d5832562="">选择示例</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d5832562=""><div class="item" data-v-d5832562=""><div class="indicator" data-v-d5832562=""></div><a class="VPLink link link" href="/guide/optimize" data-v-d5832562=""><!--[--><p class="text" data-v-d5832562="">查询优化</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-b8e7742e="" data-v-53ce3a4b=""><div class="VPDoc has-sidebar has-aside" data-v-53ce3a4b="" data-v-7f5b4f5c=""><!--[--><!--]--><div class="container" data-v-7f5b4f5c=""><div class="aside" data-v-7f5b4f5c=""><div class="aside-curtain" data-v-7f5b4f5c=""></div><div class="aside-container" data-v-7f5b4f5c=""><div class="aside-content" data-v-7f5b4f5c=""><div class="VPDocAside" data-v-7f5b4f5c="" data-v-81573563=""><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-81573563="" data-v-1e1c0fbd=""><div class="content" data-v-1e1c0fbd=""><div class="outline-marker" data-v-1e1c0fbd=""></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-1e1c0fbd="">页面导航</div><ul class="VPDocOutlineItem root" data-v-1e1c0fbd="" data-v-480b7683=""><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-81573563=""></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-7f5b4f5c=""><div class="content-container" data-v-7f5b4f5c=""><!--[--><!--]--><main class="main" data-v-7f5b4f5c=""><div style="position:relative;" class="vp-doc _guide_optimize" data-v-7f5b4f5c=""><div><h1 id="title" tabindex="-1">查询优化 <a class="header-anchor" href="#title" aria-label="Permalink to &quot;查询优化 {#title}&quot;">​</a></h1><p>一些关于查询优化的说明</p><h2 id="query-root" tabindex="-1">查找根节点 <a class="header-anchor" href="#query-root" aria-label="Permalink to &quot;查找根节点 {#query-root}&quot;">​</a></h2><p>选择器通过满足下列格式的属性选择器标识根节点</p><ul><li><code>[parent=null]</code></li><li><code>A[id='xxx'][parent=null][text='xxx']</code></li></ul><p>即只需存在一个 <code>[parent=null]</code> 就满足条件, 以下是对此的优化</p><h3 id="enforce" tabindex="-1">主动查询 <a class="header-anchor" href="#enforce" aria-label="Permalink to &quot;主动查询 {#enforce}&quot;">​</a></h3><p>一般的选择器如 <code>LinearLayout &gt; TextView</code>, 选择器需要从 根节点/事件节点 使用深度先序顺序遍历子孙节点并判断是否满足条件</p><p>如果屏幕上有 n 个节点, 判断逻辑需要运行 n 次</p><p>但是如果选择器是类似 <code>TextView &lt;3 LinearLayout &lt;2 [parent=null]</code>, 由于在右侧标明了从根节点查找</p><p>因此上面的 <code>深度先序顺序遍历子孙节点</code> 将省略, 只进行一次判断, 不需要判断 n 次</p><p>但是如果你在子查询里使用 <code>&lt;&lt;n</code>, 例如 <code>TextView &lt;&lt;n [parent=null]</code></p><p>根据上面说明的优化, 虽然也只有一次判断, 但是由于 <code>&lt;&lt;n</code> 导致内部的子判断也是 n 次, 实际上没有优化判断次数</p><div class="tip custom-block github-alert"><p class="custom-block-title">提示</p><p>实际上从根节点开始匹配并且目标不是根节点的选择器如 <code>A &gt; B</code> 都可等价为 <code>A &gt; @B &lt;&lt;n [parent=null]</code></p></div><h3 id="ancestor" tabindex="-1">祖先节点 <a class="header-anchor" href="#ancestor" aria-label="Permalink to &quot;祖先节点 {#ancestor}&quot;">​</a></h3><p>在示例 <code>A &lt;3 [parent=null] &gt;n TextView</code> 中, 选择器找到 <code>TextView</code> 后, 根据 <code>&gt;n</code> 表示任意祖先节点</p><p>在默认情况下, 如果 <code>TextView</code> 的层级很深, 那必然需要多次调用 获取父节点 才能最终匹配</p><p>但是如果左侧的选择器是 <code>[parent=null] &gt;n</code>, 这表示找到根节点, 选择器此时不会去执行多次调用 获取父节点</p><p>在 GKD 内部, 根节点可以直接通过 API 获取, 因此 <code>[parent=null] &gt;n</code> 只需要调用一次方法</p><h2 id="fast-query" tabindex="-1">快速查询 <a class="header-anchor" href="#fast-query" aria-label="Permalink to &quot;快速查询 {#fast-query}&quot;">​</a></h2><div class="note custom-block github-alert"><p class="custom-block-title">注意</p><p>此优化需要设置 <a href="/api/interfaces/RawCommonProps#fastquery">fastQuery</a> 来启用<br> 并且节点在快照面板被标识 <code>可快速查找</code>, 否则查找不到</p></div><h3 id="query-scene" tabindex="-1">查询场景 <a class="header-anchor" href="#query-scene" aria-label="Permalink to &quot;查询场景 {#query-scene}&quot;">​</a></h3><p>一般情况下, 选择器 <code>[vid="name"]</code> 需要从 根节点/事件节点 使用深度先序顺序遍历子孙节点并判断是否满足条件</p><p>但是 Android 提供了如下两个快速获取节点的 Api</p><ul><li><a href="https://developer.android.google.cn/reference/android/view/accessibility/AccessibilityNodeInfo#findAccessibilityNodeInfosByViewId(java.lang.String)" target="_blank" rel="noreferrer">findAccessibilityNodeInfosByViewId</a></li><li><a href="https://developer.android.google.cn/reference/android/view/accessibility/AccessibilityNodeInfo#findAccessibilityNodeInfosByText(java.lang.String)" target="_blank" rel="noreferrer">findAccessibilityNodeInfosByText</a></li></ul><p>这使得可以通过 <code>id</code>/<code>vid</code>/<code>text</code> 直接获取子孙节点</p><p>对此我们需要规定符合特定条件的选择器来调用这些 Api 从而跳过手动遍历子孙节点</p><h3 id="rule-format" tabindex="-1">规定格式 <a class="header-anchor" href="#rule-format" aria-label="Permalink to &quot;规定格式 {#rule-format}&quot;">​</a></h3><p>所有 <code>末尾属性选择器</code>的<code>第一个属性选择表达式</code>符合下面的结构之一</p><ul><li><code>[id='abc']</code></li><li><code>[vid='abc']</code></li><li><code>[text='abc']</code></li><li><code>[text^='abc']</code></li><li><code>[text*='abc']</code></li><li><code>[text$='abc']</code></li></ul><p>或者使用 <code>||</code> 将它们连接形成的逻辑表达式也符合条件, 即如下格式</p><ul><li><code>[id='abc' || id='abc2']</code></li><li><code>[id='abc' || vid='abc' || text='abc' || text^='abc' || text*='abc' || text$='abc']</code></li></ul><p>这些规定的格式都是为了提取 <code>id</code>/<code>vid</code>/<code>text</code> 来调用上面的两个 Android Api</p><p>下面给出实际示例: ✅ 表示符合格式, ❎ 表示不符合格式</p><ul><li><code>A &gt; B + C[id='x'][childCount=2]</code> ✅</li><li><code>A &gt; B + C[childCount=2][id='x']</code> ❎</li><li><code>A &gt; B + C[id='x' || text='manbaout' || text*='ikun'][childCount=2]</code> ✅</li><li><code>A &gt; B + C[childCount=2][id='x' || text='manbaout' || text*='ikun']</code> ❎</li></ul><p>这样一个选择器只能在右侧使用快速查询, 为了在中间的子选择器也能使用</p><p>额外规定如果属性选择器如果符合上面格式并且右侧是 <code>&lt;&lt;n</code>, 也能在局部使用快速查找</p><p>示例 <code>A &gt; B + C[id='x'][childCount=2] &lt;&lt;n D</code> 中的 <code>C[id='x'][childCount=2] &lt;&lt;n</code> 可以使用局部快速查找</p><p>下面给出满足局部查询优化的示例: ✅ 表示符合格式, ❎ 表示不符合格式</p><ul><li><code>A &gt; B + C[id='x'][childCount=2] &lt;&lt;n D</code> ✅</li><li><code>A &gt; B + C[childCount=2][id='x'] &lt;&lt;n D</code> ❎</li></ul><p>上面介绍的是只有一个局部选择器的情况, 下面给出多个局部快速查找的的示例</p><p>如 <code>A &gt; C[id='x'] &lt;&lt;n D[id='y'] &lt;&lt;n E</code>, 其中的 <code>C[id='x'] &lt;&lt;n</code> 和 <code>D[id='y'] &lt;&lt;n</code> 都可以使用局部快速查找</p><div class="note custom-block github-alert"><p class="custom-block-title">注意</p><p>如果选择器不存在满足快速查找的格式, fastQuery 是否开启都不影响查询复杂度</p></div><h3 id="optimize-example" tabindex="-1">优化示例 <a class="header-anchor" href="#optimize-example" aria-label="Permalink to &quot;优化示例 {#optimize-example}&quot;">​</a></h3><p>以 <a href="https://i.gkd.li/i/16201605?gkd=W3ZpZD0iaW1hZ2UiXSA8PG4gW3ZpZD0icmVjeWNsZXJWaWV3Il0gPDxuIFt2aWQ9ImNvbnRlbnRfbGF5b3V0Il0" target="_blank" rel="noreferrer"><code>[vid="image"] &lt;&lt;n [vid="recyclerView"] &lt;&lt;n [vid="content_layout"]</code></a> 为例</p><p>上面的选择器存在 3 个快速查找优化</p><ul><li><code>[vid="content_layout"]</code> 从 根节点 优化查询找到 <code>content_layout</code></li><li><code>[vid="recyclerView"]</code> 从 <code>content_layout</code> 优化查询找到 <code>recyclerView</code></li><li><code>[vid="image"]</code> 从 <code>recyclerView</code> 优化查询找到 <code>image</code></li></ul><p>也就是只需要调用 <code>findAccessibilityNodeInfosByViewId</code> 3 次即可得到目标节点</p><p>如果是从根节点开始查询, 根据快照内的 选择器路径视图</p><ul><li><code>[vid="content_layout"]</code> 从 根节点 需要 7 次找到 <code>content_layout</code></li><li><code>[vid="recyclerView"]</code> 从 <code>content_layout</code> 需要 48 次找到 <code>recyclerView</code></li><li><code>[vid="image"]</code> 从 <code>recyclerView</code> 需要 44 次找到 <code>image</code></li></ul></div></div></main><footer class="VPDocFooter" data-v-7f5b4f5c="" data-v-777673f1=""><!--[--><!--]--><div class="edit-info" data-v-777673f1=""><div class="edit-link" data-v-777673f1=""><a class="VPLink link vp-external-link-icon no-icon edit-link-button" href="https://github.com/gkd-kit/docs/edit/main/docs/guide/optimize.md" target="_blank" rel="noreferrer" data-v-777673f1=""><!--[--><span class="vpi-square-pen edit-link-icon" data-v-777673f1=""></span> 为此页提供修改建议<!--]--></a></div><div class="last-updated" data-v-777673f1=""><p class="VPLastUpdated" data-v-777673f1="" data-v-019587cc="">最后更新于: <time datetime="2024-12-06T01:23:38.000Z" data-v-019587cc=""></time></p></div></div><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-777673f1=""><span class="visually-hidden" id="doc-footer-aria-label" data-v-777673f1="">Pager</span><div class="pager" data-v-777673f1=""><a class="VPLink link pager-link prev" href="/guide/example" data-v-777673f1=""><!--[--><span class="desc" data-v-777673f1="">上一页</span><span class="title" data-v-777673f1="">选择示例</span><!--]--></a></div><div class="pager" data-v-777673f1=""><!----></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter has-sidebar" data-v-b8e7742e="" data-v-79b2db86=""><div class="container" data-v-79b2db86=""><p class="message" data-v-79b2db86="">Released under the GPL-v3 License.</p><p class="copyright" data-v-79b2db86="">Copyright © 2024 GKD. All rights reserved</p></div></footer><!--[--><!--]--></div><!----><!----><!--]--></div>
21
+ <script>window.__VP_HASH_MAP__=JSON.parse("{\"api_index.md\":\"DpXyfY1L\",\"api_interfaces_rawapp.md\":\"BpGr9CnK\",\"api_interfaces_rawappgroup.md\":\"DgTybHUK\",\"api_interfaces_rawapprule.md\":\"DXz0HCLH\",\"api_interfaces_rawappruleprops.md\":\"CmoqHafA\",\"api_interfaces_rawcategory.md\":\"CQlDJU2a\",\"api_interfaces_rawcommonprops.md\":\"C7Bm8Aiw\",\"api_interfaces_rawglobalapp.md\":\"DLvGUcr3\",\"api_interfaces_rawglobalgroup.md\":\"BauiRmV2\",\"api_interfaces_rawglobalrule.md\":\"CkRXFpc0\",\"api_interfaces_rawglobalruleprops.md\":\"CqorLHIT\",\"api_interfaces_rawgroupprops.md\":\"BKxdlrTw\",\"api_interfaces_rawruleprops.md\":\"Xpur0e3V\",\"api_interfaces_rawsubscription.md\":\"D6PNqAht\",\"api_type-aliases_iarray.md\":\"BlW_x7iw\",\"api_type-aliases_integer.md\":\"Cn7gzSLN\",\"api_type-aliases_position.md\":\"DStZhezQ\",\"guide_example.md\":\"qkY2Adjg\",\"guide_external.md\":\"D0Ckn3lX\",\"guide_faq.md\":\"BDBaGpTL\",\"guide_index.md\":\"v996lkPD\",\"guide_node.md\":\"Y9o0bFbA\",\"guide_optimize.md\":\"C68DwWCl\",\"guide_selector.md\":\"JMmh32QK\",\"guide_snapshot.md\":\"qJFyE8Sp\",\"guide_subscription.md\":\"BmZCK0wZ\",\"guide_what-is-gkd.md\":\"Cq1cxziK\",\"index.md\":\"D5lHHJf4\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"GKD\",\"description\":\"自定义屏幕点击应用\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"logo\":\"https://registry.npmmirror.com/@gkd-kit/docs/0.0.1706371840771/files/.vitepress/dist/logo.svg\",\"lastUpdatedText\":\"最后更新于\",\"outlineTitle\":\"页面导航\",\"returnToTopLabel\":\"回到顶部\",\"darkModeSwitchLabel\":\"深色主题\",\"sidebarMenuLabel\":\"菜单\",\"docFooter\":{\"prev\":\"上一页\",\"next\":\"下一页\"},\"outline\":[2,3],\"nav\":[{\"text\":\"指引\",\"link\":\"/guide/\",\"activeMatch\":\"/guide/\"},{\"text\":\"API\",\"link\":\"/api/\",\"activeMatch\":\"/api/\"},{\"text\":\"审查工具\",\"link\":\"https://i.gkd.li\"},{\"text\":\"讨论交流\",\"link\":\"https://github.com/orgs/gkd-kit/discussions\"}],\"sidebar\":{\"/guide/\":[{\"text\":\"指引\",\"items\":[{\"text\":\"什么是 GKD?\",\"link\":\"/guide/what-is-gkd\"},{\"text\":\"开始使用\",\"link\":\"/guide/\"},{\"text\":\"快照审查\",\"link\":\"/guide/snapshot\"},{\"text\":\"订阅规则\",\"link\":\"/guide/subscription\"},{\"text\":\"外部交互\",\"link\":\"/guide/external\"},{\"text\":\"常见问题\",\"link\":\"/guide/faq\"}]},{\"text\":\"选择器\",\"items\":[{\"text\":\"语法介绍\",\"link\":\"/guide/selector\"},{\"text\":\"属性方法\",\"link\":\"/guide/node\"},{\"text\":\"选择示例\",\"link\":\"/guide/example\"},{\"text\":\"查询优化\",\"link\":\"/guide/optimize\"}]}],\"/api/\":[{\"link\":\"/api/\",\"text\":\"API Reference\"},{\"text\":\"Interfaces\",\"items\":[{\"text\":\"RawSubscription\",\"link\":\"/api/interfaces/RawSubscription.md\"},{\"text\":\"RawApp\",\"link\":\"/api/interfaces/RawApp.md\"},{\"text\":\"RawGlobalGroup\",\"link\":\"/api/interfaces/RawGlobalGroup.md\"},{\"text\":\"RawCategory\",\"link\":\"/api/interfaces/RawCategory.md\"},{\"text\":\"RawAppRule\",\"link\":\"/api/interfaces/RawAppRule.md\"},{\"text\":\"RawAppGroup\",\"link\":\"/api/interfaces/RawAppGroup.md\"},{\"text\":\"RawGlobalRule\",\"link\":\"/api/interfaces/RawGlobalRule.md\"},{\"text\":\"RawGlobalApp\",\"link\":\"/api/interfaces/RawGlobalApp.md\"},{\"text\":\"RawCommonProps\",\"link\":\"/api/interfaces/RawCommonProps.md\"},{\"text\":\"RawRuleProps\",\"link\":\"/api/interfaces/RawRuleProps.md\"},{\"text\":\"RawGroupProps\",\"link\":\"/api/interfaces/RawGroupProps.md\"},{\"text\":\"RawAppRuleProps\",\"link\":\"/api/interfaces/RawAppRuleProps.md\"},{\"text\":\"RawGlobalRuleProps\",\"link\":\"/api/interfaces/RawGlobalRuleProps.md\"}]},{\"text\":\"Type Aliases\",\"items\":[{\"text\":\"Position\",\"link\":\"/api/type-aliases/Position.md\"},{\"text\":\"IArray\",\"link\":\"/api/type-aliases/IArray.md\"},{\"text\":\"Integer\",\"link\":\"/api/type-aliases/Integer.md\"}]}]},\"editLink\":{\"pattern\":\"https://github.com/gkd-kit/docs/edit/main/docs/:path\",\"text\":\"为此页提供修改建议\"},\"search\":{\"provider\":\"local\",\"options\":{}},\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/gkd-kit\"}],\"footer\":{\"message\":\"Released under the GPL-v3 License.\",\"copyright\":\"Copyright © 2024 GKD. All rights reserved\"}},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":true}");</script>
22
22
 
23
23
 
24
24
  </body></html>
@@ -4,15 +4,15 @@
4
4
  <title>选择器 | GKD</title>
5
5
  <meta name="description" content="自定义屏幕点击应用">
6
6
  <meta name="generator" content="VitePress v1.5.0">
7
- <link rel="preload stylesheet" href="https://registry.npmmirror.com/@gkd-kit/docs/0.0.1733380249049/files/.vitepress/dist/assets/style.B9Y-j_1n.css" as="style">
8
- <link rel="preload stylesheet" href="https://registry.npmmirror.com/@gkd-kit/docs/0.0.1733380249049/files/.vitepress/dist/vp-icons.css" as="style">
7
+ <link rel="preload stylesheet" href="https://registry.npmmirror.com/@gkd-kit/docs/0.0.1733586377741/files/.vitepress/dist/assets/style.B9Y-j_1n.css" as="style">
8
+ <link rel="preload stylesheet" href="https://registry.npmmirror.com/@gkd-kit/docs/0.0.1733586377741/files/.vitepress/dist/vp-icons.css" as="style">
9
9
 
10
- <script type="module" src="https://registry.npmmirror.com/@gkd-kit/docs/0.0.1733380249049/files/.vitepress/dist/assets/app.DaJeACYx.js"></script>
11
- <link rel="preload" href="https://registry.npmmirror.com/@gkd-kit/docs/0.0.1733380249049/files/.vitepress/dist/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
12
- <link rel="modulepreload" href="https://registry.npmmirror.com/@gkd-kit/docs/0.0.1733380249049/files/.vitepress/dist/assets/chunks/theme.DUVDo9Tt.js">
13
- <link rel="modulepreload" href="https://registry.npmmirror.com/@gkd-kit/docs/0.0.1733380249049/files/.vitepress/dist/assets/chunks/framework.CAQWXItu.js">
14
- <link rel="modulepreload" href="https://registry.npmmirror.com/@gkd-kit/docs/0.0.1733380249049/files/.vitepress/dist/assets/guide_selector.md.CCmHZTo-.lean.js">
15
- <link rel="icon" type="image/svg+xml" href="https://registry.npmmirror.com/@gkd-kit/docs/0.0.1733380249049/files/.vitepress/dist/icon.svg">
10
+ <script type="module" src="https://registry.npmmirror.com/@gkd-kit/docs/0.0.1733586377741/files/.vitepress/dist/assets/app.BGcf4c8V.js"></script>
11
+ <link rel="preload" href="https://registry.npmmirror.com/@gkd-kit/docs/0.0.1733586377741/files/.vitepress/dist/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
12
+ <link rel="modulepreload" href="https://registry.npmmirror.com/@gkd-kit/docs/0.0.1733586377741/files/.vitepress/dist/assets/chunks/theme.XuVVFKVN.js">
13
+ <link rel="modulepreload" href="https://registry.npmmirror.com/@gkd-kit/docs/0.0.1733586377741/files/.vitepress/dist/assets/chunks/framework.CAQWXItu.js">
14
+ <link rel="modulepreload" href="https://registry.npmmirror.com/@gkd-kit/docs/0.0.1733586377741/files/.vitepress/dist/assets/guide_selector.md.JMmh32QK.lean.js">
15
+ <link rel="icon" type="image/svg+xml" href="https://registry.npmmirror.com/@gkd-kit/docs/0.0.1733586377741/files/.vitepress/dist/icon.svg">
16
16
  <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
17
17
  <script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
18
18
  </head>
@@ -28,8 +28,8 @@
28
28
  <span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> matches</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'TextView[text~="</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\\\\\\\</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"]'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
29
29
  <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>实现和上面相同的结果, 即用 <code>=</code> 匹配一个 <code>\</code> 字符, 最终规则应该写成</p><div class="language-json5 vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">json5</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span></span>
30
30
  <span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> matches</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'TextView[text="</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\\\</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"]'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
31
- <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>类似的问题 <a href="https://github.com/gkd-kit/gkd/issues/603" target="_blank" rel="noreferrer">gkd-kit/gkd#603</a></p></div></div></main><footer class="VPDocFooter" data-v-7f5b4f5c="" data-v-777673f1=""><!--[--><!--]--><div class="edit-info" data-v-777673f1=""><div class="edit-link" data-v-777673f1=""><a class="VPLink link vp-external-link-icon no-icon edit-link-button" href="https://github.com/gkd-kit/docs/edit/main/docs/guide/selector.md" target="_blank" rel="noreferrer" data-v-777673f1=""><!--[--><span class="vpi-square-pen edit-link-icon" data-v-777673f1=""></span> 为此页提供修改建议<!--]--></a></div><div class="last-updated" data-v-777673f1=""><p class="VPLastUpdated" data-v-777673f1="" data-v-019587cc="">最后更新于: <time datetime="2024-12-05T06:30:19.000Z" data-v-019587cc=""></time></p></div></div><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-777673f1=""><span class="visually-hidden" id="doc-footer-aria-label" data-v-777673f1="">Pager</span><div class="pager" data-v-777673f1=""><a class="VPLink link pager-link prev" href="/guide/faq" data-v-777673f1=""><!--[--><span class="desc" data-v-777673f1="">上一页</span><span class="title" data-v-777673f1="">常见问题</span><!--]--></a></div><div class="pager" data-v-777673f1=""><a class="VPLink link pager-link next" href="/guide/node" data-v-777673f1=""><!--[--><span class="desc" data-v-777673f1="">下一页</span><span class="title" data-v-777673f1="">属性方法</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter has-sidebar" data-v-b8e7742e="" data-v-79b2db86=""><div class="container" data-v-79b2db86=""><p class="message" data-v-79b2db86="">Released under the GPL-v3 License.</p><p class="copyright" data-v-79b2db86="">Copyright © 2024 GKD. All rights reserved</p></div></footer><!--[--><!--]--></div><!----><!----><!--]--></div>
32
- <script>window.__VP_HASH_MAP__=JSON.parse("{\"api_index.md\":\"DpXyfY1L\",\"api_interfaces_rawapp.md\":\"BpGr9CnK\",\"api_interfaces_rawappgroup.md\":\"DgTybHUK\",\"api_interfaces_rawapprule.md\":\"DXz0HCLH\",\"api_interfaces_rawappruleprops.md\":\"CmoqHafA\",\"api_interfaces_rawcategory.md\":\"CQlDJU2a\",\"api_interfaces_rawcommonprops.md\":\"C7Bm8Aiw\",\"api_interfaces_rawglobalapp.md\":\"DLvGUcr3\",\"api_interfaces_rawglobalgroup.md\":\"BauiRmV2\",\"api_interfaces_rawglobalrule.md\":\"CkRXFpc0\",\"api_interfaces_rawglobalruleprops.md\":\"CqorLHIT\",\"api_interfaces_rawgroupprops.md\":\"BKxdlrTw\",\"api_interfaces_rawruleprops.md\":\"Xpur0e3V\",\"api_interfaces_rawsubscription.md\":\"D6PNqAht\",\"api_type-aliases_iarray.md\":\"BlW_x7iw\",\"api_type-aliases_integer.md\":\"Cn7gzSLN\",\"api_type-aliases_position.md\":\"DStZhezQ\",\"guide_example.md\":\"DupfMIds\",\"guide_external.md\":\"C8e0UGoB\",\"guide_faq.md\":\"BAgWDOlY\",\"guide_index.md\":\"DSRucdpD\",\"guide_node.md\":\"GiHlaiKV\",\"guide_optimize.md\":\"D0ffWEat\",\"guide_selector.md\":\"CCmHZTo-\",\"guide_snapshot.md\":\"BzA6g7px\",\"guide_subscription.md\":\"BTHj0QPP\",\"guide_what-is-gkd.md\":\"DMBRnkKl\",\"index.md\":\"AY17Hivw\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"GKD\",\"description\":\"自定义屏幕点击应用\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"logo\":\"https://registry.npmmirror.com/@gkd-kit/docs/0.0.1706371840771/files/.vitepress/dist/logo.svg\",\"lastUpdatedText\":\"最后更新于\",\"outlineTitle\":\"页面导航\",\"returnToTopLabel\":\"回到顶部\",\"darkModeSwitchLabel\":\"深色主题\",\"sidebarMenuLabel\":\"菜单\",\"docFooter\":{\"prev\":\"上一页\",\"next\":\"下一页\"},\"outline\":[2,3],\"nav\":[{\"text\":\"指引\",\"link\":\"/guide/\",\"activeMatch\":\"/guide/\"},{\"text\":\"API\",\"link\":\"/api/\",\"activeMatch\":\"/api/\"},{\"text\":\"审查工具\",\"link\":\"https://i.gkd.li\"},{\"text\":\"讨论交流\",\"link\":\"https://github.com/orgs/gkd-kit/discussions\"}],\"sidebar\":{\"/guide/\":[{\"text\":\"指引\",\"items\":[{\"text\":\"什么是 GKD?\",\"link\":\"/guide/what-is-gkd\"},{\"text\":\"开始使用\",\"link\":\"/guide/\"},{\"text\":\"快照审查\",\"link\":\"/guide/snapshot\"},{\"text\":\"订阅规则\",\"link\":\"/guide/subscription\"},{\"text\":\"外部交互\",\"link\":\"/guide/external\"},{\"text\":\"常见问题\",\"link\":\"/guide/faq\"}]},{\"text\":\"选择器\",\"items\":[{\"text\":\"语法介绍\",\"link\":\"/guide/selector\"},{\"text\":\"属性方法\",\"link\":\"/guide/node\"},{\"text\":\"选择示例\",\"link\":\"/guide/example\"},{\"text\":\"查询优化\",\"link\":\"/guide/optimize\"}]}],\"/api/\":[{\"link\":\"/api/\",\"text\":\"API Reference\"},{\"text\":\"Interfaces\",\"items\":[{\"text\":\"RawSubscription\",\"link\":\"/api/interfaces/RawSubscription.md\"},{\"text\":\"RawApp\",\"link\":\"/api/interfaces/RawApp.md\"},{\"text\":\"RawGlobalGroup\",\"link\":\"/api/interfaces/RawGlobalGroup.md\"},{\"text\":\"RawCategory\",\"link\":\"/api/interfaces/RawCategory.md\"},{\"text\":\"RawAppRule\",\"link\":\"/api/interfaces/RawAppRule.md\"},{\"text\":\"RawAppGroup\",\"link\":\"/api/interfaces/RawAppGroup.md\"},{\"text\":\"RawGlobalRule\",\"link\":\"/api/interfaces/RawGlobalRule.md\"},{\"text\":\"RawGlobalApp\",\"link\":\"/api/interfaces/RawGlobalApp.md\"},{\"text\":\"RawCommonProps\",\"link\":\"/api/interfaces/RawCommonProps.md\"},{\"text\":\"RawRuleProps\",\"link\":\"/api/interfaces/RawRuleProps.md\"},{\"text\":\"RawGroupProps\",\"link\":\"/api/interfaces/RawGroupProps.md\"},{\"text\":\"RawAppRuleProps\",\"link\":\"/api/interfaces/RawAppRuleProps.md\"},{\"text\":\"RawGlobalRuleProps\",\"link\":\"/api/interfaces/RawGlobalRuleProps.md\"}]},{\"text\":\"Type Aliases\",\"items\":[{\"text\":\"Position\",\"link\":\"/api/type-aliases/Position.md\"},{\"text\":\"IArray\",\"link\":\"/api/type-aliases/IArray.md\"},{\"text\":\"Integer\",\"link\":\"/api/type-aliases/Integer.md\"}]}]},\"editLink\":{\"pattern\":\"https://github.com/gkd-kit/docs/edit/main/docs/:path\",\"text\":\"为此页提供修改建议\"},\"search\":{\"provider\":\"local\",\"options\":{}},\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/gkd-kit\"}],\"footer\":{\"message\":\"Released under the GPL-v3 License.\",\"copyright\":\"Copyright © 2024 GKD. All rights reserved\"}},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":true}");</script>
31
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>类似的问题 <a href="https://github.com/gkd-kit/gkd/issues/603" target="_blank" rel="noreferrer">gkd-kit/gkd#603</a></p></div></div></main><footer class="VPDocFooter" data-v-7f5b4f5c="" data-v-777673f1=""><!--[--><!--]--><div class="edit-info" data-v-777673f1=""><div class="edit-link" data-v-777673f1=""><a class="VPLink link vp-external-link-icon no-icon edit-link-button" href="https://github.com/gkd-kit/docs/edit/main/docs/guide/selector.md" target="_blank" rel="noreferrer" data-v-777673f1=""><!--[--><span class="vpi-square-pen edit-link-icon" data-v-777673f1=""></span> 为此页提供修改建议<!--]--></a></div><div class="last-updated" data-v-777673f1=""><p class="VPLastUpdated" data-v-777673f1="" data-v-019587cc="">最后更新于: <time datetime="2024-12-06T01:23:38.000Z" data-v-019587cc=""></time></p></div></div><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-777673f1=""><span class="visually-hidden" id="doc-footer-aria-label" data-v-777673f1="">Pager</span><div class="pager" data-v-777673f1=""><a class="VPLink link pager-link prev" href="/guide/faq" data-v-777673f1=""><!--[--><span class="desc" data-v-777673f1="">上一页</span><span class="title" data-v-777673f1="">常见问题</span><!--]--></a></div><div class="pager" data-v-777673f1=""><a class="VPLink link pager-link next" href="/guide/node" data-v-777673f1=""><!--[--><span class="desc" data-v-777673f1="">下一页</span><span class="title" data-v-777673f1="">属性方法</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter has-sidebar" data-v-b8e7742e="" data-v-79b2db86=""><div class="container" data-v-79b2db86=""><p class="message" data-v-79b2db86="">Released under the GPL-v3 License.</p><p class="copyright" data-v-79b2db86="">Copyright © 2024 GKD. All rights reserved</p></div></footer><!--[--><!--]--></div><!----><!----><!--]--></div>
32
+ <script>window.__VP_HASH_MAP__=JSON.parse("{\"api_index.md\":\"DpXyfY1L\",\"api_interfaces_rawapp.md\":\"BpGr9CnK\",\"api_interfaces_rawappgroup.md\":\"DgTybHUK\",\"api_interfaces_rawapprule.md\":\"DXz0HCLH\",\"api_interfaces_rawappruleprops.md\":\"CmoqHafA\",\"api_interfaces_rawcategory.md\":\"CQlDJU2a\",\"api_interfaces_rawcommonprops.md\":\"C7Bm8Aiw\",\"api_interfaces_rawglobalapp.md\":\"DLvGUcr3\",\"api_interfaces_rawglobalgroup.md\":\"BauiRmV2\",\"api_interfaces_rawglobalrule.md\":\"CkRXFpc0\",\"api_interfaces_rawglobalruleprops.md\":\"CqorLHIT\",\"api_interfaces_rawgroupprops.md\":\"BKxdlrTw\",\"api_interfaces_rawruleprops.md\":\"Xpur0e3V\",\"api_interfaces_rawsubscription.md\":\"D6PNqAht\",\"api_type-aliases_iarray.md\":\"BlW_x7iw\",\"api_type-aliases_integer.md\":\"Cn7gzSLN\",\"api_type-aliases_position.md\":\"DStZhezQ\",\"guide_example.md\":\"qkY2Adjg\",\"guide_external.md\":\"D0Ckn3lX\",\"guide_faq.md\":\"BDBaGpTL\",\"guide_index.md\":\"v996lkPD\",\"guide_node.md\":\"Y9o0bFbA\",\"guide_optimize.md\":\"C68DwWCl\",\"guide_selector.md\":\"JMmh32QK\",\"guide_snapshot.md\":\"qJFyE8Sp\",\"guide_subscription.md\":\"BmZCK0wZ\",\"guide_what-is-gkd.md\":\"Cq1cxziK\",\"index.md\":\"D5lHHJf4\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"GKD\",\"description\":\"自定义屏幕点击应用\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"logo\":\"https://registry.npmmirror.com/@gkd-kit/docs/0.0.1706371840771/files/.vitepress/dist/logo.svg\",\"lastUpdatedText\":\"最后更新于\",\"outlineTitle\":\"页面导航\",\"returnToTopLabel\":\"回到顶部\",\"darkModeSwitchLabel\":\"深色主题\",\"sidebarMenuLabel\":\"菜单\",\"docFooter\":{\"prev\":\"上一页\",\"next\":\"下一页\"},\"outline\":[2,3],\"nav\":[{\"text\":\"指引\",\"link\":\"/guide/\",\"activeMatch\":\"/guide/\"},{\"text\":\"API\",\"link\":\"/api/\",\"activeMatch\":\"/api/\"},{\"text\":\"审查工具\",\"link\":\"https://i.gkd.li\"},{\"text\":\"讨论交流\",\"link\":\"https://github.com/orgs/gkd-kit/discussions\"}],\"sidebar\":{\"/guide/\":[{\"text\":\"指引\",\"items\":[{\"text\":\"什么是 GKD?\",\"link\":\"/guide/what-is-gkd\"},{\"text\":\"开始使用\",\"link\":\"/guide/\"},{\"text\":\"快照审查\",\"link\":\"/guide/snapshot\"},{\"text\":\"订阅规则\",\"link\":\"/guide/subscription\"},{\"text\":\"外部交互\",\"link\":\"/guide/external\"},{\"text\":\"常见问题\",\"link\":\"/guide/faq\"}]},{\"text\":\"选择器\",\"items\":[{\"text\":\"语法介绍\",\"link\":\"/guide/selector\"},{\"text\":\"属性方法\",\"link\":\"/guide/node\"},{\"text\":\"选择示例\",\"link\":\"/guide/example\"},{\"text\":\"查询优化\",\"link\":\"/guide/optimize\"}]}],\"/api/\":[{\"link\":\"/api/\",\"text\":\"API Reference\"},{\"text\":\"Interfaces\",\"items\":[{\"text\":\"RawSubscription\",\"link\":\"/api/interfaces/RawSubscription.md\"},{\"text\":\"RawApp\",\"link\":\"/api/interfaces/RawApp.md\"},{\"text\":\"RawGlobalGroup\",\"link\":\"/api/interfaces/RawGlobalGroup.md\"},{\"text\":\"RawCategory\",\"link\":\"/api/interfaces/RawCategory.md\"},{\"text\":\"RawAppRule\",\"link\":\"/api/interfaces/RawAppRule.md\"},{\"text\":\"RawAppGroup\",\"link\":\"/api/interfaces/RawAppGroup.md\"},{\"text\":\"RawGlobalRule\",\"link\":\"/api/interfaces/RawGlobalRule.md\"},{\"text\":\"RawGlobalApp\",\"link\":\"/api/interfaces/RawGlobalApp.md\"},{\"text\":\"RawCommonProps\",\"link\":\"/api/interfaces/RawCommonProps.md\"},{\"text\":\"RawRuleProps\",\"link\":\"/api/interfaces/RawRuleProps.md\"},{\"text\":\"RawGroupProps\",\"link\":\"/api/interfaces/RawGroupProps.md\"},{\"text\":\"RawAppRuleProps\",\"link\":\"/api/interfaces/RawAppRuleProps.md\"},{\"text\":\"RawGlobalRuleProps\",\"link\":\"/api/interfaces/RawGlobalRuleProps.md\"}]},{\"text\":\"Type Aliases\",\"items\":[{\"text\":\"Position\",\"link\":\"/api/type-aliases/Position.md\"},{\"text\":\"IArray\",\"link\":\"/api/type-aliases/IArray.md\"},{\"text\":\"Integer\",\"link\":\"/api/type-aliases/Integer.md\"}]}]},\"editLink\":{\"pattern\":\"https://github.com/gkd-kit/docs/edit/main/docs/:path\",\"text\":\"为此页提供修改建议\"},\"search\":{\"provider\":\"local\",\"options\":{}},\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/gkd-kit\"}],\"footer\":{\"message\":\"Released under the GPL-v3 License.\",\"copyright\":\"Copyright © 2024 GKD. All rights reserved\"}},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":true}");</script>
33
33
 
34
34
 
35
35
  </body></html>
@@ -4,21 +4,21 @@
4
4
  <title>快照审查 | GKD</title>
5
5
  <meta name="description" content="自定义屏幕点击应用">
6
6
  <meta name="generator" content="VitePress v1.5.0">
7
- <link rel="preload stylesheet" href="https://registry.npmmirror.com/@gkd-kit/docs/0.0.1733380249049/files/.vitepress/dist/assets/style.B9Y-j_1n.css" as="style">
8
- <link rel="preload stylesheet" href="https://registry.npmmirror.com/@gkd-kit/docs/0.0.1733380249049/files/.vitepress/dist/vp-icons.css" as="style">
7
+ <link rel="preload stylesheet" href="https://registry.npmmirror.com/@gkd-kit/docs/0.0.1733586377741/files/.vitepress/dist/assets/style.B9Y-j_1n.css" as="style">
8
+ <link rel="preload stylesheet" href="https://registry.npmmirror.com/@gkd-kit/docs/0.0.1733586377741/files/.vitepress/dist/vp-icons.css" as="style">
9
9
 
10
- <script type="module" src="https://registry.npmmirror.com/@gkd-kit/docs/0.0.1733380249049/files/.vitepress/dist/assets/app.DaJeACYx.js"></script>
11
- <link rel="preload" href="https://registry.npmmirror.com/@gkd-kit/docs/0.0.1733380249049/files/.vitepress/dist/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
12
- <link rel="modulepreload" href="https://registry.npmmirror.com/@gkd-kit/docs/0.0.1733380249049/files/.vitepress/dist/assets/chunks/theme.DUVDo9Tt.js">
13
- <link rel="modulepreload" href="https://registry.npmmirror.com/@gkd-kit/docs/0.0.1733380249049/files/.vitepress/dist/assets/chunks/framework.CAQWXItu.js">
14
- <link rel="modulepreload" href="https://registry.npmmirror.com/@gkd-kit/docs/0.0.1733380249049/files/.vitepress/dist/assets/guide_snapshot.md.BzA6g7px.lean.js">
15
- <link rel="icon" type="image/svg+xml" href="https://registry.npmmirror.com/@gkd-kit/docs/0.0.1733380249049/files/.vitepress/dist/icon.svg">
10
+ <script type="module" src="https://registry.npmmirror.com/@gkd-kit/docs/0.0.1733586377741/files/.vitepress/dist/assets/app.BGcf4c8V.js"></script>
11
+ <link rel="preload" href="https://registry.npmmirror.com/@gkd-kit/docs/0.0.1733586377741/files/.vitepress/dist/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
12
+ <link rel="modulepreload" href="https://registry.npmmirror.com/@gkd-kit/docs/0.0.1733586377741/files/.vitepress/dist/assets/chunks/theme.XuVVFKVN.js">
13
+ <link rel="modulepreload" href="https://registry.npmmirror.com/@gkd-kit/docs/0.0.1733586377741/files/.vitepress/dist/assets/chunks/framework.CAQWXItu.js">
14
+ <link rel="modulepreload" href="https://registry.npmmirror.com/@gkd-kit/docs/0.0.1733586377741/files/.vitepress/dist/assets/guide_snapshot.md.qJFyE8Sp.lean.js">
15
+ <link rel="icon" type="image/svg+xml" href="https://registry.npmmirror.com/@gkd-kit/docs/0.0.1733586377741/files/.vitepress/dist/icon.svg">
16
16
  <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
17
17
  <script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
18
18
  </head>
19
19
  <body>
20
- <div id="app"><!--[--><div class="Layout" data-v-b8e7742e=""><!--[--><!--]--><!--[--><span tabindex="-1" data-v-d8386319=""></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-d8386319=""> Skip to content </a><!--]--><!----><header class="VPNav" data-v-b8e7742e="" data-v-46a95c78=""><div class="VPNavBar" data-v-46a95c78="" data-v-1ba5074f=""><div class="wrapper" data-v-1ba5074f=""><div class="container" data-v-1ba5074f=""><div class="title" data-v-1ba5074f=""><div class="VPNavBarTitle has-sidebar" data-v-1ba5074f="" data-v-64292b50=""><a class="title" href="/" data-v-64292b50=""><!--[--><!--]--><!--[--><img class="VPImage logo" src="https://registry.npmmirror.com/@gkd-kit/docs/0.0.1706371840771/files/.vitepress/dist/logo.svg" alt="" data-v-266ebd17=""><!--]--><span data-v-64292b50="">GKD</span><!--[--><!--]--></a></div></div><div class="content" data-v-1ba5074f=""><div class="content-body" data-v-1ba5074f=""><!--[--><!--]--><div class="VPNavBarSearch search" data-v-1ba5074f=""><!--[--><!----><div id="local-search"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-1ba5074f="" data-v-a3fe4bea=""><span id="main-nav-aria-label" class="visually-hidden" data-v-a3fe4bea=""> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink active" href="/guide/" tabindex="0" data-v-a3fe4bea="" data-v-1c8d25cc=""><!--[--><span data-v-1c8d25cc="">指引</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/api/" tabindex="0" data-v-a3fe4bea="" data-v-1c8d25cc=""><!--[--><span data-v-1c8d25cc="">API</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://i.gkd.li" target="_blank" rel="noreferrer" tabindex="0" data-v-a3fe4bea="" data-v-1c8d25cc=""><!--[--><span data-v-1c8d25cc="">审查工具</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://github.com/orgs/gkd-kit/discussions" target="_blank" rel="noreferrer" tabindex="0" data-v-a3fe4bea="" data-v-1c8d25cc=""><!--[--><span data-v-1c8d25cc="">讨论交流</span><!--]--></a><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-1ba5074f="" data-v-3d3ac355=""><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="" aria-checked="false" data-v-3d3ac355="" data-v-00dfa199="" data-v-ec96c959=""><span class="check" data-v-ec96c959=""><span class="icon" data-v-ec96c959=""><!--[--><span class="vpi-sun sun" data-v-00dfa199=""></span><span class="vpi-moon moon" data-v-00dfa199=""></span><!--]--></span></span></button></div><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-1ba5074f="" data-v-9c476ba5="" data-v-65e5c86f=""><!--[--><a class="VPSocialLink no-icon" href="https://github.com/gkd-kit" aria-label="github" target="_blank" rel="noopener" data-v-65e5c86f="" data-v-da506c84=""><span class="vpi-social-github"></span></a><!--]--></div><div class="VPFlyout VPNavBarExtra extra" data-v-1ba5074f="" data-v-68958039="" data-v-ac80e421=""><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-ac80e421=""><span class="vpi-more-horizontal icon" data-v-ac80e421=""></span></button><div class="menu" data-v-ac80e421=""><div class="VPMenu" data-v-ac80e421="" data-v-ce3f3167=""><!----><!--[--><!--[--><!----><div class="group" data-v-68958039=""><div class="item appearance" data-v-68958039=""><p class="label" data-v-68958039="">深色主题</p><div class="appearance-action" data-v-68958039=""><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="" aria-checked="false" data-v-68958039="" data-v-00dfa199="" data-v-ec96c959=""><span class="check" data-v-ec96c959=""><span class="icon" data-v-ec96c959=""><!--[--><span class="vpi-sun sun" data-v-00dfa199=""></span><span class="vpi-moon moon" data-v-00dfa199=""></span><!--]--></span></span></button></div></div></div><div class="group" data-v-68958039=""><div class="item social-links" data-v-68958039=""><div class="VPSocialLinks social-links-list" data-v-68958039="" data-v-65e5c86f=""><!--[--><a class="VPSocialLink no-icon" href="https://github.com/gkd-kit" aria-label="github" target="_blank" rel="noopener" data-v-65e5c86f="" data-v-da506c84=""><span class="vpi-social-github"></span></a><!--]--></div></div></div><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-1ba5074f="" data-v-328bb125=""><span class="container" data-v-328bb125=""><span class="top" data-v-328bb125=""></span><span class="middle" data-v-328bb125=""></span><span class="bottom" data-v-328bb125=""></span></span></button></div></div></div></div><div class="divider" data-v-1ba5074f=""><div class="divider-line" data-v-1ba5074f=""></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-b8e7742e="" data-v-e49449d2=""><div class="container" data-v-e49449d2=""><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-e49449d2=""><span class="vpi-align-left menu-icon" data-v-e49449d2=""></span><span class="menu-text" data-v-e49449d2="">菜单</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-e49449d2="" data-v-fecb5f87=""><button data-v-fecb5f87="">回到顶部</button><!----></div></div></div><aside class="VPSidebar" data-v-b8e7742e="" data-v-3678c2fc=""><div class="curtain" data-v-3678c2fc=""></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-3678c2fc=""><span class="visually-hidden" id="sidebar-aria-label" data-v-3678c2fc=""> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-539315d8=""><section class="VPSidebarItem level-0 has-active" data-v-539315d8="" data-v-d5832562=""><div class="item" role="button" tabindex="0" data-v-d5832562=""><div class="indicator" data-v-d5832562=""></div><h2 class="text" data-v-d5832562="">指引</h2><!----></div><div class="items" data-v-d5832562=""><!--[--><div class="VPSidebarItem level-1 is-link" data-v-d5832562=""><div class="item" data-v-d5832562=""><div class="indicator" data-v-d5832562=""></div><a class="VPLink link link" href="/guide/what-is-gkd" data-v-d5832562=""><!--[--><p class="text" data-v-d5832562="">什么是 GKD?</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d5832562=""><div class="item" data-v-d5832562=""><div class="indicator" data-v-d5832562=""></div><a class="VPLink link link" href="/guide/" data-v-d5832562=""><!--[--><p class="text" data-v-d5832562="">开始使用</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d5832562=""><div class="item" data-v-d5832562=""><div class="indicator" data-v-d5832562=""></div><a class="VPLink link link" href="/guide/snapshot" data-v-d5832562=""><!--[--><p class="text" data-v-d5832562="">快照审查</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d5832562=""><div class="item" data-v-d5832562=""><div class="indicator" data-v-d5832562=""></div><a class="VPLink link link" href="/guide/subscription" data-v-d5832562=""><!--[--><p class="text" data-v-d5832562="">订阅规则</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d5832562=""><div class="item" data-v-d5832562=""><div class="indicator" data-v-d5832562=""></div><a class="VPLink link link" href="/guide/external" data-v-d5832562=""><!--[--><p class="text" data-v-d5832562="">外部交互</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d5832562=""><div class="item" data-v-d5832562=""><div class="indicator" data-v-d5832562=""></div><a class="VPLink link link" href="/guide/faq" data-v-d5832562=""><!--[--><p class="text" data-v-d5832562="">常见问题</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-539315d8=""><section class="VPSidebarItem level-0" data-v-539315d8="" data-v-d5832562=""><div class="item" role="button" tabindex="0" data-v-d5832562=""><div class="indicator" data-v-d5832562=""></div><h2 class="text" data-v-d5832562="">选择器</h2><!----></div><div class="items" data-v-d5832562=""><!--[--><div class="VPSidebarItem level-1 is-link" data-v-d5832562=""><div class="item" data-v-d5832562=""><div class="indicator" data-v-d5832562=""></div><a class="VPLink link link" href="/guide/selector" data-v-d5832562=""><!--[--><p class="text" data-v-d5832562="">语法介绍</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d5832562=""><div class="item" data-v-d5832562=""><div class="indicator" data-v-d5832562=""></div><a class="VPLink link link" href="/guide/node" data-v-d5832562=""><!--[--><p class="text" data-v-d5832562="">属性方法</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d5832562=""><div class="item" data-v-d5832562=""><div class="indicator" data-v-d5832562=""></div><a class="VPLink link link" href="/guide/example" data-v-d5832562=""><!--[--><p class="text" data-v-d5832562="">选择示例</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d5832562=""><div class="item" data-v-d5832562=""><div class="indicator" data-v-d5832562=""></div><a class="VPLink link link" href="/guide/optimize" data-v-d5832562=""><!--[--><p class="text" data-v-d5832562="">查询优化</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-b8e7742e="" data-v-53ce3a4b=""><div class="VPDoc has-sidebar has-aside" data-v-53ce3a4b="" data-v-7f5b4f5c=""><!--[--><!--]--><div class="container" data-v-7f5b4f5c=""><div class="aside" data-v-7f5b4f5c=""><div class="aside-curtain" data-v-7f5b4f5c=""></div><div class="aside-container" data-v-7f5b4f5c=""><div class="aside-content" data-v-7f5b4f5c=""><div class="VPDocAside" data-v-7f5b4f5c="" data-v-81573563=""><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-81573563="" data-v-1e1c0fbd=""><div class="content" data-v-1e1c0fbd=""><div class="outline-marker" data-v-1e1c0fbd=""></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-1e1c0fbd="">页面导航</div><ul class="VPDocOutlineItem root" data-v-1e1c0fbd="" data-v-480b7683=""><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-81573563=""></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-7f5b4f5c=""><div class="content-container" data-v-7f5b4f5c=""><!--[--><!--]--><main class="main" data-v-7f5b4f5c=""><div style="position:relative;" class="vp-doc _guide_snapshot" data-v-7f5b4f5c=""><div><h1 id="title" tabindex="-1">快照审查 <a class="header-anchor" href="#title" aria-label="Permalink to &quot;快照审查 {#title}&quot;">​</a></h1><p>关于快照的一些知识</p><h2 id="what-is-snapshot" tabindex="-1">什么是快照 <a class="header-anchor" href="#what-is-snapshot" aria-label="Permalink to &quot;什么是快照 {#what-is-snapshot}&quot;">​</a></h2><p>快照是一个 zip 文件, 保存了设备在某个时间点的状态, 包含以下内容</p><ul><li>截图</li><li>设备信息</li><li>界面信息</li><li>无障碍节点信息</li></ul><p>以前开发者和用户必须下载指定应用然后到指定界面使用类似 autojs 之类的工具才能审查界面</p><p>有了快照之后, 用户只需要在指定页面抓取快照分享给开发者即可</p><p>另外对于某些出现频率极低的界面, 快照也能直接保留这些界面的状态, 无需每次等待出现</p><h2 id="capture-snapshot" tabindex="-1">抓取/捕获快照 <a class="header-anchor" href="#capture-snapshot" aria-label="Permalink to &quot;抓取/捕获快照 {#capture-snapshot}&quot;">​</a></h2><p>在 GKD 内可以通过多种方式抓取快照, 需要一些前置条件</p><p>抓取快照时必须<strong>开启无障碍权限</strong>, 否则无法获取 界面信息 和 无障碍节点信息</p><p>如果你的设备满足 Android&gt;=11, GKD 可以通过 无障碍权限 获取截图, 否则需要额外开启截屏服务</p><p>到 <code>主页-设置-高级模式-截屏服务</code> 开启即可</p><p>当 Android&lt;=10 且不开启截屏服务时 GKD 会使用 同尺寸透明图片 作为截图保存到快照里</p><p>以下是抓取快照的方式</p><h3 id="by-button" tabindex="-1">通过悬浮窗按钮 <a class="header-anchor" href="#by-button" aria-label="Permalink to &quot;通过悬浮窗按钮 {#by-button}&quot;">​</a></h3><p>打开 <code>主页-设置-高级模式-悬浮窗服务</code> 后界面会出现一个可拖动的按钮, 在任意界面点击这个按钮即可抓取快照</p><h3 id="by-tile" tabindex="-1">通过快捷开关 <a class="header-anchor" href="#by-tile" aria-label="Permalink to &quot;通过快捷开关 {#by-tile}&quot;">​</a></h3><p>下拉打开状态栏, 左右滑动切换到有图标的界面, 点击添加或编辑, 在应用快捷开关找到 <code>捕获快照</code>, 图标和上面介绍的悬浮窗按钮一样</p><p>添加这个快捷开关到状态栏界面, 添加完毕后在任意界面下拉状态栏点击这个图标即可抓取快照</p><h3 id="by-screenshot" tabindex="-1">通过截屏快照 <a class="header-anchor" href="#by-screenshot" aria-label="Permalink to &quot;通过截屏快照 {#by-screenshot}&quot;">​</a></h3><p>打开 <code>主页-设置-高级模式-截屏快照</code>, 某些手机截屏时会发出特殊的事件, GKD 可以抓取这些事件后触发抓取快照</p><h3 id="by-inspect" tabindex="-1">通过审查工具 <a class="header-anchor" href="#by-inspect" aria-label="Permalink to &quot;通过审查工具 {#by-inspect}&quot;">​</a></h3><p>首先打开 <code>主页-设置-高级模式-HTTP服务</code>, 在 <a href="https://i.gkd.li/device" target="_blank" rel="noreferrer">连接设备</a> 输入刚刚出现的地址后连接</p><p>连接成功后点击右侧的 <code>快照</code> 按钮即可抓取快照</p><h3 id="by-invoke-service" tabindex="-1">通过调用服务 <a class="header-anchor" href="#by-invoke-service" aria-label="Permalink to &quot;通过调用服务 {#by-invoke-service}&quot;">​</a></h3><p>GKD 内部暴露了一个服务, 外部应用(某些快捷手势应用)可以启动这个服务, 启动后将抓取当前界面的快照, 它的路径是</p><div class="language-text vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">text</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>li.songe.gkd.SnapshotActionService</span></span></code></pre></div><p>通过这个服务, 你可以通过自定义手势来捕获快照, 可在 <a href="https://github.com/gkd-kit/gkd/issues/253" target="_blank" rel="noreferrer">gkd-kit/gkd#253</a> 了解更多</p><h2 id="how-to-upload" tabindex="-1">上传原理 <a class="header-anchor" href="#how-to-upload" aria-label="Permalink to &quot;上传原理 {#how-to-upload}&quot;">​</a></h2><p>当你使用审查工具生成分享链接时, 审查工具会自动帮你上传文件到 Github 后得到链接</p><p>相当于自动化以下行为</p><ul><li>从审查工具下载快照为 file.zip 文件到电脑上</li><li>登录 Github 并转到任意能上传文件或者评论的公开页面</li><li>将刚刚的文件拖动进输入框, 文件链接会自动生成</li></ul><p>当在 GKD 内生成链接时也是一样的原理, 不同之处在于</p><p>网页版的审查工具直接通过 <a href="https://github.com/gkd-kit/network-extension" target="_blank" rel="noreferrer">油猴脚本</a> 获取上传凭证</p><p>而 GKD 内需要手动输入上传凭证, 也就是需要手动输入 Github Cookie</p><p>可通过如下步骤获取 Github Cookie</p><h3 id="在电脑上获取" tabindex="-1">在电脑上获取 <a class="header-anchor" href="#在电脑上获取" aria-label="Permalink to &quot;在电脑上获取&quot;">​</a></h3><ul><li>在浏览器打开 <a href="https://github.com" target="_blank" rel="noreferrer">Github</a> 登录账号</li><li>在 <a href="https://github.com" target="_blank" rel="noreferrer">https://github.com</a> 使用 f12 打开调试面板, 选中 网络-文档 后按 f5 刷新页面, 会出来一条 <code>github.com</code> 的记录</li><li>点击这条记录, 选中 标头-请求标头-Cookie 的右侧文字, 按下 Ctrl+C 复制即可<div class="n-image"><img src="https://registry.npmmirror.com/@gkd-kit/assets/0.0.10/files/assets/0034.png"></div></li><li>复制成功后, 到 GKD 内 高级设置-快照-Github Cookie 编辑填入保存即可</li></ul><h3 id="在手机上获取" tabindex="-1">在手机上获取 <a class="header-anchor" href="#在手机上获取" aria-label="Permalink to &quot;在手机上获取&quot;">​</a></h3><ul><li>下载安装 <a href="https://viayoo.com" target="_blank" rel="noreferrer">Via</a> 浏览器</li><li>在浏览器打开 <a href="https://github.com" target="_blank" rel="noreferrer">Github</a> 登录账号</li><li>点击顶部地址栏左侧的图标, 在出现的菜单中点击 <code>查看 Cookies</code>, 出现的弹窗后点击 <code>复制文本</code><!--[--><div class="n-image w-[45%]"><img src="https://registry.npmmirror.com/@gkd-kit/assets/0.0.10/files/assets/0035.png"></div> <div class="n-image w-[45%]"><img src="https://registry.npmmirror.com/@gkd-kit/assets/0.0.10/files/assets/0036.png"></div><!--]--></li><li>复制成功后, 到 GKD 内 高级设置-快照-Github Cookie 编辑填入保存即可</li></ul><h2 id="rm-privacy-info" tabindex="-1">去除快照中的隐私信息 <a class="header-anchor" href="#rm-privacy-info" aria-label="Permalink to &quot;去除快照中的隐私信息 {#rm-privacy-info}&quot;">​</a></h2><p>当抓取快照时, 图片中可能含有人的名字等敏感信息, 可能需要去除这些信息</p><p>在 GKD 的快照记录界面, 你可以先将快照图片保存到相册, 然后在相册做打马赛克之类的编辑, 之后回到记录界面替换截图即可</p><p>如果敏感信息是文字保留在快照里的节点信息上, 你需要将快照 zip 文件解压缩, 内部有一个 json 文件</p><p>节点信息就在 nodes 数组字段上, 可以直接使用文本替换为等价数量的 <code>*</code>, 修改文件后重新压缩为 zip 重新导入快照即可</p></div></div></main><footer class="VPDocFooter" data-v-7f5b4f5c="" data-v-777673f1=""><!--[--><!--]--><div class="edit-info" data-v-777673f1=""><div class="edit-link" data-v-777673f1=""><a class="VPLink link vp-external-link-icon no-icon edit-link-button" href="https://github.com/gkd-kit/docs/edit/main/docs/guide/snapshot.md" target="_blank" rel="noreferrer" data-v-777673f1=""><!--[--><span class="vpi-square-pen edit-link-icon" data-v-777673f1=""></span> 为此页提供修改建议<!--]--></a></div><div class="last-updated" data-v-777673f1=""><p class="VPLastUpdated" data-v-777673f1="" data-v-019587cc="">最后更新于: <time datetime="2024-12-05T06:30:19.000Z" data-v-019587cc=""></time></p></div></div><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-777673f1=""><span class="visually-hidden" id="doc-footer-aria-label" data-v-777673f1="">Pager</span><div class="pager" data-v-777673f1=""><a class="VPLink link pager-link prev" href="/guide/" data-v-777673f1=""><!--[--><span class="desc" data-v-777673f1="">上一页</span><span class="title" data-v-777673f1="">开始使用</span><!--]--></a></div><div class="pager" data-v-777673f1=""><a class="VPLink link pager-link next" href="/guide/subscription" data-v-777673f1=""><!--[--><span class="desc" data-v-777673f1="">下一页</span><span class="title" data-v-777673f1="">订阅规则</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter has-sidebar" data-v-b8e7742e="" data-v-79b2db86=""><div class="container" data-v-79b2db86=""><p class="message" data-v-79b2db86="">Released under the GPL-v3 License.</p><p class="copyright" data-v-79b2db86="">Copyright © 2024 GKD. All rights reserved</p></div></footer><!--[--><!--]--></div><!----><!----><!--]--></div>
21
- <script>window.__VP_HASH_MAP__=JSON.parse("{\"api_index.md\":\"DpXyfY1L\",\"api_interfaces_rawapp.md\":\"BpGr9CnK\",\"api_interfaces_rawappgroup.md\":\"DgTybHUK\",\"api_interfaces_rawapprule.md\":\"DXz0HCLH\",\"api_interfaces_rawappruleprops.md\":\"CmoqHafA\",\"api_interfaces_rawcategory.md\":\"CQlDJU2a\",\"api_interfaces_rawcommonprops.md\":\"C7Bm8Aiw\",\"api_interfaces_rawglobalapp.md\":\"DLvGUcr3\",\"api_interfaces_rawglobalgroup.md\":\"BauiRmV2\",\"api_interfaces_rawglobalrule.md\":\"CkRXFpc0\",\"api_interfaces_rawglobalruleprops.md\":\"CqorLHIT\",\"api_interfaces_rawgroupprops.md\":\"BKxdlrTw\",\"api_interfaces_rawruleprops.md\":\"Xpur0e3V\",\"api_interfaces_rawsubscription.md\":\"D6PNqAht\",\"api_type-aliases_iarray.md\":\"BlW_x7iw\",\"api_type-aliases_integer.md\":\"Cn7gzSLN\",\"api_type-aliases_position.md\":\"DStZhezQ\",\"guide_example.md\":\"DupfMIds\",\"guide_external.md\":\"C8e0UGoB\",\"guide_faq.md\":\"BAgWDOlY\",\"guide_index.md\":\"DSRucdpD\",\"guide_node.md\":\"GiHlaiKV\",\"guide_optimize.md\":\"D0ffWEat\",\"guide_selector.md\":\"CCmHZTo-\",\"guide_snapshot.md\":\"BzA6g7px\",\"guide_subscription.md\":\"BTHj0QPP\",\"guide_what-is-gkd.md\":\"DMBRnkKl\",\"index.md\":\"AY17Hivw\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"GKD\",\"description\":\"自定义屏幕点击应用\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"logo\":\"https://registry.npmmirror.com/@gkd-kit/docs/0.0.1706371840771/files/.vitepress/dist/logo.svg\",\"lastUpdatedText\":\"最后更新于\",\"outlineTitle\":\"页面导航\",\"returnToTopLabel\":\"回到顶部\",\"darkModeSwitchLabel\":\"深色主题\",\"sidebarMenuLabel\":\"菜单\",\"docFooter\":{\"prev\":\"上一页\",\"next\":\"下一页\"},\"outline\":[2,3],\"nav\":[{\"text\":\"指引\",\"link\":\"/guide/\",\"activeMatch\":\"/guide/\"},{\"text\":\"API\",\"link\":\"/api/\",\"activeMatch\":\"/api/\"},{\"text\":\"审查工具\",\"link\":\"https://i.gkd.li\"},{\"text\":\"讨论交流\",\"link\":\"https://github.com/orgs/gkd-kit/discussions\"}],\"sidebar\":{\"/guide/\":[{\"text\":\"指引\",\"items\":[{\"text\":\"什么是 GKD?\",\"link\":\"/guide/what-is-gkd\"},{\"text\":\"开始使用\",\"link\":\"/guide/\"},{\"text\":\"快照审查\",\"link\":\"/guide/snapshot\"},{\"text\":\"订阅规则\",\"link\":\"/guide/subscription\"},{\"text\":\"外部交互\",\"link\":\"/guide/external\"},{\"text\":\"常见问题\",\"link\":\"/guide/faq\"}]},{\"text\":\"选择器\",\"items\":[{\"text\":\"语法介绍\",\"link\":\"/guide/selector\"},{\"text\":\"属性方法\",\"link\":\"/guide/node\"},{\"text\":\"选择示例\",\"link\":\"/guide/example\"},{\"text\":\"查询优化\",\"link\":\"/guide/optimize\"}]}],\"/api/\":[{\"link\":\"/api/\",\"text\":\"API Reference\"},{\"text\":\"Interfaces\",\"items\":[{\"text\":\"RawSubscription\",\"link\":\"/api/interfaces/RawSubscription.md\"},{\"text\":\"RawApp\",\"link\":\"/api/interfaces/RawApp.md\"},{\"text\":\"RawGlobalGroup\",\"link\":\"/api/interfaces/RawGlobalGroup.md\"},{\"text\":\"RawCategory\",\"link\":\"/api/interfaces/RawCategory.md\"},{\"text\":\"RawAppRule\",\"link\":\"/api/interfaces/RawAppRule.md\"},{\"text\":\"RawAppGroup\",\"link\":\"/api/interfaces/RawAppGroup.md\"},{\"text\":\"RawGlobalRule\",\"link\":\"/api/interfaces/RawGlobalRule.md\"},{\"text\":\"RawGlobalApp\",\"link\":\"/api/interfaces/RawGlobalApp.md\"},{\"text\":\"RawCommonProps\",\"link\":\"/api/interfaces/RawCommonProps.md\"},{\"text\":\"RawRuleProps\",\"link\":\"/api/interfaces/RawRuleProps.md\"},{\"text\":\"RawGroupProps\",\"link\":\"/api/interfaces/RawGroupProps.md\"},{\"text\":\"RawAppRuleProps\",\"link\":\"/api/interfaces/RawAppRuleProps.md\"},{\"text\":\"RawGlobalRuleProps\",\"link\":\"/api/interfaces/RawGlobalRuleProps.md\"}]},{\"text\":\"Type Aliases\",\"items\":[{\"text\":\"Position\",\"link\":\"/api/type-aliases/Position.md\"},{\"text\":\"IArray\",\"link\":\"/api/type-aliases/IArray.md\"},{\"text\":\"Integer\",\"link\":\"/api/type-aliases/Integer.md\"}]}]},\"editLink\":{\"pattern\":\"https://github.com/gkd-kit/docs/edit/main/docs/:path\",\"text\":\"为此页提供修改建议\"},\"search\":{\"provider\":\"local\",\"options\":{}},\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/gkd-kit\"}],\"footer\":{\"message\":\"Released under the GPL-v3 License.\",\"copyright\":\"Copyright © 2024 GKD. All rights reserved\"}},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":true}");</script>
20
+ <div id="app"><!--[--><div class="Layout" data-v-b8e7742e=""><!--[--><!--]--><!--[--><span tabindex="-1" data-v-d8386319=""></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-d8386319=""> Skip to content </a><!--]--><!----><header class="VPNav" data-v-b8e7742e="" data-v-46a95c78=""><div class="VPNavBar" data-v-46a95c78="" data-v-1ba5074f=""><div class="wrapper" data-v-1ba5074f=""><div class="container" data-v-1ba5074f=""><div class="title" data-v-1ba5074f=""><div class="VPNavBarTitle has-sidebar" data-v-1ba5074f="" data-v-64292b50=""><a class="title" href="/" data-v-64292b50=""><!--[--><!--]--><!--[--><img class="VPImage logo" src="https://registry.npmmirror.com/@gkd-kit/docs/0.0.1706371840771/files/.vitepress/dist/logo.svg" alt="" data-v-266ebd17=""><!--]--><span data-v-64292b50="">GKD</span><!--[--><!--]--></a></div></div><div class="content" data-v-1ba5074f=""><div class="content-body" data-v-1ba5074f=""><!--[--><!--]--><div class="VPNavBarSearch search" data-v-1ba5074f=""><!--[--><!----><div id="local-search"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-1ba5074f="" data-v-a3fe4bea=""><span id="main-nav-aria-label" class="visually-hidden" data-v-a3fe4bea=""> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink active" href="/guide/" tabindex="0" data-v-a3fe4bea="" data-v-1c8d25cc=""><!--[--><span data-v-1c8d25cc="">指引</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/api/" tabindex="0" data-v-a3fe4bea="" data-v-1c8d25cc=""><!--[--><span data-v-1c8d25cc="">API</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://i.gkd.li" target="_blank" rel="noreferrer" tabindex="0" data-v-a3fe4bea="" data-v-1c8d25cc=""><!--[--><span data-v-1c8d25cc="">审查工具</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://github.com/orgs/gkd-kit/discussions" target="_blank" rel="noreferrer" tabindex="0" data-v-a3fe4bea="" data-v-1c8d25cc=""><!--[--><span data-v-1c8d25cc="">讨论交流</span><!--]--></a><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-1ba5074f="" data-v-3d3ac355=""><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="" aria-checked="false" data-v-3d3ac355="" data-v-00dfa199="" data-v-ec96c959=""><span class="check" data-v-ec96c959=""><span class="icon" data-v-ec96c959=""><!--[--><span class="vpi-sun sun" data-v-00dfa199=""></span><span class="vpi-moon moon" data-v-00dfa199=""></span><!--]--></span></span></button></div><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-1ba5074f="" data-v-9c476ba5="" data-v-65e5c86f=""><!--[--><a class="VPSocialLink no-icon" href="https://github.com/gkd-kit" aria-label="github" target="_blank" rel="noopener" data-v-65e5c86f="" data-v-da506c84=""><span class="vpi-social-github"></span></a><!--]--></div><div class="VPFlyout VPNavBarExtra extra" data-v-1ba5074f="" data-v-68958039="" data-v-ac80e421=""><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-ac80e421=""><span class="vpi-more-horizontal icon" data-v-ac80e421=""></span></button><div class="menu" data-v-ac80e421=""><div class="VPMenu" data-v-ac80e421="" data-v-ce3f3167=""><!----><!--[--><!--[--><!----><div class="group" data-v-68958039=""><div class="item appearance" data-v-68958039=""><p class="label" data-v-68958039="">深色主题</p><div class="appearance-action" data-v-68958039=""><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="" aria-checked="false" data-v-68958039="" data-v-00dfa199="" data-v-ec96c959=""><span class="check" data-v-ec96c959=""><span class="icon" data-v-ec96c959=""><!--[--><span class="vpi-sun sun" data-v-00dfa199=""></span><span class="vpi-moon moon" data-v-00dfa199=""></span><!--]--></span></span></button></div></div></div><div class="group" data-v-68958039=""><div class="item social-links" data-v-68958039=""><div class="VPSocialLinks social-links-list" data-v-68958039="" data-v-65e5c86f=""><!--[--><a class="VPSocialLink no-icon" href="https://github.com/gkd-kit" aria-label="github" target="_blank" rel="noopener" data-v-65e5c86f="" data-v-da506c84=""><span class="vpi-social-github"></span></a><!--]--></div></div></div><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-1ba5074f="" data-v-328bb125=""><span class="container" data-v-328bb125=""><span class="top" data-v-328bb125=""></span><span class="middle" data-v-328bb125=""></span><span class="bottom" data-v-328bb125=""></span></span></button></div></div></div></div><div class="divider" data-v-1ba5074f=""><div class="divider-line" data-v-1ba5074f=""></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-b8e7742e="" data-v-e49449d2=""><div class="container" data-v-e49449d2=""><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-e49449d2=""><span class="vpi-align-left menu-icon" data-v-e49449d2=""></span><span class="menu-text" data-v-e49449d2="">菜单</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-e49449d2="" data-v-fecb5f87=""><button data-v-fecb5f87="">回到顶部</button><!----></div></div></div><aside class="VPSidebar" data-v-b8e7742e="" data-v-3678c2fc=""><div class="curtain" data-v-3678c2fc=""></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-3678c2fc=""><span class="visually-hidden" id="sidebar-aria-label" data-v-3678c2fc=""> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-539315d8=""><section class="VPSidebarItem level-0 has-active" data-v-539315d8="" data-v-d5832562=""><div class="item" role="button" tabindex="0" data-v-d5832562=""><div class="indicator" data-v-d5832562=""></div><h2 class="text" data-v-d5832562="">指引</h2><!----></div><div class="items" data-v-d5832562=""><!--[--><div class="VPSidebarItem level-1 is-link" data-v-d5832562=""><div class="item" data-v-d5832562=""><div class="indicator" data-v-d5832562=""></div><a class="VPLink link link" href="/guide/what-is-gkd" data-v-d5832562=""><!--[--><p class="text" data-v-d5832562="">什么是 GKD?</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d5832562=""><div class="item" data-v-d5832562=""><div class="indicator" data-v-d5832562=""></div><a class="VPLink link link" href="/guide/" data-v-d5832562=""><!--[--><p class="text" data-v-d5832562="">开始使用</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d5832562=""><div class="item" data-v-d5832562=""><div class="indicator" data-v-d5832562=""></div><a class="VPLink link link" href="/guide/snapshot" data-v-d5832562=""><!--[--><p class="text" data-v-d5832562="">快照审查</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d5832562=""><div class="item" data-v-d5832562=""><div class="indicator" data-v-d5832562=""></div><a class="VPLink link link" href="/guide/subscription" data-v-d5832562=""><!--[--><p class="text" data-v-d5832562="">订阅规则</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d5832562=""><div class="item" data-v-d5832562=""><div class="indicator" data-v-d5832562=""></div><a class="VPLink link link" href="/guide/external" data-v-d5832562=""><!--[--><p class="text" data-v-d5832562="">外部交互</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d5832562=""><div class="item" data-v-d5832562=""><div class="indicator" data-v-d5832562=""></div><a class="VPLink link link" href="/guide/faq" data-v-d5832562=""><!--[--><p class="text" data-v-d5832562="">常见问题</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-539315d8=""><section class="VPSidebarItem level-0" data-v-539315d8="" data-v-d5832562=""><div class="item" role="button" tabindex="0" data-v-d5832562=""><div class="indicator" data-v-d5832562=""></div><h2 class="text" data-v-d5832562="">选择器</h2><!----></div><div class="items" data-v-d5832562=""><!--[--><div class="VPSidebarItem level-1 is-link" data-v-d5832562=""><div class="item" data-v-d5832562=""><div class="indicator" data-v-d5832562=""></div><a class="VPLink link link" href="/guide/selector" data-v-d5832562=""><!--[--><p class="text" data-v-d5832562="">语法介绍</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d5832562=""><div class="item" data-v-d5832562=""><div class="indicator" data-v-d5832562=""></div><a class="VPLink link link" href="/guide/node" data-v-d5832562=""><!--[--><p class="text" data-v-d5832562="">属性方法</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d5832562=""><div class="item" data-v-d5832562=""><div class="indicator" data-v-d5832562=""></div><a class="VPLink link link" href="/guide/example" data-v-d5832562=""><!--[--><p class="text" data-v-d5832562="">选择示例</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d5832562=""><div class="item" data-v-d5832562=""><div class="indicator" data-v-d5832562=""></div><a class="VPLink link link" href="/guide/optimize" data-v-d5832562=""><!--[--><p class="text" data-v-d5832562="">查询优化</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-b8e7742e="" data-v-53ce3a4b=""><div class="VPDoc has-sidebar has-aside" data-v-53ce3a4b="" data-v-7f5b4f5c=""><!--[--><!--]--><div class="container" data-v-7f5b4f5c=""><div class="aside" data-v-7f5b4f5c=""><div class="aside-curtain" data-v-7f5b4f5c=""></div><div class="aside-container" data-v-7f5b4f5c=""><div class="aside-content" data-v-7f5b4f5c=""><div class="VPDocAside" data-v-7f5b4f5c="" data-v-81573563=""><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-81573563="" data-v-1e1c0fbd=""><div class="content" data-v-1e1c0fbd=""><div class="outline-marker" data-v-1e1c0fbd=""></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-1e1c0fbd="">页面导航</div><ul class="VPDocOutlineItem root" data-v-1e1c0fbd="" data-v-480b7683=""><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-81573563=""></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-7f5b4f5c=""><div class="content-container" data-v-7f5b4f5c=""><!--[--><!--]--><main class="main" data-v-7f5b4f5c=""><div style="position:relative;" class="vp-doc _guide_snapshot" data-v-7f5b4f5c=""><div><h1 id="title" tabindex="-1">快照审查 <a class="header-anchor" href="#title" aria-label="Permalink to &quot;快照审查 {#title}&quot;">​</a></h1><p>关于快照的一些知识</p><h2 id="what-is-snapshot" tabindex="-1">什么是快照 <a class="header-anchor" href="#what-is-snapshot" aria-label="Permalink to &quot;什么是快照 {#what-is-snapshot}&quot;">​</a></h2><p>快照是一个 zip 文件, 保存了设备在某个时间点的状态, 包含以下内容</p><ul><li>截图</li><li>设备信息</li><li>界面信息</li><li>无障碍节点信息</li></ul><p>以前开发者和用户必须下载指定应用然后到指定界面使用类似 autojs 之类的工具才能审查界面</p><p>有了快照之后, 用户只需要在指定页面抓取快照分享给开发者即可</p><p>另外对于某些出现频率极低的界面, 快照也能直接保留这些界面的状态, 无需每次等待出现</p><h2 id="capture-snapshot" tabindex="-1">抓取/捕获快照 <a class="header-anchor" href="#capture-snapshot" aria-label="Permalink to &quot;抓取/捕获快照 {#capture-snapshot}&quot;">​</a></h2><p>在 GKD 内可以通过多种方式抓取快照, 需要一些前置条件</p><p>抓取快照时必须<strong>开启无障碍权限</strong>, 否则无法获取 界面信息 和 无障碍节点信息</p><p>如果你的设备满足 Android&gt;=11, GKD 可以通过 无障碍权限 获取截图, 否则需要额外开启截屏服务</p><p>到 <code>主页-设置-高级模式-截屏服务</code> 开启即可</p><p>当 Android&lt;=10 且不开启截屏服务时 GKD 会使用 同尺寸透明图片 作为截图保存到快照里</p><p>以下是抓取快照的方式</p><h3 id="by-button" tabindex="-1">通过悬浮窗按钮 <a class="header-anchor" href="#by-button" aria-label="Permalink to &quot;通过悬浮窗按钮 {#by-button}&quot;">​</a></h3><p>打开 <code>主页-设置-高级模式-悬浮窗服务</code> 后界面会出现一个可拖动的按钮, 在任意界面点击这个按钮即可抓取快照</p><h3 id="by-tile" tabindex="-1">通过快捷开关 <a class="header-anchor" href="#by-tile" aria-label="Permalink to &quot;通过快捷开关 {#by-tile}&quot;">​</a></h3><p>下拉打开状态栏, 左右滑动切换到有图标的界面, 点击添加或编辑, 在应用快捷开关找到 <code>捕获快照</code>, 图标和上面介绍的悬浮窗按钮一样</p><p>添加这个快捷开关到状态栏界面, 添加完毕后在任意界面下拉状态栏点击这个图标即可抓取快照</p><h3 id="by-screenshot" tabindex="-1">通过截屏快照 <a class="header-anchor" href="#by-screenshot" aria-label="Permalink to &quot;通过截屏快照 {#by-screenshot}&quot;">​</a></h3><p>打开 <code>主页-设置-高级模式-截屏快照</code>, 某些手机截屏时会发出特殊的事件, GKD 可以抓取这些事件后触发抓取快照</p><h3 id="by-inspect" tabindex="-1">通过审查工具 <a class="header-anchor" href="#by-inspect" aria-label="Permalink to &quot;通过审查工具 {#by-inspect}&quot;">​</a></h3><p>首先打开 <code>主页-设置-高级模式-HTTP服务</code>, 在 <a href="https://i.gkd.li/device" target="_blank" rel="noreferrer">连接设备</a> 输入刚刚出现的地址后连接</p><p>连接成功后点击右侧的 <code>快照</code> 按钮即可抓取快照</p><h3 id="by-invoke-service" tabindex="-1">通过调用服务 <a class="header-anchor" href="#by-invoke-service" aria-label="Permalink to &quot;通过调用服务 {#by-invoke-service}&quot;">​</a></h3><p>GKD 内部暴露了一个服务, 外部应用(某些快捷手势应用)可以启动这个服务, 启动后将抓取当前界面的快照, 它的路径是</p><div class="language-text vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">text</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>li.songe.gkd.debug.SnapshotActionService</span></span></code></pre></div><p>通过这个服务, 你可以通过自定义手势来捕获快照, 可在 <a href="https://github.com/gkd-kit/gkd/issues/253" target="_blank" rel="noreferrer">gkd-kit/gkd#253</a> 了解更多</p><h2 id="how-to-upload" tabindex="-1">上传原理 <a class="header-anchor" href="#how-to-upload" aria-label="Permalink to &quot;上传原理 {#how-to-upload}&quot;">​</a></h2><p>当你使用审查工具生成分享链接时, 审查工具会自动帮你上传文件到 Github 后得到链接</p><p>相当于自动化以下行为</p><ul><li>从审查工具下载快照为 file.zip 文件到电脑上</li><li>登录 Github 并转到任意能上传文件或者评论的公开页面</li><li>将刚刚的文件拖动进输入框, 文件链接会自动生成</li></ul><p>当在 GKD 内生成链接时也是一样的原理, 不同之处在于</p><p>网页版的审查工具直接通过 <a href="https://github.com/gkd-kit/network-extension" target="_blank" rel="noreferrer">油猴脚本</a> 获取上传凭证</p><p>而 GKD 内需要手动输入上传凭证, 也就是需要手动输入 Github Cookie</p><p>可通过如下步骤获取 Github Cookie</p><h3 id="在电脑上获取" tabindex="-1">在电脑上获取 <a class="header-anchor" href="#在电脑上获取" aria-label="Permalink to &quot;在电脑上获取&quot;">​</a></h3><ul><li>在浏览器打开 <a href="https://github.com" target="_blank" rel="noreferrer">Github</a> 登录账号</li><li>在 <a href="https://github.com" target="_blank" rel="noreferrer">https://github.com</a> 使用 f12 打开调试面板, 选中 网络-文档 后按 f5 刷新页面, 会出来一条 <code>github.com</code> 的记录</li><li>点击这条记录, 选中 标头-请求标头-Cookie 的右侧文字, 按下 Ctrl+C 复制即可<div class="n-image"><img src="https://registry.npmmirror.com/@gkd-kit/assets/0.0.10/files/assets/0034.png"></div></li><li>复制成功后, 到 GKD 内 高级设置-快照-Github Cookie 编辑填入保存即可</li></ul><h3 id="在手机上获取" tabindex="-1">在手机上获取 <a class="header-anchor" href="#在手机上获取" aria-label="Permalink to &quot;在手机上获取&quot;">​</a></h3><ul><li>下载安装 <a href="https://viayoo.com" target="_blank" rel="noreferrer">Via</a> 浏览器</li><li>在浏览器打开 <a href="https://github.com" target="_blank" rel="noreferrer">Github</a> 登录账号</li><li>点击顶部地址栏左侧的图标, 在出现的菜单中点击 <code>查看 Cookies</code>, 出现的弹窗后点击 <code>复制文本</code><!--[--><div class="n-image w-[45%]"><img src="https://registry.npmmirror.com/@gkd-kit/assets/0.0.10/files/assets/0035.png"></div> <div class="n-image w-[45%]"><img src="https://registry.npmmirror.com/@gkd-kit/assets/0.0.10/files/assets/0036.png"></div><!--]--></li><li>复制成功后, 到 GKD 内 高级设置-快照-Github Cookie 编辑填入保存即可</li></ul><h2 id="rm-privacy-info" tabindex="-1">去除快照中的隐私信息 <a class="header-anchor" href="#rm-privacy-info" aria-label="Permalink to &quot;去除快照中的隐私信息 {#rm-privacy-info}&quot;">​</a></h2><p>当抓取快照时, 图片中可能含有人的名字等敏感信息, 可能需要去除这些信息</p><p>在 GKD 的快照记录界面, 你可以先将快照图片保存到相册, 然后在相册做打马赛克之类的编辑, 之后回到记录界面替换截图即可</p><p>如果敏感信息是文字保留在快照里的节点信息上, 你需要将快照 zip 文件解压缩, 内部有一个 json 文件</p><p>节点信息就在 nodes 数组字段上, 可以直接使用文本替换为等价数量的 <code>*</code>, 修改文件后重新压缩为 zip 重新导入快照即可</p></div></div></main><footer class="VPDocFooter" data-v-7f5b4f5c="" data-v-777673f1=""><!--[--><!--]--><div class="edit-info" data-v-777673f1=""><div class="edit-link" data-v-777673f1=""><a class="VPLink link vp-external-link-icon no-icon edit-link-button" href="https://github.com/gkd-kit/docs/edit/main/docs/guide/snapshot.md" target="_blank" rel="noreferrer" data-v-777673f1=""><!--[--><span class="vpi-square-pen edit-link-icon" data-v-777673f1=""></span> 为此页提供修改建议<!--]--></a></div><div class="last-updated" data-v-777673f1=""><p class="VPLastUpdated" data-v-777673f1="" data-v-019587cc="">最后更新于: <time datetime="2024-12-06T01:23:38.000Z" data-v-019587cc=""></time></p></div></div><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-777673f1=""><span class="visually-hidden" id="doc-footer-aria-label" data-v-777673f1="">Pager</span><div class="pager" data-v-777673f1=""><a class="VPLink link pager-link prev" href="/guide/" data-v-777673f1=""><!--[--><span class="desc" data-v-777673f1="">上一页</span><span class="title" data-v-777673f1="">开始使用</span><!--]--></a></div><div class="pager" data-v-777673f1=""><a class="VPLink link pager-link next" href="/guide/subscription" data-v-777673f1=""><!--[--><span class="desc" data-v-777673f1="">下一页</span><span class="title" data-v-777673f1="">订阅规则</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter has-sidebar" data-v-b8e7742e="" data-v-79b2db86=""><div class="container" data-v-79b2db86=""><p class="message" data-v-79b2db86="">Released under the GPL-v3 License.</p><p class="copyright" data-v-79b2db86="">Copyright © 2024 GKD. All rights reserved</p></div></footer><!--[--><!--]--></div><!----><!----><!--]--></div>
21
+ <script>window.__VP_HASH_MAP__=JSON.parse("{\"api_index.md\":\"DpXyfY1L\",\"api_interfaces_rawapp.md\":\"BpGr9CnK\",\"api_interfaces_rawappgroup.md\":\"DgTybHUK\",\"api_interfaces_rawapprule.md\":\"DXz0HCLH\",\"api_interfaces_rawappruleprops.md\":\"CmoqHafA\",\"api_interfaces_rawcategory.md\":\"CQlDJU2a\",\"api_interfaces_rawcommonprops.md\":\"C7Bm8Aiw\",\"api_interfaces_rawglobalapp.md\":\"DLvGUcr3\",\"api_interfaces_rawglobalgroup.md\":\"BauiRmV2\",\"api_interfaces_rawglobalrule.md\":\"CkRXFpc0\",\"api_interfaces_rawglobalruleprops.md\":\"CqorLHIT\",\"api_interfaces_rawgroupprops.md\":\"BKxdlrTw\",\"api_interfaces_rawruleprops.md\":\"Xpur0e3V\",\"api_interfaces_rawsubscription.md\":\"D6PNqAht\",\"api_type-aliases_iarray.md\":\"BlW_x7iw\",\"api_type-aliases_integer.md\":\"Cn7gzSLN\",\"api_type-aliases_position.md\":\"DStZhezQ\",\"guide_example.md\":\"qkY2Adjg\",\"guide_external.md\":\"D0Ckn3lX\",\"guide_faq.md\":\"BDBaGpTL\",\"guide_index.md\":\"v996lkPD\",\"guide_node.md\":\"Y9o0bFbA\",\"guide_optimize.md\":\"C68DwWCl\",\"guide_selector.md\":\"JMmh32QK\",\"guide_snapshot.md\":\"qJFyE8Sp\",\"guide_subscription.md\":\"BmZCK0wZ\",\"guide_what-is-gkd.md\":\"Cq1cxziK\",\"index.md\":\"D5lHHJf4\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"GKD\",\"description\":\"自定义屏幕点击应用\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"logo\":\"https://registry.npmmirror.com/@gkd-kit/docs/0.0.1706371840771/files/.vitepress/dist/logo.svg\",\"lastUpdatedText\":\"最后更新于\",\"outlineTitle\":\"页面导航\",\"returnToTopLabel\":\"回到顶部\",\"darkModeSwitchLabel\":\"深色主题\",\"sidebarMenuLabel\":\"菜单\",\"docFooter\":{\"prev\":\"上一页\",\"next\":\"下一页\"},\"outline\":[2,3],\"nav\":[{\"text\":\"指引\",\"link\":\"/guide/\",\"activeMatch\":\"/guide/\"},{\"text\":\"API\",\"link\":\"/api/\",\"activeMatch\":\"/api/\"},{\"text\":\"审查工具\",\"link\":\"https://i.gkd.li\"},{\"text\":\"讨论交流\",\"link\":\"https://github.com/orgs/gkd-kit/discussions\"}],\"sidebar\":{\"/guide/\":[{\"text\":\"指引\",\"items\":[{\"text\":\"什么是 GKD?\",\"link\":\"/guide/what-is-gkd\"},{\"text\":\"开始使用\",\"link\":\"/guide/\"},{\"text\":\"快照审查\",\"link\":\"/guide/snapshot\"},{\"text\":\"订阅规则\",\"link\":\"/guide/subscription\"},{\"text\":\"外部交互\",\"link\":\"/guide/external\"},{\"text\":\"常见问题\",\"link\":\"/guide/faq\"}]},{\"text\":\"选择器\",\"items\":[{\"text\":\"语法介绍\",\"link\":\"/guide/selector\"},{\"text\":\"属性方法\",\"link\":\"/guide/node\"},{\"text\":\"选择示例\",\"link\":\"/guide/example\"},{\"text\":\"查询优化\",\"link\":\"/guide/optimize\"}]}],\"/api/\":[{\"link\":\"/api/\",\"text\":\"API Reference\"},{\"text\":\"Interfaces\",\"items\":[{\"text\":\"RawSubscription\",\"link\":\"/api/interfaces/RawSubscription.md\"},{\"text\":\"RawApp\",\"link\":\"/api/interfaces/RawApp.md\"},{\"text\":\"RawGlobalGroup\",\"link\":\"/api/interfaces/RawGlobalGroup.md\"},{\"text\":\"RawCategory\",\"link\":\"/api/interfaces/RawCategory.md\"},{\"text\":\"RawAppRule\",\"link\":\"/api/interfaces/RawAppRule.md\"},{\"text\":\"RawAppGroup\",\"link\":\"/api/interfaces/RawAppGroup.md\"},{\"text\":\"RawGlobalRule\",\"link\":\"/api/interfaces/RawGlobalRule.md\"},{\"text\":\"RawGlobalApp\",\"link\":\"/api/interfaces/RawGlobalApp.md\"},{\"text\":\"RawCommonProps\",\"link\":\"/api/interfaces/RawCommonProps.md\"},{\"text\":\"RawRuleProps\",\"link\":\"/api/interfaces/RawRuleProps.md\"},{\"text\":\"RawGroupProps\",\"link\":\"/api/interfaces/RawGroupProps.md\"},{\"text\":\"RawAppRuleProps\",\"link\":\"/api/interfaces/RawAppRuleProps.md\"},{\"text\":\"RawGlobalRuleProps\",\"link\":\"/api/interfaces/RawGlobalRuleProps.md\"}]},{\"text\":\"Type Aliases\",\"items\":[{\"text\":\"Position\",\"link\":\"/api/type-aliases/Position.md\"},{\"text\":\"IArray\",\"link\":\"/api/type-aliases/IArray.md\"},{\"text\":\"Integer\",\"link\":\"/api/type-aliases/Integer.md\"}]}]},\"editLink\":{\"pattern\":\"https://github.com/gkd-kit/docs/edit/main/docs/:path\",\"text\":\"为此页提供修改建议\"},\"search\":{\"provider\":\"local\",\"options\":{}},\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/gkd-kit\"}],\"footer\":{\"message\":\"Released under the GPL-v3 License.\",\"copyright\":\"Copyright © 2024 GKD. All rights reserved\"}},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":true}");</script>
22
22
 
23
23
 
24
24
  </body></html>