@gkd-kit/docs 0.0.1733308459983 → 0.0.1733378884201

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 (96) hide show
  1. package/.vitepress/dist/404.html +6 -6
  2. package/.vitepress/dist/api/index.html +10 -10
  3. package/.vitepress/dist/api/interfaces/RawApp.html +10 -10
  4. package/.vitepress/dist/api/interfaces/RawAppGroup.html +11 -11
  5. package/.vitepress/dist/api/interfaces/RawAppRule.html +11 -11
  6. package/.vitepress/dist/api/interfaces/RawAppRuleProps.html +10 -10
  7. package/.vitepress/dist/api/interfaces/RawCategory.html +10 -10
  8. package/.vitepress/dist/api/interfaces/RawCommonProps.html +11 -11
  9. package/.vitepress/dist/api/interfaces/RawGlobalApp.html +10 -10
  10. package/.vitepress/dist/api/interfaces/RawGlobalGroup.html +11 -11
  11. package/.vitepress/dist/api/interfaces/RawGlobalRule.html +11 -11
  12. package/.vitepress/dist/api/interfaces/RawGlobalRuleProps.html +10 -10
  13. package/.vitepress/dist/api/interfaces/RawGroupProps.html +11 -11
  14. package/.vitepress/dist/api/interfaces/RawRuleProps.html +11 -11
  15. package/.vitepress/dist/api/interfaces/RawSubscription.html +11 -11
  16. package/.vitepress/dist/api/type-aliases/IArray.html +11 -11
  17. package/.vitepress/dist/api/type-aliases/Integer.html +11 -11
  18. package/.vitepress/dist/api/type-aliases/Position.html +11 -11
  19. package/.vitepress/dist/assets/{api_index.md.DKuDmEX6.js → api_index.md.DpXyfY1L.js} +1 -1
  20. package/.vitepress/dist/assets/{api_index.md.DKuDmEX6.lean.js → api_index.md.DpXyfY1L.lean.js} +1 -1
  21. package/.vitepress/dist/assets/{api_interfaces_RawApp.md.DzpV2KMK.js → api_interfaces_RawApp.md.BpGr9CnK.js} +1 -1
  22. package/.vitepress/dist/assets/{api_interfaces_RawApp.md.DzpV2KMK.lean.js → api_interfaces_RawApp.md.BpGr9CnK.lean.js} +1 -1
  23. package/.vitepress/dist/assets/{api_interfaces_RawAppGroup.md.Cjj0tGzX.js → api_interfaces_RawAppGroup.md.DgTybHUK.js} +1 -1
  24. package/.vitepress/dist/assets/{api_interfaces_RawAppGroup.md.Cjj0tGzX.lean.js → api_interfaces_RawAppGroup.md.DgTybHUK.lean.js} +1 -1
  25. package/.vitepress/dist/assets/{api_interfaces_RawAppRule.md.CFuBkJqA.js → api_interfaces_RawAppRule.md.DXz0HCLH.js} +1 -1
  26. package/.vitepress/dist/assets/{api_interfaces_RawAppRule.md.CFuBkJqA.lean.js → api_interfaces_RawAppRule.md.DXz0HCLH.lean.js} +1 -1
  27. package/.vitepress/dist/assets/{api_interfaces_RawAppRuleProps.md.CT0qyd2j.js → api_interfaces_RawAppRuleProps.md.CmoqHafA.js} +1 -1
  28. package/.vitepress/dist/assets/{api_interfaces_RawAppRuleProps.md.CT0qyd2j.lean.js → api_interfaces_RawAppRuleProps.md.CmoqHafA.lean.js} +1 -1
  29. package/.vitepress/dist/assets/{api_interfaces_RawCategory.md.BFdiC_ZR.js → api_interfaces_RawCategory.md.CQlDJU2a.js} +1 -1
  30. package/.vitepress/dist/assets/{api_interfaces_RawCategory.md.BFdiC_ZR.lean.js → api_interfaces_RawCategory.md.CQlDJU2a.lean.js} +1 -1
  31. package/.vitepress/dist/assets/{api_interfaces_RawCommonProps.md.CZ8eD8ee.js → api_interfaces_RawCommonProps.md.C7Bm8Aiw.js} +1 -1
  32. package/.vitepress/dist/assets/{api_interfaces_RawCommonProps.md.CZ8eD8ee.lean.js → api_interfaces_RawCommonProps.md.C7Bm8Aiw.lean.js} +1 -1
  33. package/.vitepress/dist/assets/{api_interfaces_RawGlobalApp.md.DGsnPPpK.js → api_interfaces_RawGlobalApp.md.DLvGUcr3.js} +1 -1
  34. package/.vitepress/dist/assets/{api_interfaces_RawGlobalApp.md.DGsnPPpK.lean.js → api_interfaces_RawGlobalApp.md.DLvGUcr3.lean.js} +1 -1
  35. package/.vitepress/dist/assets/{api_interfaces_RawGlobalGroup.md.CDjaiyHd.js → api_interfaces_RawGlobalGroup.md.BauiRmV2.js} +1 -1
  36. package/.vitepress/dist/assets/{api_interfaces_RawGlobalGroup.md.CDjaiyHd.lean.js → api_interfaces_RawGlobalGroup.md.BauiRmV2.lean.js} +1 -1
  37. package/.vitepress/dist/assets/{api_interfaces_RawGlobalRule.md.CkS5O-5O.js → api_interfaces_RawGlobalRule.md.CkRXFpc0.js} +1 -1
  38. package/.vitepress/dist/assets/{api_interfaces_RawGlobalRule.md.CkS5O-5O.lean.js → api_interfaces_RawGlobalRule.md.CkRXFpc0.lean.js} +1 -1
  39. package/.vitepress/dist/assets/{api_interfaces_RawGlobalRuleProps.md.O2zEUp9l.js → api_interfaces_RawGlobalRuleProps.md.CqorLHIT.js} +1 -1
  40. package/.vitepress/dist/assets/{api_interfaces_RawGlobalRuleProps.md.O2zEUp9l.lean.js → api_interfaces_RawGlobalRuleProps.md.CqorLHIT.lean.js} +1 -1
  41. package/.vitepress/dist/assets/{api_interfaces_RawGroupProps.md.D_5-p1Q1.js → api_interfaces_RawGroupProps.md.BKxdlrTw.js} +1 -1
  42. package/.vitepress/dist/assets/{api_interfaces_RawGroupProps.md.D_5-p1Q1.lean.js → api_interfaces_RawGroupProps.md.BKxdlrTw.lean.js} +1 -1
  43. package/.vitepress/dist/assets/{api_interfaces_RawRuleProps.md.gps7hwWM.js → api_interfaces_RawRuleProps.md.Xpur0e3V.js} +1 -1
  44. package/.vitepress/dist/assets/{api_interfaces_RawRuleProps.md.gps7hwWM.lean.js → api_interfaces_RawRuleProps.md.Xpur0e3V.lean.js} +1 -1
  45. package/.vitepress/dist/assets/{api_interfaces_RawSubscription.md.FrgnlMxu.js → api_interfaces_RawSubscription.md.D6PNqAht.js} +1 -1
  46. package/.vitepress/dist/assets/{api_interfaces_RawSubscription.md.FrgnlMxu.lean.js → api_interfaces_RawSubscription.md.D6PNqAht.lean.js} +1 -1
  47. package/.vitepress/dist/assets/{api_type-aliases_IArray.md.DGYD8rnZ.js → api_type-aliases_IArray.md.BlW_x7iw.js} +1 -1
  48. package/.vitepress/dist/assets/{api_type-aliases_IArray.md.DGYD8rnZ.lean.js → api_type-aliases_IArray.md.BlW_x7iw.lean.js} +1 -1
  49. package/.vitepress/dist/assets/{api_type-aliases_Integer.md.DZZkK5nc.js → api_type-aliases_Integer.md.Cn7gzSLN.js} +1 -1
  50. package/.vitepress/dist/assets/{api_type-aliases_Integer.md.DZZkK5nc.lean.js → api_type-aliases_Integer.md.Cn7gzSLN.lean.js} +1 -1
  51. package/.vitepress/dist/assets/{api_type-aliases_Position.md.Bml6NhSx.js → api_type-aliases_Position.md.DStZhezQ.js} +1 -1
  52. package/.vitepress/dist/assets/{api_type-aliases_Position.md.Bml6NhSx.lean.js → api_type-aliases_Position.md.DStZhezQ.lean.js} +1 -1
  53. package/.vitepress/dist/assets/{app.CaKYjwJc.js → app.kbFQldJH.js} +1 -1
  54. package/.vitepress/dist/assets/chunks/@localSearchIndexroot.CEVe3hWR.js +1 -0
  55. package/.vitepress/dist/assets/chunks/{VPLocalSearchBox.t1f7UY2a.js → VPLocalSearchBox.NIrnDkcz.js} +2 -2
  56. package/.vitepress/dist/assets/chunks/{framework.DTQrLWmF.js → framework.CAQWXItu.js} +1 -1
  57. package/.vitepress/dist/assets/chunks/{index.DupBO4k1.js → index.BFTXGzWH.js} +1 -1
  58. package/.vitepress/dist/assets/chunks/theme.DepC60VK.js +1 -0
  59. package/.vitepress/dist/assets/{guide_example.md.CdB38gXU.js → guide_example.md.Buyei8TY.js} +1 -1
  60. package/.vitepress/dist/assets/{guide_example.md.CdB38gXU.lean.js → guide_example.md.Buyei8TY.lean.js} +1 -1
  61. package/.vitepress/dist/assets/{guide_external.md.sDO6A62W.js → guide_external.md.C65grevQ.js} +1 -1
  62. package/.vitepress/dist/assets/{guide_external.md.sDO6A62W.lean.js → guide_external.md.C65grevQ.lean.js} +1 -1
  63. package/.vitepress/dist/assets/{guide_faq.md.B-27Eu3c.js → guide_faq.md.B4UGU0nj.js} +1 -1
  64. package/.vitepress/dist/assets/{guide_faq.md.B-27Eu3c.lean.js → guide_faq.md.B4UGU0nj.lean.js} +1 -1
  65. package/.vitepress/dist/assets/{guide_index.md.C7sp2TeE.js → guide_index.md.Co-Lx2yY.js} +1 -1
  66. package/.vitepress/dist/assets/{guide_index.md.C7sp2TeE.lean.js → guide_index.md.Co-Lx2yY.lean.js} +1 -1
  67. package/.vitepress/dist/assets/{guide_node.md.DVZr-b07.js → guide_node.md.BkDq8Ota.js} +1 -1
  68. package/.vitepress/dist/assets/{guide_node.md.DVZr-b07.lean.js → guide_node.md.BkDq8Ota.lean.js} +1 -1
  69. package/.vitepress/dist/assets/{guide_optimize.md.D2yDkPK_.js → guide_optimize.md.Cn0sMV5b.js} +1 -1
  70. package/.vitepress/dist/assets/{guide_optimize.md.D2yDkPK_.lean.js → guide_optimize.md.Cn0sMV5b.lean.js} +1 -1
  71. package/.vitepress/dist/assets/{guide_selector.md.CbXZuso1.js → guide_selector.md.GlfYyiQH.js} +1 -1
  72. package/.vitepress/dist/assets/{guide_selector.md.CbXZuso1.lean.js → guide_selector.md.GlfYyiQH.lean.js} +1 -1
  73. package/.vitepress/dist/assets/{guide_snapshot.md.MUSYqnCR.js → guide_snapshot.md.DdOq4d7T.js} +1 -1
  74. package/.vitepress/dist/assets/{guide_snapshot.md.MUSYqnCR.lean.js → guide_snapshot.md.DdOq4d7T.lean.js} +1 -1
  75. package/.vitepress/dist/assets/{guide_subscription.md.NX9n7r2G.js → guide_subscription.md.2W0DB-5M.js} +1 -1
  76. package/.vitepress/dist/assets/{guide_subscription.md.NX9n7r2G.lean.js → guide_subscription.md.2W0DB-5M.lean.js} +1 -1
  77. package/.vitepress/dist/assets/{guide_what-is-gkd.md.Dp3QdtZg.js → guide_what-is-gkd.md.5M0M4iK3.js} +1 -1
  78. package/.vitepress/dist/assets/{guide_what-is-gkd.md.Dp3QdtZg.lean.js → guide_what-is-gkd.md.5M0M4iK3.lean.js} +1 -1
  79. package/.vitepress/dist/assets/{index.md.mclbGOKv.js → index.md.CQH9gHOg.js} +1 -1
  80. package/.vitepress/dist/assets/{index.md.mclbGOKv.lean.js → index.md.CQH9gHOg.lean.js} +1 -1
  81. package/.vitepress/dist/assets/style.B9Y-j_1n.css +1 -1
  82. package/.vitepress/dist/guide/example.html +10 -10
  83. package/.vitepress/dist/guide/external.html +10 -10
  84. package/.vitepress/dist/guide/faq.html +11 -11
  85. package/.vitepress/dist/guide/index.html +10 -10
  86. package/.vitepress/dist/guide/node.html +10 -10
  87. package/.vitepress/dist/guide/optimize.html +10 -10
  88. package/.vitepress/dist/guide/selector.html +11 -11
  89. package/.vitepress/dist/guide/snapshot.html +10 -10
  90. package/.vitepress/dist/guide/subscription.html +11 -11
  91. package/.vitepress/dist/guide/what-is-gkd.html +10 -10
  92. package/.vitepress/dist/hashmap.json +1 -1
  93. package/.vitepress/dist/index.html +10 -10
  94. package/package.json +1 -1
  95. package/.vitepress/dist/assets/chunks/@localSearchIndexroot.BbWXtAOB.js +0 -1
  96. package/.vitepress/dist/assets/chunks/theme.UdPjX8tL.js +0 -1
@@ -1 +1 @@
1
- import{_ as a,c as o,aa as t,o as r}from"./chunks/framework.DTQrLWmF.js";const h=JSON.parse('{"title":"RawAppRuleProps","description":"","frontmatter":{},"headers":[],"relativePath":"api/interfaces/RawAppRuleProps.md","filePath":"api/interfaces/RawAppRuleProps.md","lastUpdated":null}'),d={name:"api/interfaces/RawAppRuleProps.md"};function i(c,e,s,l,p,n){return r(),o("div",null,e[0]||(e[0]=[t('<h1 id="rawappruleprops" tabindex="-1">RawAppRuleProps <a class="header-anchor" href="#rawappruleprops" aria-label="Permalink to &quot;RawAppRuleProps&quot;">​</a></h1><p>应用规则(组)的基础通用属性</p><h2 id="extended-by" tabindex="-1">Extended by <a class="header-anchor" href="#extended-by" aria-label="Permalink to &quot;Extended by&quot;">​</a></h2><ul><li><a href="./RawAppRule"><code>RawAppRule</code></a></li><li><a href="./RawAppGroup"><code>RawAppGroup</code></a></li><li><a href="./RawGlobalApp"><code>RawGlobalApp</code></a></li></ul><h2 id="properties" tabindex="-1">Properties <a class="header-anchor" href="#properties" aria-label="Permalink to &quot;Properties&quot;">​</a></h2><h3 id="activityids" tabindex="-1">activityIds? <a class="header-anchor" href="#activityids" aria-label="Permalink to &quot;activityIds?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>activityIds</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<code>string</code>&gt;</p></blockquote><p>如果 界面Id startWith activityIds 的任意一项, 则匹配</p><p>如果要匹配所有界面: <code>undefined</code> (不填写) 或者 <code>[]</code> (避免使用上级属性)</p><p>如果 activityId 以 <code>.</code> 开头, 则等价于 appId + activityId</p><p>示例: <code>com.tencent.mm</code> (微信) 的某界面 <code>.MainActivity</code> 等价于 <code>com.tencent.mm.MainActivity</code></p><hr><h3 id="excludeactivityids" tabindex="-1">excludeActivityIds? <a class="header-anchor" href="#excludeactivityids" aria-label="Permalink to &quot;excludeActivityIds?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>excludeActivityIds</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<code>string</code>&gt;</p></blockquote><p>如果 设备界面Id startWith excludeActivityIds 的任意一项, 则排除匹配</p><p>优先级高于 activityIds</p><p>当 activityId 以 <code>.</code> 开头时, 与 activityIds 识别规则一致</p><hr><h3 id="versionnames" tabindex="-1">versionNames? <a class="header-anchor" href="#versionnames" aria-label="Permalink to &quot;versionNames?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>versionNames</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<code>string</code>&gt;</p></blockquote><p>如果应用版本名称包含在此列表中, 则匹配</p><hr><h3 id="excludeversionnames" tabindex="-1">excludeVersionNames? <a class="header-anchor" href="#excludeversionnames" aria-label="Permalink to &quot;excludeVersionNames?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>excludeVersionNames</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<code>string</code>&gt;</p></blockquote><p>如果应用版本名称包含在此列表中, 则排除匹配, 优先级高于 versionNames</p><hr><h3 id="versioncodes" tabindex="-1">versionCodes? <a class="header-anchor" href="#versioncodes" aria-label="Permalink to &quot;versionCodes?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>versionCodes</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<a href="./../type-aliases/Integer"><code>Integer</code></a>&gt;</p></blockquote><p>如果应用版本代码包含在此列表中, 则匹配</p><hr><h3 id="excludeversioncodes" tabindex="-1">excludeVersionCodes? <a class="header-anchor" href="#excludeversioncodes" aria-label="Permalink to &quot;excludeVersionCodes?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>excludeVersionCodes</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<a href="./../type-aliases/Integer"><code>Integer</code></a>&gt;</p></blockquote><p>如果应用版本代码包含在此列表中, 则排除匹配, 优先级高于 versionCodes</p>',33)]))}const y=a(d,[["render",i]]);export{h as __pageData,y as default};
1
+ import{_ as a,c as o,ab as t,o as r}from"./chunks/framework.CAQWXItu.js";const h=JSON.parse('{"title":"RawAppRuleProps","description":"","frontmatter":{},"headers":[],"relativePath":"api/interfaces/RawAppRuleProps.md","filePath":"api/interfaces/RawAppRuleProps.md","lastUpdated":null}'),d={name:"api/interfaces/RawAppRuleProps.md"};function i(c,e,s,l,p,n){return r(),o("div",null,e[0]||(e[0]=[t('<h1 id="rawappruleprops" tabindex="-1">RawAppRuleProps <a class="header-anchor" href="#rawappruleprops" aria-label="Permalink to &quot;RawAppRuleProps&quot;">​</a></h1><p>应用规则(组)的基础通用属性</p><h2 id="extended-by" tabindex="-1">Extended by <a class="header-anchor" href="#extended-by" aria-label="Permalink to &quot;Extended by&quot;">​</a></h2><ul><li><a href="./RawAppRule"><code>RawAppRule</code></a></li><li><a href="./RawAppGroup"><code>RawAppGroup</code></a></li><li><a href="./RawGlobalApp"><code>RawGlobalApp</code></a></li></ul><h2 id="properties" tabindex="-1">Properties <a class="header-anchor" href="#properties" aria-label="Permalink to &quot;Properties&quot;">​</a></h2><h3 id="activityids" tabindex="-1">activityIds? <a class="header-anchor" href="#activityids" aria-label="Permalink to &quot;activityIds?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>activityIds</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<code>string</code>&gt;</p></blockquote><p>如果 界面Id startWith activityIds 的任意一项, 则匹配</p><p>如果要匹配所有界面: <code>undefined</code> (不填写) 或者 <code>[]</code> (避免使用上级属性)</p><p>如果 activityId 以 <code>.</code> 开头, 则等价于 appId + activityId</p><p>示例: <code>com.tencent.mm</code> (微信) 的某界面 <code>.MainActivity</code> 等价于 <code>com.tencent.mm.MainActivity</code></p><hr><h3 id="excludeactivityids" tabindex="-1">excludeActivityIds? <a class="header-anchor" href="#excludeactivityids" aria-label="Permalink to &quot;excludeActivityIds?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>excludeActivityIds</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<code>string</code>&gt;</p></blockquote><p>如果 设备界面Id startWith excludeActivityIds 的任意一项, 则排除匹配</p><p>优先级高于 activityIds</p><p>当 activityId 以 <code>.</code> 开头时, 与 activityIds 识别规则一致</p><hr><h3 id="versionnames" tabindex="-1">versionNames? <a class="header-anchor" href="#versionnames" aria-label="Permalink to &quot;versionNames?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>versionNames</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<code>string</code>&gt;</p></blockquote><p>如果应用版本名称包含在此列表中, 则匹配</p><hr><h3 id="excludeversionnames" tabindex="-1">excludeVersionNames? <a class="header-anchor" href="#excludeversionnames" aria-label="Permalink to &quot;excludeVersionNames?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>excludeVersionNames</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<code>string</code>&gt;</p></blockquote><p>如果应用版本名称包含在此列表中, 则排除匹配, 优先级高于 versionNames</p><hr><h3 id="versioncodes" tabindex="-1">versionCodes? <a class="header-anchor" href="#versioncodes" aria-label="Permalink to &quot;versionCodes?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>versionCodes</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<a href="./../type-aliases/Integer"><code>Integer</code></a>&gt;</p></blockquote><p>如果应用版本代码包含在此列表中, 则匹配</p><hr><h3 id="excludeversioncodes" tabindex="-1">excludeVersionCodes? <a class="header-anchor" href="#excludeversioncodes" aria-label="Permalink to &quot;excludeVersionCodes?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>excludeVersionCodes</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<a href="./../type-aliases/Integer"><code>Integer</code></a>&gt;</p></blockquote><p>如果应用版本代码包含在此列表中, 则排除匹配, 优先级高于 versionCodes</p>',33)]))}const y=a(d,[["render",i]]);export{h as __pageData,y as default};
@@ -1 +1 @@
1
- import{_ as a,c as o,aa as t,o as r}from"./chunks/framework.DTQrLWmF.js";const h=JSON.parse('{"title":"RawAppRuleProps","description":"","frontmatter":{},"headers":[],"relativePath":"api/interfaces/RawAppRuleProps.md","filePath":"api/interfaces/RawAppRuleProps.md","lastUpdated":null}'),d={name:"api/interfaces/RawAppRuleProps.md"};function i(c,e,s,l,p,n){return r(),o("div",null,e[0]||(e[0]=[t('<h1 id="rawappruleprops" tabindex="-1">RawAppRuleProps <a class="header-anchor" href="#rawappruleprops" aria-label="Permalink to &quot;RawAppRuleProps&quot;">​</a></h1><p>应用规则(组)的基础通用属性</p><h2 id="extended-by" tabindex="-1">Extended by <a class="header-anchor" href="#extended-by" aria-label="Permalink to &quot;Extended by&quot;">​</a></h2><ul><li><a href="./RawAppRule"><code>RawAppRule</code></a></li><li><a href="./RawAppGroup"><code>RawAppGroup</code></a></li><li><a href="./RawGlobalApp"><code>RawGlobalApp</code></a></li></ul><h2 id="properties" tabindex="-1">Properties <a class="header-anchor" href="#properties" aria-label="Permalink to &quot;Properties&quot;">​</a></h2><h3 id="activityids" tabindex="-1">activityIds? <a class="header-anchor" href="#activityids" aria-label="Permalink to &quot;activityIds?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>activityIds</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<code>string</code>&gt;</p></blockquote><p>如果 界面Id startWith activityIds 的任意一项, 则匹配</p><p>如果要匹配所有界面: <code>undefined</code> (不填写) 或者 <code>[]</code> (避免使用上级属性)</p><p>如果 activityId 以 <code>.</code> 开头, 则等价于 appId + activityId</p><p>示例: <code>com.tencent.mm</code> (微信) 的某界面 <code>.MainActivity</code> 等价于 <code>com.tencent.mm.MainActivity</code></p><hr><h3 id="excludeactivityids" tabindex="-1">excludeActivityIds? <a class="header-anchor" href="#excludeactivityids" aria-label="Permalink to &quot;excludeActivityIds?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>excludeActivityIds</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<code>string</code>&gt;</p></blockquote><p>如果 设备界面Id startWith excludeActivityIds 的任意一项, 则排除匹配</p><p>优先级高于 activityIds</p><p>当 activityId 以 <code>.</code> 开头时, 与 activityIds 识别规则一致</p><hr><h3 id="versionnames" tabindex="-1">versionNames? <a class="header-anchor" href="#versionnames" aria-label="Permalink to &quot;versionNames?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>versionNames</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<code>string</code>&gt;</p></blockquote><p>如果应用版本名称包含在此列表中, 则匹配</p><hr><h3 id="excludeversionnames" tabindex="-1">excludeVersionNames? <a class="header-anchor" href="#excludeversionnames" aria-label="Permalink to &quot;excludeVersionNames?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>excludeVersionNames</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<code>string</code>&gt;</p></blockquote><p>如果应用版本名称包含在此列表中, 则排除匹配, 优先级高于 versionNames</p><hr><h3 id="versioncodes" tabindex="-1">versionCodes? <a class="header-anchor" href="#versioncodes" aria-label="Permalink to &quot;versionCodes?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>versionCodes</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<a href="./../type-aliases/Integer"><code>Integer</code></a>&gt;</p></blockquote><p>如果应用版本代码包含在此列表中, 则匹配</p><hr><h3 id="excludeversioncodes" tabindex="-1">excludeVersionCodes? <a class="header-anchor" href="#excludeversioncodes" aria-label="Permalink to &quot;excludeVersionCodes?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>excludeVersionCodes</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<a href="./../type-aliases/Integer"><code>Integer</code></a>&gt;</p></blockquote><p>如果应用版本代码包含在此列表中, 则排除匹配, 优先级高于 versionCodes</p>',33)]))}const y=a(d,[["render",i]]);export{h as __pageData,y as default};
1
+ import{_ as a,c as o,ab as t,o as r}from"./chunks/framework.CAQWXItu.js";const h=JSON.parse('{"title":"RawAppRuleProps","description":"","frontmatter":{},"headers":[],"relativePath":"api/interfaces/RawAppRuleProps.md","filePath":"api/interfaces/RawAppRuleProps.md","lastUpdated":null}'),d={name:"api/interfaces/RawAppRuleProps.md"};function i(c,e,s,l,p,n){return r(),o("div",null,e[0]||(e[0]=[t('<h1 id="rawappruleprops" tabindex="-1">RawAppRuleProps <a class="header-anchor" href="#rawappruleprops" aria-label="Permalink to &quot;RawAppRuleProps&quot;">​</a></h1><p>应用规则(组)的基础通用属性</p><h2 id="extended-by" tabindex="-1">Extended by <a class="header-anchor" href="#extended-by" aria-label="Permalink to &quot;Extended by&quot;">​</a></h2><ul><li><a href="./RawAppRule"><code>RawAppRule</code></a></li><li><a href="./RawAppGroup"><code>RawAppGroup</code></a></li><li><a href="./RawGlobalApp"><code>RawGlobalApp</code></a></li></ul><h2 id="properties" tabindex="-1">Properties <a class="header-anchor" href="#properties" aria-label="Permalink to &quot;Properties&quot;">​</a></h2><h3 id="activityids" tabindex="-1">activityIds? <a class="header-anchor" href="#activityids" aria-label="Permalink to &quot;activityIds?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>activityIds</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<code>string</code>&gt;</p></blockquote><p>如果 界面Id startWith activityIds 的任意一项, 则匹配</p><p>如果要匹配所有界面: <code>undefined</code> (不填写) 或者 <code>[]</code> (避免使用上级属性)</p><p>如果 activityId 以 <code>.</code> 开头, 则等价于 appId + activityId</p><p>示例: <code>com.tencent.mm</code> (微信) 的某界面 <code>.MainActivity</code> 等价于 <code>com.tencent.mm.MainActivity</code></p><hr><h3 id="excludeactivityids" tabindex="-1">excludeActivityIds? <a class="header-anchor" href="#excludeactivityids" aria-label="Permalink to &quot;excludeActivityIds?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>excludeActivityIds</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<code>string</code>&gt;</p></blockquote><p>如果 设备界面Id startWith excludeActivityIds 的任意一项, 则排除匹配</p><p>优先级高于 activityIds</p><p>当 activityId 以 <code>.</code> 开头时, 与 activityIds 识别规则一致</p><hr><h3 id="versionnames" tabindex="-1">versionNames? <a class="header-anchor" href="#versionnames" aria-label="Permalink to &quot;versionNames?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>versionNames</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<code>string</code>&gt;</p></blockquote><p>如果应用版本名称包含在此列表中, 则匹配</p><hr><h3 id="excludeversionnames" tabindex="-1">excludeVersionNames? <a class="header-anchor" href="#excludeversionnames" aria-label="Permalink to &quot;excludeVersionNames?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>excludeVersionNames</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<code>string</code>&gt;</p></blockquote><p>如果应用版本名称包含在此列表中, 则排除匹配, 优先级高于 versionNames</p><hr><h3 id="versioncodes" tabindex="-1">versionCodes? <a class="header-anchor" href="#versioncodes" aria-label="Permalink to &quot;versionCodes?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>versionCodes</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<a href="./../type-aliases/Integer"><code>Integer</code></a>&gt;</p></blockquote><p>如果应用版本代码包含在此列表中, 则匹配</p><hr><h3 id="excludeversioncodes" tabindex="-1">excludeVersionCodes? <a class="header-anchor" href="#excludeversioncodes" aria-label="Permalink to &quot;excludeVersionCodes?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>excludeVersionCodes</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<a href="./../type-aliases/Integer"><code>Integer</code></a>&gt;</p></blockquote><p>如果应用版本代码包含在此列表中, 则排除匹配, 优先级高于 versionCodes</p>',33)]))}const y=a(d,[["render",i]]);export{h as __pageData,y as default};
@@ -1 +1 @@
1
- import{_ as a,c as t,aa as o,o as r}from"./chunks/framework.DTQrLWmF.js";const u=JSON.parse('{"title":"RawCategory","description":"","frontmatter":{},"headers":[],"relativePath":"api/interfaces/RawCategory.md","filePath":"api/interfaces/RawCategory.md","lastUpdated":null}'),n={name:"api/interfaces/RawCategory.md"};function l(s,e,i,c,p,d){return r(),t("div",null,e[0]||(e[0]=[o('<h1 id="rawcategory" tabindex="-1">RawCategory <a class="header-anchor" href="#rawcategory" aria-label="Permalink to &quot;RawCategory&quot;">​</a></h1><p>应用规则分类</p><h2 id="properties" tabindex="-1">Properties <a class="header-anchor" href="#properties" aria-label="Permalink to &quot;Properties&quot;">​</a></h2><h3 id="key" tabindex="-1">key <a class="header-anchor" href="#key" aria-label="Permalink to &quot;key&quot;">​</a></h3><blockquote><p><strong>key</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>当前分类在列表中的唯一标识</p><p>也是客户端禁用/启用此分类组的依据</p><hr><h3 id="name" tabindex="-1">name <a class="header-anchor" href="#name" aria-label="Permalink to &quot;name&quot;">​</a></h3><blockquote><p><strong>name</strong>: <code>string</code></p></blockquote><p>分类名称</p><p>同时也是分类的依据, 捕获以 name 开头的所有应用规则组, 不捕获全局规则组</p><p>示例: <code>开屏广告</code> 将捕获 <code>开屏广告-1</code> <code>开屏广告-2</code> <code>开屏广告-233</code> 这类应用规则组</p><hr><h3 id="enable" tabindex="-1">enable? <a class="header-anchor" href="#enable" aria-label="Permalink to &quot;enable?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>enable</strong>: <code>boolean</code></p></blockquote><p>null =&gt; 跟随捕获的规则组的 enable 的默认值</p><p>true =&gt; 全部启用捕获的规则组</p><p>false =&gt; 全部禁用捕获的规则组</p><h4 id="default" tabindex="-1">Default <a class="header-anchor" href="#default" aria-label="Permalink to &quot;Default&quot;">​</a></h4><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">null</span></span></code></pre></div>',21)]))}const b=a(n,[["render",l]]);export{u as __pageData,b as default};
1
+ import{_ as a,c as t,ab as o,o as r}from"./chunks/framework.CAQWXItu.js";const u=JSON.parse('{"title":"RawCategory","description":"","frontmatter":{},"headers":[],"relativePath":"api/interfaces/RawCategory.md","filePath":"api/interfaces/RawCategory.md","lastUpdated":null}'),n={name:"api/interfaces/RawCategory.md"};function l(s,e,i,c,p,d){return r(),t("div",null,e[0]||(e[0]=[o('<h1 id="rawcategory" tabindex="-1">RawCategory <a class="header-anchor" href="#rawcategory" aria-label="Permalink to &quot;RawCategory&quot;">​</a></h1><p>应用规则分类</p><h2 id="properties" tabindex="-1">Properties <a class="header-anchor" href="#properties" aria-label="Permalink to &quot;Properties&quot;">​</a></h2><h3 id="key" tabindex="-1">key <a class="header-anchor" href="#key" aria-label="Permalink to &quot;key&quot;">​</a></h3><blockquote><p><strong>key</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>当前分类在列表中的唯一标识</p><p>也是客户端禁用/启用此分类组的依据</p><hr><h3 id="name" tabindex="-1">name <a class="header-anchor" href="#name" aria-label="Permalink to &quot;name&quot;">​</a></h3><blockquote><p><strong>name</strong>: <code>string</code></p></blockquote><p>分类名称</p><p>同时也是分类的依据, 捕获以 name 开头的所有应用规则组, 不捕获全局规则组</p><p>示例: <code>开屏广告</code> 将捕获 <code>开屏广告-1</code> <code>开屏广告-2</code> <code>开屏广告-233</code> 这类应用规则组</p><hr><h3 id="enable" tabindex="-1">enable? <a class="header-anchor" href="#enable" aria-label="Permalink to &quot;enable?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>enable</strong>: <code>boolean</code></p></blockquote><p>null =&gt; 跟随捕获的规则组的 enable 的默认值</p><p>true =&gt; 全部启用捕获的规则组</p><p>false =&gt; 全部禁用捕获的规则组</p><h4 id="default" tabindex="-1">Default <a class="header-anchor" href="#default" aria-label="Permalink to &quot;Default&quot;">​</a></h4><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">null</span></span></code></pre></div>',21)]))}const b=a(n,[["render",l]]);export{u as __pageData,b as default};
@@ -1 +1 @@
1
- import{_ as a,c as t,aa as o,o as r}from"./chunks/framework.DTQrLWmF.js";const u=JSON.parse('{"title":"RawCategory","description":"","frontmatter":{},"headers":[],"relativePath":"api/interfaces/RawCategory.md","filePath":"api/interfaces/RawCategory.md","lastUpdated":null}'),n={name:"api/interfaces/RawCategory.md"};function l(s,e,i,c,p,d){return r(),t("div",null,e[0]||(e[0]=[o('<h1 id="rawcategory" tabindex="-1">RawCategory <a class="header-anchor" href="#rawcategory" aria-label="Permalink to &quot;RawCategory&quot;">​</a></h1><p>应用规则分类</p><h2 id="properties" tabindex="-1">Properties <a class="header-anchor" href="#properties" aria-label="Permalink to &quot;Properties&quot;">​</a></h2><h3 id="key" tabindex="-1">key <a class="header-anchor" href="#key" aria-label="Permalink to &quot;key&quot;">​</a></h3><blockquote><p><strong>key</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>当前分类在列表中的唯一标识</p><p>也是客户端禁用/启用此分类组的依据</p><hr><h3 id="name" tabindex="-1">name <a class="header-anchor" href="#name" aria-label="Permalink to &quot;name&quot;">​</a></h3><blockquote><p><strong>name</strong>: <code>string</code></p></blockquote><p>分类名称</p><p>同时也是分类的依据, 捕获以 name 开头的所有应用规则组, 不捕获全局规则组</p><p>示例: <code>开屏广告</code> 将捕获 <code>开屏广告-1</code> <code>开屏广告-2</code> <code>开屏广告-233</code> 这类应用规则组</p><hr><h3 id="enable" tabindex="-1">enable? <a class="header-anchor" href="#enable" aria-label="Permalink to &quot;enable?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>enable</strong>: <code>boolean</code></p></blockquote><p>null =&gt; 跟随捕获的规则组的 enable 的默认值</p><p>true =&gt; 全部启用捕获的规则组</p><p>false =&gt; 全部禁用捕获的规则组</p><h4 id="default" tabindex="-1">Default <a class="header-anchor" href="#default" aria-label="Permalink to &quot;Default&quot;">​</a></h4><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">null</span></span></code></pre></div>',21)]))}const b=a(n,[["render",l]]);export{u as __pageData,b as default};
1
+ import{_ as a,c as t,ab as o,o as r}from"./chunks/framework.CAQWXItu.js";const u=JSON.parse('{"title":"RawCategory","description":"","frontmatter":{},"headers":[],"relativePath":"api/interfaces/RawCategory.md","filePath":"api/interfaces/RawCategory.md","lastUpdated":null}'),n={name:"api/interfaces/RawCategory.md"};function l(s,e,i,c,p,d){return r(),t("div",null,e[0]||(e[0]=[o('<h1 id="rawcategory" tabindex="-1">RawCategory <a class="header-anchor" href="#rawcategory" aria-label="Permalink to &quot;RawCategory&quot;">​</a></h1><p>应用规则分类</p><h2 id="properties" tabindex="-1">Properties <a class="header-anchor" href="#properties" aria-label="Permalink to &quot;Properties&quot;">​</a></h2><h3 id="key" tabindex="-1">key <a class="header-anchor" href="#key" aria-label="Permalink to &quot;key&quot;">​</a></h3><blockquote><p><strong>key</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>当前分类在列表中的唯一标识</p><p>也是客户端禁用/启用此分类组的依据</p><hr><h3 id="name" tabindex="-1">name <a class="header-anchor" href="#name" aria-label="Permalink to &quot;name&quot;">​</a></h3><blockquote><p><strong>name</strong>: <code>string</code></p></blockquote><p>分类名称</p><p>同时也是分类的依据, 捕获以 name 开头的所有应用规则组, 不捕获全局规则组</p><p>示例: <code>开屏广告</code> 将捕获 <code>开屏广告-1</code> <code>开屏广告-2</code> <code>开屏广告-233</code> 这类应用规则组</p><hr><h3 id="enable" tabindex="-1">enable? <a class="header-anchor" href="#enable" aria-label="Permalink to &quot;enable?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>enable</strong>: <code>boolean</code></p></blockquote><p>null =&gt; 跟随捕获的规则组的 enable 的默认值</p><p>true =&gt; 全部启用捕获的规则组</p><p>false =&gt; 全部禁用捕获的规则组</p><h4 id="default" tabindex="-1">Default <a class="header-anchor" href="#default" aria-label="Permalink to &quot;Default&quot;">​</a></h4><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">null</span></span></code></pre></div>',21)]))}const b=a(n,[["render",l]]);export{u as __pageData,b as default};
@@ -1,4 +1,4 @@
1
- import{_ as a,c as t,aa as o,o as i}from"./chunks/framework.DTQrLWmF.js";const u=JSON.parse('{"title":"RawCommonProps","description":"","frontmatter":{},"headers":[],"relativePath":"api/interfaces/RawCommonProps.md","filePath":"api/interfaces/RawCommonProps.md","lastUpdated":null}'),s={name:"api/interfaces/RawCommonProps.md"};function r(l,e,c,n,p,d){return i(),t("div",null,e[0]||(e[0]=[o(`<h1 id="rawcommonprops" tabindex="-1">RawCommonProps <a class="header-anchor" href="#rawcommonprops" aria-label="Permalink to &quot;RawCommonProps&quot;">​</a></h1><p>全局规则(组)和应用规则(组)的基础通用属性</p><h2 id="extended-by" tabindex="-1">Extended by <a class="header-anchor" href="#extended-by" aria-label="Permalink to &quot;Extended by&quot;">​</a></h2><ul><li><a href="./RawRuleProps"><code>RawRuleProps</code></a></li><li><a href="./RawGroupProps"><code>RawGroupProps</code></a></li></ul><h2 id="properties" tabindex="-1">Properties <a class="header-anchor" href="#properties" aria-label="Permalink to &quot;Properties&quot;">​</a></h2><h3 id="actioncd" tabindex="-1">actionCd? <a class="header-anchor" href="#actioncd" aria-label="Permalink to &quot;actionCd?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>actionCd</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>单位: 毫秒</p><p>当前规则的冷却时间, 或者执行 action 最小间隔</p><h4 id="default" tabindex="-1">Default <a class="header-anchor" href="#default" aria-label="Permalink to &quot;Default&quot;">​</a></h4><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">1000</span></span></code></pre></div><hr><h3 id="actiondelay" tabindex="-1">actionDelay? <a class="header-anchor" href="#actiondelay" aria-label="Permalink to &quot;actionDelay?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>actionDelay</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>单位: 毫秒</p><p>延迟执行: 查询到节点-&gt;等待一段时间-&gt;再次查询到节点则执行对应 action</p><hr><h3 id="quickfind" tabindex="-1">quickFind? <a class="header-anchor" href="#quickfind" aria-label="Permalink to &quot;quickFind?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>quickFind</strong>: <code>boolean</code></p></blockquote><p>注意: 将在未来版本弃用此属性, 请使用 <a href="./RawCommonProps#fastquery">fastQuery</a> 代替</p><p>如果开启, 此规则下的所有 <code>末尾属性选择器</code>的<code>第一个属性选择表达式</code>符合下面的结构之一的选择器 将使用快速查找</p><ul><li>[id=&#39;abc&#39;]</li><li>[vid=&#39;abc&#39;]</li><li>[text=&#39;abc&#39;]</li><li>[text^=&#39;abc&#39;]</li><li>[text*=&#39;abc&#39;]</li><li>[text$=&#39;abc&#39;]</li></ul><p>比如 <code>A &gt; B + C[id=&#39;x&#39;][childCount=2]</code> 符合, 但 <code>A &gt; B + C[childCount=2][id=&#39;x&#39;]</code> 不符合</p><p>它的底层原理是 跳过手动遍历所有节点 直接调用 <a href="https://developer.android.google.cn/reference/android/view/accessibility/AccessibilityNodeInfo#findAccessibilityNodeInfosByViewId(java.lang.String)" target="_blank" rel="noreferrer">findAccessibilityNodeInfosByViewId</a> / <a href="https://developer.android.google.cn/reference/android/view/accessibility/AccessibilityNodeInfo#findAccessibilityNodeInfosByText(java.lang.String)" target="_blank" rel="noreferrer">findAccessibilityNodeInfosByText</a> 得到可匹配节点</p><p>大多数情况下都能查询到, 在少数某些复杂结构下, 即使目标节点存在, 快速查询也不一定查询到</p><p>比如 <a href="https://github.com/gkd-kit/subscription/blob/1ae87452d287b558f58f9c4e4448a3190e212ca1/src/apps/com.zidongdianji.ts#L26" target="_blank" rel="noreferrer">Image &lt; @View + View &gt;2 [text*=&#39;广告&#39;]</a> 虽然符合快速查询的条件但是使用 <code>findAccessibilityNodeInfosByText(&quot;广告&quot;)</code> 并不能查询到节点</p><p>它是优点是快速, 因为遍历所有节点是一个耗时行为, 虽然多数情况下这种耗时较低</p><p>但是在某些软件比如 哔哩哔哩 的开屏广告在这种耗时下延迟可达 1-2s, 这也是导致 <a href="https://github.com/gkd-kit/gkd/issues/60" target="_blank" rel="noreferrer">gkd-kit/gkd#60</a> 的原因</p><p>如果你想对某个局部选择器关闭快速查找,只需要调整你的选择器的属性选择表达式的顺序使得它不符合快速查找的条件即可</p><h4 id="default-1" tabindex="-1">Default <a class="header-anchor" href="#default-1" aria-label="Permalink to &quot;Default&quot;">​</a></h4><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span></span></code></pre></div><hr><h3 id="fastquery" tabindex="-1">fastQuery? <a class="header-anchor" href="#fastquery" aria-label="Permalink to &quot;fastQuery?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>fastQuery</strong>: <code>boolean</code></p></blockquote><p>如果开启, 此规则下的所有满足 <strong>特定格式的选择器</strong> 将使用快速查找优化查询速度</p><p>详细文档请查看 <a href="https://gkd.li/selector/optimize" target="_blank" rel="noreferrer">查询优化</a></p><h4 id="default-2" tabindex="-1">Default <a class="header-anchor" href="#default-2" aria-label="Permalink to &quot;Default&quot;">​</a></h4><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span></span></code></pre></div><hr><h3 id="matchroot" tabindex="-1">matchRoot? <a class="header-anchor" href="#matchroot" aria-label="Permalink to &quot;matchRoot?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>matchRoot</strong>: <code>boolean</code></p></blockquote><p>此规则下的所有选择器是否直接从根节点开始匹配</p><p>GKD 的原理是监听系统屏幕节点变化 这时候会接收到一个事件节点, 默认从这个节点开始匹配到其子孙节点</p><p>常见情况是: 如果匹配的速度跟不上节点事件数量的产生速度, 下一次匹配的开始节点将变成根节点</p><p>但是如果节点事件产生速度较慢, 比如屏幕上只有一个节点(文本)在变化, 那么开始匹配的节点一直将是这个节点</p><p>此时如果你的选择器的末端属性选择器选择的不是这个节点, 那么匹配将会失败, 即使你能在网页审查工具查询到这个节点</p><p>为了解决这个问题, 你可以设置 matchRoot=true, 这样每次匹配都会从根节点开始匹配</p><p>以 <a href="https://i.gkd.li/i/16105497" target="_blank" rel="noreferrer">快照-16105497</a> 为例, 事件节点总是 _id=8 的节点, 此时如果你的选择器是 <code>[text*=&quot;15秒&quot;] - [text*=&quot;跳过&quot;]</code></p><p>在 matchRoot=false 的情况下, 你的匹配范围如下蓝框</p><p><img src="https://github.com/gkd-kit/gkd/assets/38517192/ec60677f-f0d7-4b0d-8ac2-56306852e4a0" alt="image"></p><p>而在 matchRoot=true 的情况下, 你的匹配范围如下蓝框</p><p><img src="https://github.com/gkd-kit/gkd/assets/38517192/33eb9029-c3c3-4a2e-ab60-a1f099371fef" alt="image"></p><h4 id="default-3" tabindex="-1">Default <a class="header-anchor" href="#default-3" aria-label="Permalink to &quot;Default&quot;">​</a></h4><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span></span></code></pre></div><hr><h3 id="matchdelay" tabindex="-1">matchDelay? <a class="header-anchor" href="#matchdelay" aria-label="Permalink to &quot;matchDelay?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>matchDelay</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>单位: 毫秒</p><p>匹配延迟</p><p>规则准备匹配/或被唤醒时, 等待一段时间, 使此规则参与查询屏幕节点</p><hr><h3 id="matchtime" tabindex="-1">matchTime? <a class="header-anchor" href="#matchtime" aria-label="Permalink to &quot;matchTime?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>matchTime</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>单位: 毫秒</p><p>规则匹配时间, 此规则参与查询屏幕节点时, 等待一段时间, 休眠此规则</p><p>例如某些应用的 开屏广告 的 activityId 容易误触/太广泛, 而开屏广告几乎只在应用切出来时出现, 设置一个有限匹配时间能避免后续的误触</p><hr><h3 id="actionmaximum" tabindex="-1">actionMaximum? <a class="header-anchor" href="#actionmaximum" aria-label="Permalink to &quot;actionMaximum?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>actionMaximum</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>最大执行次数</p><p>规则的 action 被执行的最大次数, 达到最大次数时, 休眠此规则</p><p>功能类似 matchTime, 适用于只需要执行一次的: 开屏广告/更新弹窗/青少年弹窗 一类规则</p><p>当规则准备匹配/或被唤醒时, 将重新计算次数</p><hr><h3 id="resetmatch" tabindex="-1">resetMatch? <a class="header-anchor" href="#resetmatch" aria-label="Permalink to &quot;resetMatch?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>resetMatch</strong>: <code>&quot;activity&quot;</code> | <code>&quot;app&quot;</code></p></blockquote><p>当规则因为 matchTime/actionMaximum 而休眠时, 如何唤醒此规则</p><h4 id="default-4" tabindex="-1">Default <a class="header-anchor" href="#default-4" aria-label="Permalink to &quot;Default&quot;">​</a></h4><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;activity&#39;</span></span></code></pre></div><h4 id="examples" tabindex="-1">Examples <a class="header-anchor" href="#examples" aria-label="Permalink to &quot;Examples&quot;">​</a></h4><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;activity&#39;</span></span>
1
+ import{_ as a,c as t,ab as o,o as i}from"./chunks/framework.CAQWXItu.js";const u=JSON.parse('{"title":"RawCommonProps","description":"","frontmatter":{},"headers":[],"relativePath":"api/interfaces/RawCommonProps.md","filePath":"api/interfaces/RawCommonProps.md","lastUpdated":null}'),s={name:"api/interfaces/RawCommonProps.md"};function r(l,e,c,n,p,d){return i(),t("div",null,e[0]||(e[0]=[o(`<h1 id="rawcommonprops" tabindex="-1">RawCommonProps <a class="header-anchor" href="#rawcommonprops" aria-label="Permalink to &quot;RawCommonProps&quot;">​</a></h1><p>全局规则(组)和应用规则(组)的基础通用属性</p><h2 id="extended-by" tabindex="-1">Extended by <a class="header-anchor" href="#extended-by" aria-label="Permalink to &quot;Extended by&quot;">​</a></h2><ul><li><a href="./RawRuleProps"><code>RawRuleProps</code></a></li><li><a href="./RawGroupProps"><code>RawGroupProps</code></a></li></ul><h2 id="properties" tabindex="-1">Properties <a class="header-anchor" href="#properties" aria-label="Permalink to &quot;Properties&quot;">​</a></h2><h3 id="actioncd" tabindex="-1">actionCd? <a class="header-anchor" href="#actioncd" aria-label="Permalink to &quot;actionCd?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>actionCd</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>单位: 毫秒</p><p>当前规则的冷却时间, 或者执行 action 最小间隔</p><h4 id="default" tabindex="-1">Default <a class="header-anchor" href="#default" aria-label="Permalink to &quot;Default&quot;">​</a></h4><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">1000</span></span></code></pre></div><hr><h3 id="actiondelay" tabindex="-1">actionDelay? <a class="header-anchor" href="#actiondelay" aria-label="Permalink to &quot;actionDelay?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>actionDelay</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>单位: 毫秒</p><p>延迟执行: 查询到节点-&gt;等待一段时间-&gt;再次查询到节点则执行对应 action</p><hr><h3 id="quickfind" tabindex="-1">quickFind? <a class="header-anchor" href="#quickfind" aria-label="Permalink to &quot;quickFind?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>quickFind</strong>: <code>boolean</code></p></blockquote><p>注意: 将在未来版本弃用此属性, 请使用 <a href="./RawCommonProps#fastquery">fastQuery</a> 代替</p><p>如果开启, 此规则下的所有 <code>末尾属性选择器</code>的<code>第一个属性选择表达式</code>符合下面的结构之一的选择器 将使用快速查找</p><ul><li>[id=&#39;abc&#39;]</li><li>[vid=&#39;abc&#39;]</li><li>[text=&#39;abc&#39;]</li><li>[text^=&#39;abc&#39;]</li><li>[text*=&#39;abc&#39;]</li><li>[text$=&#39;abc&#39;]</li></ul><p>比如 <code>A &gt; B + C[id=&#39;x&#39;][childCount=2]</code> 符合, 但 <code>A &gt; B + C[childCount=2][id=&#39;x&#39;]</code> 不符合</p><p>它的底层原理是 跳过手动遍历所有节点 直接调用 <a href="https://developer.android.google.cn/reference/android/view/accessibility/AccessibilityNodeInfo#findAccessibilityNodeInfosByViewId(java.lang.String)" target="_blank" rel="noreferrer">findAccessibilityNodeInfosByViewId</a> / <a href="https://developer.android.google.cn/reference/android/view/accessibility/AccessibilityNodeInfo#findAccessibilityNodeInfosByText(java.lang.String)" target="_blank" rel="noreferrer">findAccessibilityNodeInfosByText</a> 得到可匹配节点</p><p>大多数情况下都能查询到, 在少数某些复杂结构下, 即使目标节点存在, 快速查询也不一定查询到</p><p>比如 <a href="https://github.com/gkd-kit/subscription/blob/1ae87452d287b558f58f9c4e4448a3190e212ca1/src/apps/com.zidongdianji.ts#L26" target="_blank" rel="noreferrer">Image &lt; @View + View &gt;2 [text*=&#39;广告&#39;]</a> 虽然符合快速查询的条件但是使用 <code>findAccessibilityNodeInfosByText(&quot;广告&quot;)</code> 并不能查询到节点</p><p>它是优点是快速, 因为遍历所有节点是一个耗时行为, 虽然多数情况下这种耗时较低</p><p>但是在某些软件比如 哔哩哔哩 的开屏广告在这种耗时下延迟可达 1-2s, 这也是导致 <a href="https://github.com/gkd-kit/gkd/issues/60" target="_blank" rel="noreferrer">gkd-kit/gkd#60</a> 的原因</p><p>如果你想对某个局部选择器关闭快速查找,只需要调整你的选择器的属性选择表达式的顺序使得它不符合快速查找的条件即可</p><h4 id="default-1" tabindex="-1">Default <a class="header-anchor" href="#default-1" aria-label="Permalink to &quot;Default&quot;">​</a></h4><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span></span></code></pre></div><hr><h3 id="fastquery" tabindex="-1">fastQuery? <a class="header-anchor" href="#fastquery" aria-label="Permalink to &quot;fastQuery?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>fastQuery</strong>: <code>boolean</code></p></blockquote><p>如果开启, 此规则下的所有满足 <strong>特定格式的选择器</strong> 将使用快速查找优化查询速度</p><p>详细文档请查看 <a href="https://gkd.li/selector/optimize" target="_blank" rel="noreferrer">查询优化</a></p><h4 id="default-2" tabindex="-1">Default <a class="header-anchor" href="#default-2" aria-label="Permalink to &quot;Default&quot;">​</a></h4><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span></span></code></pre></div><hr><h3 id="matchroot" tabindex="-1">matchRoot? <a class="header-anchor" href="#matchroot" aria-label="Permalink to &quot;matchRoot?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>matchRoot</strong>: <code>boolean</code></p></blockquote><p>此规则下的所有选择器是否直接从根节点开始匹配</p><p>GKD 的原理是监听系统屏幕节点变化 这时候会接收到一个事件节点, 默认从这个节点开始匹配到其子孙节点</p><p>常见情况是: 如果匹配的速度跟不上节点事件数量的产生速度, 下一次匹配的开始节点将变成根节点</p><p>但是如果节点事件产生速度较慢, 比如屏幕上只有一个节点(文本)在变化, 那么开始匹配的节点一直将是这个节点</p><p>此时如果你的选择器的末端属性选择器选择的不是这个节点, 那么匹配将会失败, 即使你能在网页审查工具查询到这个节点</p><p>为了解决这个问题, 你可以设置 matchRoot=true, 这样每次匹配都会从根节点开始匹配</p><p>以 <a href="https://i.gkd.li/i/16105497" target="_blank" rel="noreferrer">快照-16105497</a> 为例, 事件节点总是 _id=8 的节点, 此时如果你的选择器是 <code>[text*=&quot;15秒&quot;] - [text*=&quot;跳过&quot;]</code></p><p>在 matchRoot=false 的情况下, 你的匹配范围如下蓝框</p><p><img src="https://github.com/gkd-kit/gkd/assets/38517192/ec60677f-f0d7-4b0d-8ac2-56306852e4a0" alt="image"></p><p>而在 matchRoot=true 的情况下, 你的匹配范围如下蓝框</p><p><img src="https://github.com/gkd-kit/gkd/assets/38517192/33eb9029-c3c3-4a2e-ab60-a1f099371fef" alt="image"></p><h4 id="default-3" tabindex="-1">Default <a class="header-anchor" href="#default-3" aria-label="Permalink to &quot;Default&quot;">​</a></h4><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span></span></code></pre></div><hr><h3 id="matchdelay" tabindex="-1">matchDelay? <a class="header-anchor" href="#matchdelay" aria-label="Permalink to &quot;matchDelay?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>matchDelay</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>单位: 毫秒</p><p>匹配延迟</p><p>规则准备匹配/或被唤醒时, 等待一段时间, 使此规则参与查询屏幕节点</p><hr><h3 id="matchtime" tabindex="-1">matchTime? <a class="header-anchor" href="#matchtime" aria-label="Permalink to &quot;matchTime?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>matchTime</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>单位: 毫秒</p><p>规则匹配时间, 此规则参与查询屏幕节点时, 等待一段时间, 休眠此规则</p><p>例如某些应用的 开屏广告 的 activityId 容易误触/太广泛, 而开屏广告几乎只在应用切出来时出现, 设置一个有限匹配时间能避免后续的误触</p><hr><h3 id="actionmaximum" tabindex="-1">actionMaximum? <a class="header-anchor" href="#actionmaximum" aria-label="Permalink to &quot;actionMaximum?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>actionMaximum</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>最大执行次数</p><p>规则的 action 被执行的最大次数, 达到最大次数时, 休眠此规则</p><p>功能类似 matchTime, 适用于只需要执行一次的: 开屏广告/更新弹窗/青少年弹窗 一类规则</p><p>当规则准备匹配/或被唤醒时, 将重新计算次数</p><hr><h3 id="resetmatch" tabindex="-1">resetMatch? <a class="header-anchor" href="#resetmatch" aria-label="Permalink to &quot;resetMatch?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>resetMatch</strong>: <code>&quot;activity&quot;</code> | <code>&quot;app&quot;</code></p></blockquote><p>当规则因为 matchTime/actionMaximum 而休眠时, 如何唤醒此规则</p><h4 id="default-4" tabindex="-1">Default <a class="header-anchor" href="#default-4" aria-label="Permalink to &quot;Default&quot;">​</a></h4><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;activity&#39;</span></span></code></pre></div><h4 id="examples" tabindex="-1">Examples <a class="header-anchor" href="#examples" aria-label="Permalink to &quot;Examples&quot;">​</a></h4><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;activity&#39;</span></span>
2
2
  <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 当 activity 刷新时, 唤醒规则</span></span>
3
3
  <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 刷新 activity 并不代表 activityId 变化</span></span>
4
4
  <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 如 哔哩哔哩视频播放页 底部点击推荐视频 进入另一个 视频播放页, 进入了新 activity 但是 activityId 并没有变化</span></span></code></pre></div><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;app&#39;</span></span>
@@ -1,4 +1,4 @@
1
- import{_ as a,c as t,aa as o,o as i}from"./chunks/framework.DTQrLWmF.js";const u=JSON.parse('{"title":"RawCommonProps","description":"","frontmatter":{},"headers":[],"relativePath":"api/interfaces/RawCommonProps.md","filePath":"api/interfaces/RawCommonProps.md","lastUpdated":null}'),s={name:"api/interfaces/RawCommonProps.md"};function r(l,e,c,n,p,d){return i(),t("div",null,e[0]||(e[0]=[o(`<h1 id="rawcommonprops" tabindex="-1">RawCommonProps <a class="header-anchor" href="#rawcommonprops" aria-label="Permalink to &quot;RawCommonProps&quot;">​</a></h1><p>全局规则(组)和应用规则(组)的基础通用属性</p><h2 id="extended-by" tabindex="-1">Extended by <a class="header-anchor" href="#extended-by" aria-label="Permalink to &quot;Extended by&quot;">​</a></h2><ul><li><a href="./RawRuleProps"><code>RawRuleProps</code></a></li><li><a href="./RawGroupProps"><code>RawGroupProps</code></a></li></ul><h2 id="properties" tabindex="-1">Properties <a class="header-anchor" href="#properties" aria-label="Permalink to &quot;Properties&quot;">​</a></h2><h3 id="actioncd" tabindex="-1">actionCd? <a class="header-anchor" href="#actioncd" aria-label="Permalink to &quot;actionCd?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>actionCd</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>单位: 毫秒</p><p>当前规则的冷却时间, 或者执行 action 最小间隔</p><h4 id="default" tabindex="-1">Default <a class="header-anchor" href="#default" aria-label="Permalink to &quot;Default&quot;">​</a></h4><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">1000</span></span></code></pre></div><hr><h3 id="actiondelay" tabindex="-1">actionDelay? <a class="header-anchor" href="#actiondelay" aria-label="Permalink to &quot;actionDelay?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>actionDelay</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>单位: 毫秒</p><p>延迟执行: 查询到节点-&gt;等待一段时间-&gt;再次查询到节点则执行对应 action</p><hr><h3 id="quickfind" tabindex="-1">quickFind? <a class="header-anchor" href="#quickfind" aria-label="Permalink to &quot;quickFind?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>quickFind</strong>: <code>boolean</code></p></blockquote><p>注意: 将在未来版本弃用此属性, 请使用 <a href="./RawCommonProps#fastquery">fastQuery</a> 代替</p><p>如果开启, 此规则下的所有 <code>末尾属性选择器</code>的<code>第一个属性选择表达式</code>符合下面的结构之一的选择器 将使用快速查找</p><ul><li>[id=&#39;abc&#39;]</li><li>[vid=&#39;abc&#39;]</li><li>[text=&#39;abc&#39;]</li><li>[text^=&#39;abc&#39;]</li><li>[text*=&#39;abc&#39;]</li><li>[text$=&#39;abc&#39;]</li></ul><p>比如 <code>A &gt; B + C[id=&#39;x&#39;][childCount=2]</code> 符合, 但 <code>A &gt; B + C[childCount=2][id=&#39;x&#39;]</code> 不符合</p><p>它的底层原理是 跳过手动遍历所有节点 直接调用 <a href="https://developer.android.google.cn/reference/android/view/accessibility/AccessibilityNodeInfo#findAccessibilityNodeInfosByViewId(java.lang.String)" target="_blank" rel="noreferrer">findAccessibilityNodeInfosByViewId</a> / <a href="https://developer.android.google.cn/reference/android/view/accessibility/AccessibilityNodeInfo#findAccessibilityNodeInfosByText(java.lang.String)" target="_blank" rel="noreferrer">findAccessibilityNodeInfosByText</a> 得到可匹配节点</p><p>大多数情况下都能查询到, 在少数某些复杂结构下, 即使目标节点存在, 快速查询也不一定查询到</p><p>比如 <a href="https://github.com/gkd-kit/subscription/blob/1ae87452d287b558f58f9c4e4448a3190e212ca1/src/apps/com.zidongdianji.ts#L26" target="_blank" rel="noreferrer">Image &lt; @View + View &gt;2 [text*=&#39;广告&#39;]</a> 虽然符合快速查询的条件但是使用 <code>findAccessibilityNodeInfosByText(&quot;广告&quot;)</code> 并不能查询到节点</p><p>它是优点是快速, 因为遍历所有节点是一个耗时行为, 虽然多数情况下这种耗时较低</p><p>但是在某些软件比如 哔哩哔哩 的开屏广告在这种耗时下延迟可达 1-2s, 这也是导致 <a href="https://github.com/gkd-kit/gkd/issues/60" target="_blank" rel="noreferrer">gkd-kit/gkd#60</a> 的原因</p><p>如果你想对某个局部选择器关闭快速查找,只需要调整你的选择器的属性选择表达式的顺序使得它不符合快速查找的条件即可</p><h4 id="default-1" tabindex="-1">Default <a class="header-anchor" href="#default-1" aria-label="Permalink to &quot;Default&quot;">​</a></h4><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span></span></code></pre></div><hr><h3 id="fastquery" tabindex="-1">fastQuery? <a class="header-anchor" href="#fastquery" aria-label="Permalink to &quot;fastQuery?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>fastQuery</strong>: <code>boolean</code></p></blockquote><p>如果开启, 此规则下的所有满足 <strong>特定格式的选择器</strong> 将使用快速查找优化查询速度</p><p>详细文档请查看 <a href="https://gkd.li/selector/optimize" target="_blank" rel="noreferrer">查询优化</a></p><h4 id="default-2" tabindex="-1">Default <a class="header-anchor" href="#default-2" aria-label="Permalink to &quot;Default&quot;">​</a></h4><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span></span></code></pre></div><hr><h3 id="matchroot" tabindex="-1">matchRoot? <a class="header-anchor" href="#matchroot" aria-label="Permalink to &quot;matchRoot?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>matchRoot</strong>: <code>boolean</code></p></blockquote><p>此规则下的所有选择器是否直接从根节点开始匹配</p><p>GKD 的原理是监听系统屏幕节点变化 这时候会接收到一个事件节点, 默认从这个节点开始匹配到其子孙节点</p><p>常见情况是: 如果匹配的速度跟不上节点事件数量的产生速度, 下一次匹配的开始节点将变成根节点</p><p>但是如果节点事件产生速度较慢, 比如屏幕上只有一个节点(文本)在变化, 那么开始匹配的节点一直将是这个节点</p><p>此时如果你的选择器的末端属性选择器选择的不是这个节点, 那么匹配将会失败, 即使你能在网页审查工具查询到这个节点</p><p>为了解决这个问题, 你可以设置 matchRoot=true, 这样每次匹配都会从根节点开始匹配</p><p>以 <a href="https://i.gkd.li/i/16105497" target="_blank" rel="noreferrer">快照-16105497</a> 为例, 事件节点总是 _id=8 的节点, 此时如果你的选择器是 <code>[text*=&quot;15秒&quot;] - [text*=&quot;跳过&quot;]</code></p><p>在 matchRoot=false 的情况下, 你的匹配范围如下蓝框</p><p><img src="https://github.com/gkd-kit/gkd/assets/38517192/ec60677f-f0d7-4b0d-8ac2-56306852e4a0" alt="image"></p><p>而在 matchRoot=true 的情况下, 你的匹配范围如下蓝框</p><p><img src="https://github.com/gkd-kit/gkd/assets/38517192/33eb9029-c3c3-4a2e-ab60-a1f099371fef" alt="image"></p><h4 id="default-3" tabindex="-1">Default <a class="header-anchor" href="#default-3" aria-label="Permalink to &quot;Default&quot;">​</a></h4><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span></span></code></pre></div><hr><h3 id="matchdelay" tabindex="-1">matchDelay? <a class="header-anchor" href="#matchdelay" aria-label="Permalink to &quot;matchDelay?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>matchDelay</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>单位: 毫秒</p><p>匹配延迟</p><p>规则准备匹配/或被唤醒时, 等待一段时间, 使此规则参与查询屏幕节点</p><hr><h3 id="matchtime" tabindex="-1">matchTime? <a class="header-anchor" href="#matchtime" aria-label="Permalink to &quot;matchTime?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>matchTime</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>单位: 毫秒</p><p>规则匹配时间, 此规则参与查询屏幕节点时, 等待一段时间, 休眠此规则</p><p>例如某些应用的 开屏广告 的 activityId 容易误触/太广泛, 而开屏广告几乎只在应用切出来时出现, 设置一个有限匹配时间能避免后续的误触</p><hr><h3 id="actionmaximum" tabindex="-1">actionMaximum? <a class="header-anchor" href="#actionmaximum" aria-label="Permalink to &quot;actionMaximum?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>actionMaximum</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>最大执行次数</p><p>规则的 action 被执行的最大次数, 达到最大次数时, 休眠此规则</p><p>功能类似 matchTime, 适用于只需要执行一次的: 开屏广告/更新弹窗/青少年弹窗 一类规则</p><p>当规则准备匹配/或被唤醒时, 将重新计算次数</p><hr><h3 id="resetmatch" tabindex="-1">resetMatch? <a class="header-anchor" href="#resetmatch" aria-label="Permalink to &quot;resetMatch?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>resetMatch</strong>: <code>&quot;activity&quot;</code> | <code>&quot;app&quot;</code></p></blockquote><p>当规则因为 matchTime/actionMaximum 而休眠时, 如何唤醒此规则</p><h4 id="default-4" tabindex="-1">Default <a class="header-anchor" href="#default-4" aria-label="Permalink to &quot;Default&quot;">​</a></h4><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;activity&#39;</span></span></code></pre></div><h4 id="examples" tabindex="-1">Examples <a class="header-anchor" href="#examples" aria-label="Permalink to &quot;Examples&quot;">​</a></h4><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;activity&#39;</span></span>
1
+ import{_ as a,c as t,ab as o,o as i}from"./chunks/framework.CAQWXItu.js";const u=JSON.parse('{"title":"RawCommonProps","description":"","frontmatter":{},"headers":[],"relativePath":"api/interfaces/RawCommonProps.md","filePath":"api/interfaces/RawCommonProps.md","lastUpdated":null}'),s={name:"api/interfaces/RawCommonProps.md"};function r(l,e,c,n,p,d){return i(),t("div",null,e[0]||(e[0]=[o(`<h1 id="rawcommonprops" tabindex="-1">RawCommonProps <a class="header-anchor" href="#rawcommonprops" aria-label="Permalink to &quot;RawCommonProps&quot;">​</a></h1><p>全局规则(组)和应用规则(组)的基础通用属性</p><h2 id="extended-by" tabindex="-1">Extended by <a class="header-anchor" href="#extended-by" aria-label="Permalink to &quot;Extended by&quot;">​</a></h2><ul><li><a href="./RawRuleProps"><code>RawRuleProps</code></a></li><li><a href="./RawGroupProps"><code>RawGroupProps</code></a></li></ul><h2 id="properties" tabindex="-1">Properties <a class="header-anchor" href="#properties" aria-label="Permalink to &quot;Properties&quot;">​</a></h2><h3 id="actioncd" tabindex="-1">actionCd? <a class="header-anchor" href="#actioncd" aria-label="Permalink to &quot;actionCd?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>actionCd</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>单位: 毫秒</p><p>当前规则的冷却时间, 或者执行 action 最小间隔</p><h4 id="default" tabindex="-1">Default <a class="header-anchor" href="#default" aria-label="Permalink to &quot;Default&quot;">​</a></h4><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">1000</span></span></code></pre></div><hr><h3 id="actiondelay" tabindex="-1">actionDelay? <a class="header-anchor" href="#actiondelay" aria-label="Permalink to &quot;actionDelay?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>actionDelay</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>单位: 毫秒</p><p>延迟执行: 查询到节点-&gt;等待一段时间-&gt;再次查询到节点则执行对应 action</p><hr><h3 id="quickfind" tabindex="-1">quickFind? <a class="header-anchor" href="#quickfind" aria-label="Permalink to &quot;quickFind?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>quickFind</strong>: <code>boolean</code></p></blockquote><p>注意: 将在未来版本弃用此属性, 请使用 <a href="./RawCommonProps#fastquery">fastQuery</a> 代替</p><p>如果开启, 此规则下的所有 <code>末尾属性选择器</code>的<code>第一个属性选择表达式</code>符合下面的结构之一的选择器 将使用快速查找</p><ul><li>[id=&#39;abc&#39;]</li><li>[vid=&#39;abc&#39;]</li><li>[text=&#39;abc&#39;]</li><li>[text^=&#39;abc&#39;]</li><li>[text*=&#39;abc&#39;]</li><li>[text$=&#39;abc&#39;]</li></ul><p>比如 <code>A &gt; B + C[id=&#39;x&#39;][childCount=2]</code> 符合, 但 <code>A &gt; B + C[childCount=2][id=&#39;x&#39;]</code> 不符合</p><p>它的底层原理是 跳过手动遍历所有节点 直接调用 <a href="https://developer.android.google.cn/reference/android/view/accessibility/AccessibilityNodeInfo#findAccessibilityNodeInfosByViewId(java.lang.String)" target="_blank" rel="noreferrer">findAccessibilityNodeInfosByViewId</a> / <a href="https://developer.android.google.cn/reference/android/view/accessibility/AccessibilityNodeInfo#findAccessibilityNodeInfosByText(java.lang.String)" target="_blank" rel="noreferrer">findAccessibilityNodeInfosByText</a> 得到可匹配节点</p><p>大多数情况下都能查询到, 在少数某些复杂结构下, 即使目标节点存在, 快速查询也不一定查询到</p><p>比如 <a href="https://github.com/gkd-kit/subscription/blob/1ae87452d287b558f58f9c4e4448a3190e212ca1/src/apps/com.zidongdianji.ts#L26" target="_blank" rel="noreferrer">Image &lt; @View + View &gt;2 [text*=&#39;广告&#39;]</a> 虽然符合快速查询的条件但是使用 <code>findAccessibilityNodeInfosByText(&quot;广告&quot;)</code> 并不能查询到节点</p><p>它是优点是快速, 因为遍历所有节点是一个耗时行为, 虽然多数情况下这种耗时较低</p><p>但是在某些软件比如 哔哩哔哩 的开屏广告在这种耗时下延迟可达 1-2s, 这也是导致 <a href="https://github.com/gkd-kit/gkd/issues/60" target="_blank" rel="noreferrer">gkd-kit/gkd#60</a> 的原因</p><p>如果你想对某个局部选择器关闭快速查找,只需要调整你的选择器的属性选择表达式的顺序使得它不符合快速查找的条件即可</p><h4 id="default-1" tabindex="-1">Default <a class="header-anchor" href="#default-1" aria-label="Permalink to &quot;Default&quot;">​</a></h4><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span></span></code></pre></div><hr><h3 id="fastquery" tabindex="-1">fastQuery? <a class="header-anchor" href="#fastquery" aria-label="Permalink to &quot;fastQuery?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>fastQuery</strong>: <code>boolean</code></p></blockquote><p>如果开启, 此规则下的所有满足 <strong>特定格式的选择器</strong> 将使用快速查找优化查询速度</p><p>详细文档请查看 <a href="https://gkd.li/selector/optimize" target="_blank" rel="noreferrer">查询优化</a></p><h4 id="default-2" tabindex="-1">Default <a class="header-anchor" href="#default-2" aria-label="Permalink to &quot;Default&quot;">​</a></h4><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span></span></code></pre></div><hr><h3 id="matchroot" tabindex="-1">matchRoot? <a class="header-anchor" href="#matchroot" aria-label="Permalink to &quot;matchRoot?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>matchRoot</strong>: <code>boolean</code></p></blockquote><p>此规则下的所有选择器是否直接从根节点开始匹配</p><p>GKD 的原理是监听系统屏幕节点变化 这时候会接收到一个事件节点, 默认从这个节点开始匹配到其子孙节点</p><p>常见情况是: 如果匹配的速度跟不上节点事件数量的产生速度, 下一次匹配的开始节点将变成根节点</p><p>但是如果节点事件产生速度较慢, 比如屏幕上只有一个节点(文本)在变化, 那么开始匹配的节点一直将是这个节点</p><p>此时如果你的选择器的末端属性选择器选择的不是这个节点, 那么匹配将会失败, 即使你能在网页审查工具查询到这个节点</p><p>为了解决这个问题, 你可以设置 matchRoot=true, 这样每次匹配都会从根节点开始匹配</p><p>以 <a href="https://i.gkd.li/i/16105497" target="_blank" rel="noreferrer">快照-16105497</a> 为例, 事件节点总是 _id=8 的节点, 此时如果你的选择器是 <code>[text*=&quot;15秒&quot;] - [text*=&quot;跳过&quot;]</code></p><p>在 matchRoot=false 的情况下, 你的匹配范围如下蓝框</p><p><img src="https://github.com/gkd-kit/gkd/assets/38517192/ec60677f-f0d7-4b0d-8ac2-56306852e4a0" alt="image"></p><p>而在 matchRoot=true 的情况下, 你的匹配范围如下蓝框</p><p><img src="https://github.com/gkd-kit/gkd/assets/38517192/33eb9029-c3c3-4a2e-ab60-a1f099371fef" alt="image"></p><h4 id="default-3" tabindex="-1">Default <a class="header-anchor" href="#default-3" aria-label="Permalink to &quot;Default&quot;">​</a></h4><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span></span></code></pre></div><hr><h3 id="matchdelay" tabindex="-1">matchDelay? <a class="header-anchor" href="#matchdelay" aria-label="Permalink to &quot;matchDelay?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>matchDelay</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>单位: 毫秒</p><p>匹配延迟</p><p>规则准备匹配/或被唤醒时, 等待一段时间, 使此规则参与查询屏幕节点</p><hr><h3 id="matchtime" tabindex="-1">matchTime? <a class="header-anchor" href="#matchtime" aria-label="Permalink to &quot;matchTime?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>matchTime</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>单位: 毫秒</p><p>规则匹配时间, 此规则参与查询屏幕节点时, 等待一段时间, 休眠此规则</p><p>例如某些应用的 开屏广告 的 activityId 容易误触/太广泛, 而开屏广告几乎只在应用切出来时出现, 设置一个有限匹配时间能避免后续的误触</p><hr><h3 id="actionmaximum" tabindex="-1">actionMaximum? <a class="header-anchor" href="#actionmaximum" aria-label="Permalink to &quot;actionMaximum?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>actionMaximum</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>最大执行次数</p><p>规则的 action 被执行的最大次数, 达到最大次数时, 休眠此规则</p><p>功能类似 matchTime, 适用于只需要执行一次的: 开屏广告/更新弹窗/青少年弹窗 一类规则</p><p>当规则准备匹配/或被唤醒时, 将重新计算次数</p><hr><h3 id="resetmatch" tabindex="-1">resetMatch? <a class="header-anchor" href="#resetmatch" aria-label="Permalink to &quot;resetMatch?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>resetMatch</strong>: <code>&quot;activity&quot;</code> | <code>&quot;app&quot;</code></p></blockquote><p>当规则因为 matchTime/actionMaximum 而休眠时, 如何唤醒此规则</p><h4 id="default-4" tabindex="-1">Default <a class="header-anchor" href="#default-4" aria-label="Permalink to &quot;Default&quot;">​</a></h4><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;activity&#39;</span></span></code></pre></div><h4 id="examples" tabindex="-1">Examples <a class="header-anchor" href="#examples" aria-label="Permalink to &quot;Examples&quot;">​</a></h4><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;activity&#39;</span></span>
2
2
  <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 当 activity 刷新时, 唤醒规则</span></span>
3
3
  <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 刷新 activity 并不代表 activityId 变化</span></span>
4
4
  <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 如 哔哩哔哩视频播放页 底部点击推荐视频 进入另一个 视频播放页, 进入了新 activity 但是 activityId 并没有变化</span></span></code></pre></div><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;app&#39;</span></span>
@@ -1 +1 @@
1
- import{_ as a,c as o,aa as r,o as t}from"./chunks/framework.DTQrLWmF.js";const u=JSON.parse('{"title":"RawGlobalApp","description":"","frontmatter":{},"headers":[],"relativePath":"api/interfaces/RawGlobalApp.md","filePath":"api/interfaces/RawGlobalApp.md","lastUpdated":null}'),i={name:"api/interfaces/RawGlobalApp.md"};function d(s,e,c,l,n,p){return t(),o("div",null,e[0]||(e[0]=[r('<h1 id="rawglobalapp" tabindex="-1">RawGlobalApp <a class="header-anchor" href="#rawglobalapp" aria-label="Permalink to &quot;RawGlobalApp&quot;">​</a></h1><p>全局规则应用配置</p><h2 id="extends" tabindex="-1">Extends <a class="header-anchor" href="#extends" aria-label="Permalink to &quot;Extends&quot;">​</a></h2><ul><li><a href="./RawAppRuleProps"><code>RawAppRuleProps</code></a></li></ul><h2 id="properties" tabindex="-1">Properties <a class="header-anchor" href="#properties" aria-label="Permalink to &quot;Properties&quot;">​</a></h2><h3 id="id" tabindex="-1">id <a class="header-anchor" href="#id" aria-label="Permalink to &quot;id&quot;">​</a></h3><blockquote><p><strong>id</strong>: <code>string</code></p></blockquote><p>目标应用的包名</p><hr><h3 id="enable" tabindex="-1">enable? <a class="header-anchor" href="#enable" aria-label="Permalink to &quot;enable?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>enable</strong>: <code>boolean</code></p></blockquote><p>在此应用启用/禁用此规则</p><h4 id="default" tabindex="-1">Default <a class="header-anchor" href="#default" aria-label="Permalink to &quot;Default&quot;">​</a></h4><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span></span></code></pre></div><hr><h3 id="activityids" tabindex="-1">activityIds? <a class="header-anchor" href="#activityids" aria-label="Permalink to &quot;activityIds?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>activityIds</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<code>string</code>&gt;</p></blockquote><p>如果 界面Id startWith activityIds 的任意一项, 则匹配</p><p>如果要匹配所有界面: <code>undefined</code> (不填写) 或者 <code>[]</code> (避免使用上级属性)</p><p>如果 activityId 以 <code>.</code> 开头, 则等价于 appId + activityId</p><p>示例: <code>com.tencent.mm</code> (微信) 的某界面 <code>.MainActivity</code> 等价于 <code>com.tencent.mm.MainActivity</code></p><h4 id="inherited-from" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from" aria-label="Permalink to &quot;Inherited from&quot;">​</a></h4><p><a href="./RawAppRuleProps"><code>RawAppRuleProps</code></a>.<a href="./RawAppRuleProps#activityids"><code>activityIds</code></a></p><hr><h3 id="excludeactivityids" tabindex="-1">excludeActivityIds? <a class="header-anchor" href="#excludeactivityids" aria-label="Permalink to &quot;excludeActivityIds?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>excludeActivityIds</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<code>string</code>&gt;</p></blockquote><p>如果 设备界面Id startWith excludeActivityIds 的任意一项, 则排除匹配</p><p>优先级高于 activityIds</p><p>当 activityId 以 <code>.</code> 开头时, 与 activityIds 识别规则一致</p><h4 id="inherited-from-1" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-1" aria-label="Permalink to &quot;Inherited from&quot;">​</a></h4><p><a href="./RawAppRuleProps"><code>RawAppRuleProps</code></a>.<a href="./RawAppRuleProps#excludeactivityids"><code>excludeActivityIds</code></a></p><hr><h3 id="versionnames" tabindex="-1">versionNames? <a class="header-anchor" href="#versionnames" aria-label="Permalink to &quot;versionNames?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>versionNames</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<code>string</code>&gt;</p></blockquote><p>如果应用版本名称包含在此列表中, 则匹配</p><h4 id="inherited-from-2" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-2" aria-label="Permalink to &quot;Inherited from&quot;">​</a></h4><p><a href="./RawAppRuleProps"><code>RawAppRuleProps</code></a>.<a href="./RawAppRuleProps#versionnames"><code>versionNames</code></a></p><hr><h3 id="excludeversionnames" tabindex="-1">excludeVersionNames? <a class="header-anchor" href="#excludeversionnames" aria-label="Permalink to &quot;excludeVersionNames?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>excludeVersionNames</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<code>string</code>&gt;</p></blockquote><p>如果应用版本名称包含在此列表中, 则排除匹配, 优先级高于 versionNames</p><h4 id="inherited-from-3" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-3" aria-label="Permalink to &quot;Inherited from&quot;">​</a></h4><p><a href="./RawAppRuleProps"><code>RawAppRuleProps</code></a>.<a href="./RawAppRuleProps#excludeversionnames"><code>excludeVersionNames</code></a></p><hr><h3 id="versioncodes" tabindex="-1">versionCodes? <a class="header-anchor" href="#versioncodes" aria-label="Permalink to &quot;versionCodes?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>versionCodes</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<a href="./../type-aliases/Integer"><code>Integer</code></a>&gt;</p></blockquote><p>如果应用版本代码包含在此列表中, 则匹配</p><h4 id="inherited-from-4" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-4" aria-label="Permalink to &quot;Inherited from&quot;">​</a></h4><p><a href="./RawAppRuleProps"><code>RawAppRuleProps</code></a>.<a href="./RawAppRuleProps#versioncodes"><code>versionCodes</code></a></p><hr><h3 id="excludeversioncodes" tabindex="-1">excludeVersionCodes? <a class="header-anchor" href="#excludeversioncodes" aria-label="Permalink to &quot;excludeVersionCodes?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>excludeVersionCodes</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<a href="./../type-aliases/Integer"><code>Integer</code></a>&gt;</p></blockquote><p>如果应用版本代码包含在此列表中, 则排除匹配, 优先级高于 versionCodes</p><h4 id="inherited-from-5" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-5" aria-label="Permalink to &quot;Inherited from&quot;">​</a></h4><p><a href="./RawAppRuleProps"><code>RawAppRuleProps</code></a>.<a href="./RawAppRuleProps#excludeversioncodes"><code>excludeVersionCodes</code></a></p>',55)]))}const f=a(i,[["render",d]]);export{u as __pageData,f as default};
1
+ import{_ as a,c as o,ab as r,o as t}from"./chunks/framework.CAQWXItu.js";const u=JSON.parse('{"title":"RawGlobalApp","description":"","frontmatter":{},"headers":[],"relativePath":"api/interfaces/RawGlobalApp.md","filePath":"api/interfaces/RawGlobalApp.md","lastUpdated":null}'),i={name:"api/interfaces/RawGlobalApp.md"};function d(s,e,c,l,n,p){return t(),o("div",null,e[0]||(e[0]=[r('<h1 id="rawglobalapp" tabindex="-1">RawGlobalApp <a class="header-anchor" href="#rawglobalapp" aria-label="Permalink to &quot;RawGlobalApp&quot;">​</a></h1><p>全局规则应用配置</p><h2 id="extends" tabindex="-1">Extends <a class="header-anchor" href="#extends" aria-label="Permalink to &quot;Extends&quot;">​</a></h2><ul><li><a href="./RawAppRuleProps"><code>RawAppRuleProps</code></a></li></ul><h2 id="properties" tabindex="-1">Properties <a class="header-anchor" href="#properties" aria-label="Permalink to &quot;Properties&quot;">​</a></h2><h3 id="id" tabindex="-1">id <a class="header-anchor" href="#id" aria-label="Permalink to &quot;id&quot;">​</a></h3><blockquote><p><strong>id</strong>: <code>string</code></p></blockquote><p>目标应用的包名</p><hr><h3 id="enable" tabindex="-1">enable? <a class="header-anchor" href="#enable" aria-label="Permalink to &quot;enable?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>enable</strong>: <code>boolean</code></p></blockquote><p>在此应用启用/禁用此规则</p><h4 id="default" tabindex="-1">Default <a class="header-anchor" href="#default" aria-label="Permalink to &quot;Default&quot;">​</a></h4><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span></span></code></pre></div><hr><h3 id="activityids" tabindex="-1">activityIds? <a class="header-anchor" href="#activityids" aria-label="Permalink to &quot;activityIds?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>activityIds</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<code>string</code>&gt;</p></blockquote><p>如果 界面Id startWith activityIds 的任意一项, 则匹配</p><p>如果要匹配所有界面: <code>undefined</code> (不填写) 或者 <code>[]</code> (避免使用上级属性)</p><p>如果 activityId 以 <code>.</code> 开头, 则等价于 appId + activityId</p><p>示例: <code>com.tencent.mm</code> (微信) 的某界面 <code>.MainActivity</code> 等价于 <code>com.tencent.mm.MainActivity</code></p><h4 id="inherited-from" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from" aria-label="Permalink to &quot;Inherited from&quot;">​</a></h4><p><a href="./RawAppRuleProps"><code>RawAppRuleProps</code></a>.<a href="./RawAppRuleProps#activityids"><code>activityIds</code></a></p><hr><h3 id="excludeactivityids" tabindex="-1">excludeActivityIds? <a class="header-anchor" href="#excludeactivityids" aria-label="Permalink to &quot;excludeActivityIds?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>excludeActivityIds</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<code>string</code>&gt;</p></blockquote><p>如果 设备界面Id startWith excludeActivityIds 的任意一项, 则排除匹配</p><p>优先级高于 activityIds</p><p>当 activityId 以 <code>.</code> 开头时, 与 activityIds 识别规则一致</p><h4 id="inherited-from-1" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-1" aria-label="Permalink to &quot;Inherited from&quot;">​</a></h4><p><a href="./RawAppRuleProps"><code>RawAppRuleProps</code></a>.<a href="./RawAppRuleProps#excludeactivityids"><code>excludeActivityIds</code></a></p><hr><h3 id="versionnames" tabindex="-1">versionNames? <a class="header-anchor" href="#versionnames" aria-label="Permalink to &quot;versionNames?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>versionNames</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<code>string</code>&gt;</p></blockquote><p>如果应用版本名称包含在此列表中, 则匹配</p><h4 id="inherited-from-2" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-2" aria-label="Permalink to &quot;Inherited from&quot;">​</a></h4><p><a href="./RawAppRuleProps"><code>RawAppRuleProps</code></a>.<a href="./RawAppRuleProps#versionnames"><code>versionNames</code></a></p><hr><h3 id="excludeversionnames" tabindex="-1">excludeVersionNames? <a class="header-anchor" href="#excludeversionnames" aria-label="Permalink to &quot;excludeVersionNames?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>excludeVersionNames</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<code>string</code>&gt;</p></blockquote><p>如果应用版本名称包含在此列表中, 则排除匹配, 优先级高于 versionNames</p><h4 id="inherited-from-3" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-3" aria-label="Permalink to &quot;Inherited from&quot;">​</a></h4><p><a href="./RawAppRuleProps"><code>RawAppRuleProps</code></a>.<a href="./RawAppRuleProps#excludeversionnames"><code>excludeVersionNames</code></a></p><hr><h3 id="versioncodes" tabindex="-1">versionCodes? <a class="header-anchor" href="#versioncodes" aria-label="Permalink to &quot;versionCodes?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>versionCodes</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<a href="./../type-aliases/Integer"><code>Integer</code></a>&gt;</p></blockquote><p>如果应用版本代码包含在此列表中, 则匹配</p><h4 id="inherited-from-4" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-4" aria-label="Permalink to &quot;Inherited from&quot;">​</a></h4><p><a href="./RawAppRuleProps"><code>RawAppRuleProps</code></a>.<a href="./RawAppRuleProps#versioncodes"><code>versionCodes</code></a></p><hr><h3 id="excludeversioncodes" tabindex="-1">excludeVersionCodes? <a class="header-anchor" href="#excludeversioncodes" aria-label="Permalink to &quot;excludeVersionCodes?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>excludeVersionCodes</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<a href="./../type-aliases/Integer"><code>Integer</code></a>&gt;</p></blockquote><p>如果应用版本代码包含在此列表中, 则排除匹配, 优先级高于 versionCodes</p><h4 id="inherited-from-5" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-5" aria-label="Permalink to &quot;Inherited from&quot;">​</a></h4><p><a href="./RawAppRuleProps"><code>RawAppRuleProps</code></a>.<a href="./RawAppRuleProps#excludeversioncodes"><code>excludeVersionCodes</code></a></p>',55)]))}const f=a(i,[["render",d]]);export{u as __pageData,f as default};
@@ -1 +1 @@
1
- import{_ as a,c as o,aa as r,o as t}from"./chunks/framework.DTQrLWmF.js";const u=JSON.parse('{"title":"RawGlobalApp","description":"","frontmatter":{},"headers":[],"relativePath":"api/interfaces/RawGlobalApp.md","filePath":"api/interfaces/RawGlobalApp.md","lastUpdated":null}'),i={name:"api/interfaces/RawGlobalApp.md"};function d(s,e,c,l,n,p){return t(),o("div",null,e[0]||(e[0]=[r('<h1 id="rawglobalapp" tabindex="-1">RawGlobalApp <a class="header-anchor" href="#rawglobalapp" aria-label="Permalink to &quot;RawGlobalApp&quot;">​</a></h1><p>全局规则应用配置</p><h2 id="extends" tabindex="-1">Extends <a class="header-anchor" href="#extends" aria-label="Permalink to &quot;Extends&quot;">​</a></h2><ul><li><a href="./RawAppRuleProps"><code>RawAppRuleProps</code></a></li></ul><h2 id="properties" tabindex="-1">Properties <a class="header-anchor" href="#properties" aria-label="Permalink to &quot;Properties&quot;">​</a></h2><h3 id="id" tabindex="-1">id <a class="header-anchor" href="#id" aria-label="Permalink to &quot;id&quot;">​</a></h3><blockquote><p><strong>id</strong>: <code>string</code></p></blockquote><p>目标应用的包名</p><hr><h3 id="enable" tabindex="-1">enable? <a class="header-anchor" href="#enable" aria-label="Permalink to &quot;enable?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>enable</strong>: <code>boolean</code></p></blockquote><p>在此应用启用/禁用此规则</p><h4 id="default" tabindex="-1">Default <a class="header-anchor" href="#default" aria-label="Permalink to &quot;Default&quot;">​</a></h4><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span></span></code></pre></div><hr><h3 id="activityids" tabindex="-1">activityIds? <a class="header-anchor" href="#activityids" aria-label="Permalink to &quot;activityIds?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>activityIds</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<code>string</code>&gt;</p></blockquote><p>如果 界面Id startWith activityIds 的任意一项, 则匹配</p><p>如果要匹配所有界面: <code>undefined</code> (不填写) 或者 <code>[]</code> (避免使用上级属性)</p><p>如果 activityId 以 <code>.</code> 开头, 则等价于 appId + activityId</p><p>示例: <code>com.tencent.mm</code> (微信) 的某界面 <code>.MainActivity</code> 等价于 <code>com.tencent.mm.MainActivity</code></p><h4 id="inherited-from" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from" aria-label="Permalink to &quot;Inherited from&quot;">​</a></h4><p><a href="./RawAppRuleProps"><code>RawAppRuleProps</code></a>.<a href="./RawAppRuleProps#activityids"><code>activityIds</code></a></p><hr><h3 id="excludeactivityids" tabindex="-1">excludeActivityIds? <a class="header-anchor" href="#excludeactivityids" aria-label="Permalink to &quot;excludeActivityIds?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>excludeActivityIds</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<code>string</code>&gt;</p></blockquote><p>如果 设备界面Id startWith excludeActivityIds 的任意一项, 则排除匹配</p><p>优先级高于 activityIds</p><p>当 activityId 以 <code>.</code> 开头时, 与 activityIds 识别规则一致</p><h4 id="inherited-from-1" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-1" aria-label="Permalink to &quot;Inherited from&quot;">​</a></h4><p><a href="./RawAppRuleProps"><code>RawAppRuleProps</code></a>.<a href="./RawAppRuleProps#excludeactivityids"><code>excludeActivityIds</code></a></p><hr><h3 id="versionnames" tabindex="-1">versionNames? <a class="header-anchor" href="#versionnames" aria-label="Permalink to &quot;versionNames?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>versionNames</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<code>string</code>&gt;</p></blockquote><p>如果应用版本名称包含在此列表中, 则匹配</p><h4 id="inherited-from-2" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-2" aria-label="Permalink to &quot;Inherited from&quot;">​</a></h4><p><a href="./RawAppRuleProps"><code>RawAppRuleProps</code></a>.<a href="./RawAppRuleProps#versionnames"><code>versionNames</code></a></p><hr><h3 id="excludeversionnames" tabindex="-1">excludeVersionNames? <a class="header-anchor" href="#excludeversionnames" aria-label="Permalink to &quot;excludeVersionNames?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>excludeVersionNames</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<code>string</code>&gt;</p></blockquote><p>如果应用版本名称包含在此列表中, 则排除匹配, 优先级高于 versionNames</p><h4 id="inherited-from-3" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-3" aria-label="Permalink to &quot;Inherited from&quot;">​</a></h4><p><a href="./RawAppRuleProps"><code>RawAppRuleProps</code></a>.<a href="./RawAppRuleProps#excludeversionnames"><code>excludeVersionNames</code></a></p><hr><h3 id="versioncodes" tabindex="-1">versionCodes? <a class="header-anchor" href="#versioncodes" aria-label="Permalink to &quot;versionCodes?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>versionCodes</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<a href="./../type-aliases/Integer"><code>Integer</code></a>&gt;</p></blockquote><p>如果应用版本代码包含在此列表中, 则匹配</p><h4 id="inherited-from-4" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-4" aria-label="Permalink to &quot;Inherited from&quot;">​</a></h4><p><a href="./RawAppRuleProps"><code>RawAppRuleProps</code></a>.<a href="./RawAppRuleProps#versioncodes"><code>versionCodes</code></a></p><hr><h3 id="excludeversioncodes" tabindex="-1">excludeVersionCodes? <a class="header-anchor" href="#excludeversioncodes" aria-label="Permalink to &quot;excludeVersionCodes?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>excludeVersionCodes</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<a href="./../type-aliases/Integer"><code>Integer</code></a>&gt;</p></blockquote><p>如果应用版本代码包含在此列表中, 则排除匹配, 优先级高于 versionCodes</p><h4 id="inherited-from-5" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-5" aria-label="Permalink to &quot;Inherited from&quot;">​</a></h4><p><a href="./RawAppRuleProps"><code>RawAppRuleProps</code></a>.<a href="./RawAppRuleProps#excludeversioncodes"><code>excludeVersionCodes</code></a></p>',55)]))}const f=a(i,[["render",d]]);export{u as __pageData,f as default};
1
+ import{_ as a,c as o,ab as r,o as t}from"./chunks/framework.CAQWXItu.js";const u=JSON.parse('{"title":"RawGlobalApp","description":"","frontmatter":{},"headers":[],"relativePath":"api/interfaces/RawGlobalApp.md","filePath":"api/interfaces/RawGlobalApp.md","lastUpdated":null}'),i={name:"api/interfaces/RawGlobalApp.md"};function d(s,e,c,l,n,p){return t(),o("div",null,e[0]||(e[0]=[r('<h1 id="rawglobalapp" tabindex="-1">RawGlobalApp <a class="header-anchor" href="#rawglobalapp" aria-label="Permalink to &quot;RawGlobalApp&quot;">​</a></h1><p>全局规则应用配置</p><h2 id="extends" tabindex="-1">Extends <a class="header-anchor" href="#extends" aria-label="Permalink to &quot;Extends&quot;">​</a></h2><ul><li><a href="./RawAppRuleProps"><code>RawAppRuleProps</code></a></li></ul><h2 id="properties" tabindex="-1">Properties <a class="header-anchor" href="#properties" aria-label="Permalink to &quot;Properties&quot;">​</a></h2><h3 id="id" tabindex="-1">id <a class="header-anchor" href="#id" aria-label="Permalink to &quot;id&quot;">​</a></h3><blockquote><p><strong>id</strong>: <code>string</code></p></blockquote><p>目标应用的包名</p><hr><h3 id="enable" tabindex="-1">enable? <a class="header-anchor" href="#enable" aria-label="Permalink to &quot;enable?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>enable</strong>: <code>boolean</code></p></blockquote><p>在此应用启用/禁用此规则</p><h4 id="default" tabindex="-1">Default <a class="header-anchor" href="#default" aria-label="Permalink to &quot;Default&quot;">​</a></h4><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span></span></code></pre></div><hr><h3 id="activityids" tabindex="-1">activityIds? <a class="header-anchor" href="#activityids" aria-label="Permalink to &quot;activityIds?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>activityIds</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<code>string</code>&gt;</p></blockquote><p>如果 界面Id startWith activityIds 的任意一项, 则匹配</p><p>如果要匹配所有界面: <code>undefined</code> (不填写) 或者 <code>[]</code> (避免使用上级属性)</p><p>如果 activityId 以 <code>.</code> 开头, 则等价于 appId + activityId</p><p>示例: <code>com.tencent.mm</code> (微信) 的某界面 <code>.MainActivity</code> 等价于 <code>com.tencent.mm.MainActivity</code></p><h4 id="inherited-from" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from" aria-label="Permalink to &quot;Inherited from&quot;">​</a></h4><p><a href="./RawAppRuleProps"><code>RawAppRuleProps</code></a>.<a href="./RawAppRuleProps#activityids"><code>activityIds</code></a></p><hr><h3 id="excludeactivityids" tabindex="-1">excludeActivityIds? <a class="header-anchor" href="#excludeactivityids" aria-label="Permalink to &quot;excludeActivityIds?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>excludeActivityIds</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<code>string</code>&gt;</p></blockquote><p>如果 设备界面Id startWith excludeActivityIds 的任意一项, 则排除匹配</p><p>优先级高于 activityIds</p><p>当 activityId 以 <code>.</code> 开头时, 与 activityIds 识别规则一致</p><h4 id="inherited-from-1" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-1" aria-label="Permalink to &quot;Inherited from&quot;">​</a></h4><p><a href="./RawAppRuleProps"><code>RawAppRuleProps</code></a>.<a href="./RawAppRuleProps#excludeactivityids"><code>excludeActivityIds</code></a></p><hr><h3 id="versionnames" tabindex="-1">versionNames? <a class="header-anchor" href="#versionnames" aria-label="Permalink to &quot;versionNames?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>versionNames</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<code>string</code>&gt;</p></blockquote><p>如果应用版本名称包含在此列表中, 则匹配</p><h4 id="inherited-from-2" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-2" aria-label="Permalink to &quot;Inherited from&quot;">​</a></h4><p><a href="./RawAppRuleProps"><code>RawAppRuleProps</code></a>.<a href="./RawAppRuleProps#versionnames"><code>versionNames</code></a></p><hr><h3 id="excludeversionnames" tabindex="-1">excludeVersionNames? <a class="header-anchor" href="#excludeversionnames" aria-label="Permalink to &quot;excludeVersionNames?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>excludeVersionNames</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<code>string</code>&gt;</p></blockquote><p>如果应用版本名称包含在此列表中, 则排除匹配, 优先级高于 versionNames</p><h4 id="inherited-from-3" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-3" aria-label="Permalink to &quot;Inherited from&quot;">​</a></h4><p><a href="./RawAppRuleProps"><code>RawAppRuleProps</code></a>.<a href="./RawAppRuleProps#excludeversionnames"><code>excludeVersionNames</code></a></p><hr><h3 id="versioncodes" tabindex="-1">versionCodes? <a class="header-anchor" href="#versioncodes" aria-label="Permalink to &quot;versionCodes?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>versionCodes</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<a href="./../type-aliases/Integer"><code>Integer</code></a>&gt;</p></blockquote><p>如果应用版本代码包含在此列表中, 则匹配</p><h4 id="inherited-from-4" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-4" aria-label="Permalink to &quot;Inherited from&quot;">​</a></h4><p><a href="./RawAppRuleProps"><code>RawAppRuleProps</code></a>.<a href="./RawAppRuleProps#versioncodes"><code>versionCodes</code></a></p><hr><h3 id="excludeversioncodes" tabindex="-1">excludeVersionCodes? <a class="header-anchor" href="#excludeversioncodes" aria-label="Permalink to &quot;excludeVersionCodes?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>excludeVersionCodes</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<a href="./../type-aliases/Integer"><code>Integer</code></a>&gt;</p></blockquote><p>如果应用版本代码包含在此列表中, 则排除匹配, 优先级高于 versionCodes</p><h4 id="inherited-from-5" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-5" aria-label="Permalink to &quot;Inherited from&quot;">​</a></h4><p><a href="./RawAppRuleProps"><code>RawAppRuleProps</code></a>.<a href="./RawAppRuleProps#excludeversioncodes"><code>excludeVersionCodes</code></a></p>',55)]))}const f=a(i,[["render",d]]);export{u as __pageData,f as default};
@@ -1,4 +1,4 @@
1
- import{_ as a,c as o,aa as r,o as t}from"./chunks/framework.DTQrLWmF.js";const u=JSON.parse('{"title":"RawGlobalGroup","description":"","frontmatter":{},"headers":[],"relativePath":"api/interfaces/RawGlobalGroup.md","filePath":"api/interfaces/RawGlobalGroup.md","lastUpdated":null}'),i={name:"api/interfaces/RawGlobalGroup.md"};function s(l,e,d,p,c,h){return t(),o("div",null,e[0]||(e[0]=[r(`<h1 id="rawglobalgroup" tabindex="-1">RawGlobalGroup <a class="header-anchor" href="#rawglobalgroup" aria-label="Permalink to &quot;RawGlobalGroup&quot;">​</a></h1><p>全局规则组</p><h2 id="extends" tabindex="-1">Extends <a class="header-anchor" href="#extends" aria-label="Permalink to &quot;Extends&quot;">​</a></h2><ul><li><a href="./RawGroupProps"><code>RawGroupProps</code></a>.<a href="./RawGlobalRuleProps"><code>RawGlobalRuleProps</code></a></li></ul><h2 id="properties" tabindex="-1">Properties <a class="header-anchor" href="#properties" aria-label="Permalink to &quot;Properties&quot;">​</a></h2><h3 id="rules" tabindex="-1">rules <a class="header-anchor" href="#rules" aria-label="Permalink to &quot;rules&quot;">​</a></h3><blockquote><p><strong>rules</strong>: <a href="./RawGlobalRule"><code>RawGlobalRule</code></a>[]</p></blockquote><p>全局规则组的规则列表</p><hr><h3 id="actioncd" tabindex="-1">actionCd? <a class="header-anchor" href="#actioncd" aria-label="Permalink to &quot;actionCd?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>actionCd</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>单位: 毫秒</p><p>当前规则的冷却时间, 或者执行 action 最小间隔</p><h4 id="default" tabindex="-1">Default <a class="header-anchor" href="#default" aria-label="Permalink to &quot;Default&quot;">​</a></h4><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">1000</span></span></code></pre></div><h4 id="inherited-from" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from" aria-label="Permalink to &quot;Inherited from&quot;">​</a></h4><p><a href="./RawGroupProps"><code>RawGroupProps</code></a>.<a href="./RawGroupProps#actioncd"><code>actionCd</code></a></p><hr><h3 id="actiondelay" tabindex="-1">actionDelay? <a class="header-anchor" href="#actiondelay" aria-label="Permalink to &quot;actionDelay?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>actionDelay</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>单位: 毫秒</p><p>延迟执行: 查询到节点-&gt;等待一段时间-&gt;再次查询到节点则执行对应 action</p><h4 id="inherited-from-1" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-1" aria-label="Permalink to &quot;Inherited from&quot;">​</a></h4><p><a href="./RawGroupProps"><code>RawGroupProps</code></a>.<a href="./RawGroupProps#actiondelay"><code>actionDelay</code></a></p><hr><h3 id="quickfind" tabindex="-1">quickFind? <a class="header-anchor" href="#quickfind" aria-label="Permalink to &quot;quickFind?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>quickFind</strong>: <code>boolean</code></p></blockquote><p>注意: 将在未来版本弃用此属性, 请使用 <a href="./RawCommonProps#fastquery">fastQuery</a> 代替</p><p>如果开启, 此规则下的所有 <code>末尾属性选择器</code>的<code>第一个属性选择表达式</code>符合下面的结构之一的选择器 将使用快速查找</p><ul><li>[id=&#39;abc&#39;]</li><li>[vid=&#39;abc&#39;]</li><li>[text=&#39;abc&#39;]</li><li>[text^=&#39;abc&#39;]</li><li>[text*=&#39;abc&#39;]</li><li>[text$=&#39;abc&#39;]</li></ul><p>比如 <code>A &gt; B + C[id=&#39;x&#39;][childCount=2]</code> 符合, 但 <code>A &gt; B + C[childCount=2][id=&#39;x&#39;]</code> 不符合</p><p>它的底层原理是 跳过手动遍历所有节点 直接调用 <a href="https://developer.android.google.cn/reference/android/view/accessibility/AccessibilityNodeInfo#findAccessibilityNodeInfosByViewId(java.lang.String)" target="_blank" rel="noreferrer">findAccessibilityNodeInfosByViewId</a> / <a href="https://developer.android.google.cn/reference/android/view/accessibility/AccessibilityNodeInfo#findAccessibilityNodeInfosByText(java.lang.String)" target="_blank" rel="noreferrer">findAccessibilityNodeInfosByText</a> 得到可匹配节点</p><p>大多数情况下都能查询到, 在少数某些复杂结构下, 即使目标节点存在, 快速查询也不一定查询到</p><p>比如 <a href="https://github.com/gkd-kit/subscription/blob/1ae87452d287b558f58f9c4e4448a3190e212ca1/src/apps/com.zidongdianji.ts#L26" target="_blank" rel="noreferrer">Image &lt; @View + View &gt;2 [text*=&#39;广告&#39;]</a> 虽然符合快速查询的条件但是使用 <code>findAccessibilityNodeInfosByText(&quot;广告&quot;)</code> 并不能查询到节点</p><p>它是优点是快速, 因为遍历所有节点是一个耗时行为, 虽然多数情况下这种耗时较低</p><p>但是在某些软件比如 哔哩哔哩 的开屏广告在这种耗时下延迟可达 1-2s, 这也是导致 <a href="https://github.com/gkd-kit/gkd/issues/60" target="_blank" rel="noreferrer">gkd-kit/gkd#60</a> 的原因</p><p>如果你想对某个局部选择器关闭快速查找,只需要调整你的选择器的属性选择表达式的顺序使得它不符合快速查找的条件即可</p><h4 id="default-1" tabindex="-1">Default <a class="header-anchor" href="#default-1" aria-label="Permalink to &quot;Default&quot;">​</a></h4><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span></span></code></pre></div><h4 id="inherited-from-2" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-2" aria-label="Permalink to &quot;Inherited from&quot;">​</a></h4><p><a href="./RawGroupProps"><code>RawGroupProps</code></a>.<a href="./RawGroupProps#quickfind"><code>quickFind</code></a></p><hr><h3 id="fastquery" tabindex="-1">fastQuery? <a class="header-anchor" href="#fastquery" aria-label="Permalink to &quot;fastQuery?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>fastQuery</strong>: <code>boolean</code></p></blockquote><p>如果开启, 此规则下的所有满足 <strong>特定格式的选择器</strong> 将使用快速查找优化查询速度</p><p>详细文档请查看 <a href="https://gkd.li/selector/optimize" target="_blank" rel="noreferrer">查询优化</a></p><h4 id="default-2" tabindex="-1">Default <a class="header-anchor" href="#default-2" aria-label="Permalink to &quot;Default&quot;">​</a></h4><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span></span></code></pre></div><h4 id="inherited-from-3" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-3" aria-label="Permalink to &quot;Inherited from&quot;">​</a></h4><p><a href="./RawGroupProps"><code>RawGroupProps</code></a>.<a href="./RawGroupProps#fastquery"><code>fastQuery</code></a></p><hr><h3 id="matchroot" tabindex="-1">matchRoot? <a class="header-anchor" href="#matchroot" aria-label="Permalink to &quot;matchRoot?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>matchRoot</strong>: <code>boolean</code></p></blockquote><p>此规则下的所有选择器是否直接从根节点开始匹配</p><p>GKD 的原理是监听系统屏幕节点变化 这时候会接收到一个事件节点, 默认从这个节点开始匹配到其子孙节点</p><p>常见情况是: 如果匹配的速度跟不上节点事件数量的产生速度, 下一次匹配的开始节点将变成根节点</p><p>但是如果节点事件产生速度较慢, 比如屏幕上只有一个节点(文本)在变化, 那么开始匹配的节点一直将是这个节点</p><p>此时如果你的选择器的末端属性选择器选择的不是这个节点, 那么匹配将会失败, 即使你能在网页审查工具查询到这个节点</p><p>为了解决这个问题, 你可以设置 matchRoot=true, 这样每次匹配都会从根节点开始匹配</p><p>以 <a href="https://i.gkd.li/i/16105497" target="_blank" rel="noreferrer">快照-16105497</a> 为例, 事件节点总是 _id=8 的节点, 此时如果你的选择器是 <code>[text*=&quot;15秒&quot;] - [text*=&quot;跳过&quot;]</code></p><p>在 matchRoot=false 的情况下, 你的匹配范围如下蓝框</p><p><img src="https://github.com/gkd-kit/gkd/assets/38517192/ec60677f-f0d7-4b0d-8ac2-56306852e4a0" alt="image"></p><p>而在 matchRoot=true 的情况下, 你的匹配范围如下蓝框</p><p><img src="https://github.com/gkd-kit/gkd/assets/38517192/33eb9029-c3c3-4a2e-ab60-a1f099371fef" alt="image"></p><h4 id="default-3" tabindex="-1">Default <a class="header-anchor" href="#default-3" aria-label="Permalink to &quot;Default&quot;">​</a></h4><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span></span></code></pre></div><h4 id="inherited-from-4" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-4" aria-label="Permalink to &quot;Inherited from&quot;">​</a></h4><p><a href="./RawGroupProps"><code>RawGroupProps</code></a>.<a href="./RawGroupProps#matchroot"><code>matchRoot</code></a></p><hr><h3 id="matchdelay" tabindex="-1">matchDelay? <a class="header-anchor" href="#matchdelay" aria-label="Permalink to &quot;matchDelay?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>matchDelay</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>单位: 毫秒</p><p>匹配延迟</p><p>规则准备匹配/或被唤醒时, 等待一段时间, 使此规则参与查询屏幕节点</p><h4 id="inherited-from-5" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-5" aria-label="Permalink to &quot;Inherited from&quot;">​</a></h4><p><a href="./RawGroupProps"><code>RawGroupProps</code></a>.<a href="./RawGroupProps#matchdelay"><code>matchDelay</code></a></p><hr><h3 id="matchtime" tabindex="-1">matchTime? <a class="header-anchor" href="#matchtime" aria-label="Permalink to &quot;matchTime?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>matchTime</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>单位: 毫秒</p><p>规则匹配时间, 此规则参与查询屏幕节点时, 等待一段时间, 休眠此规则</p><p>例如某些应用的 开屏广告 的 activityId 容易误触/太广泛, 而开屏广告几乎只在应用切出来时出现, 设置一个有限匹配时间能避免后续的误触</p><h4 id="inherited-from-6" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-6" aria-label="Permalink to &quot;Inherited from&quot;">​</a></h4><p><a href="./RawGroupProps"><code>RawGroupProps</code></a>.<a href="./RawGroupProps#matchtime"><code>matchTime</code></a></p><hr><h3 id="actionmaximum" tabindex="-1">actionMaximum? <a class="header-anchor" href="#actionmaximum" aria-label="Permalink to &quot;actionMaximum?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>actionMaximum</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>最大执行次数</p><p>规则的 action 被执行的最大次数, 达到最大次数时, 休眠此规则</p><p>功能类似 matchTime, 适用于只需要执行一次的: 开屏广告/更新弹窗/青少年弹窗 一类规则</p><p>当规则准备匹配/或被唤醒时, 将重新计算次数</p><h4 id="inherited-from-7" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-7" aria-label="Permalink to &quot;Inherited from&quot;">​</a></h4><p><a href="./RawGroupProps"><code>RawGroupProps</code></a>.<a href="./RawGroupProps#actionmaximum"><code>actionMaximum</code></a></p><hr><h3 id="resetmatch" tabindex="-1">resetMatch? <a class="header-anchor" href="#resetmatch" aria-label="Permalink to &quot;resetMatch?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>resetMatch</strong>: <code>&quot;activity&quot;</code> | <code>&quot;app&quot;</code></p></blockquote><p>当规则因为 matchTime/actionMaximum 而休眠时, 如何唤醒此规则</p><h4 id="default-4" tabindex="-1">Default <a class="header-anchor" href="#default-4" aria-label="Permalink to &quot;Default&quot;">​</a></h4><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;activity&#39;</span></span></code></pre></div><h4 id="examples" tabindex="-1">Examples <a class="header-anchor" href="#examples" aria-label="Permalink to &quot;Examples&quot;">​</a></h4><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;activity&#39;</span></span>
1
+ import{_ as a,c as o,ab as r,o as t}from"./chunks/framework.CAQWXItu.js";const u=JSON.parse('{"title":"RawGlobalGroup","description":"","frontmatter":{},"headers":[],"relativePath":"api/interfaces/RawGlobalGroup.md","filePath":"api/interfaces/RawGlobalGroup.md","lastUpdated":null}'),i={name:"api/interfaces/RawGlobalGroup.md"};function s(l,e,d,p,c,h){return t(),o("div",null,e[0]||(e[0]=[r(`<h1 id="rawglobalgroup" tabindex="-1">RawGlobalGroup <a class="header-anchor" href="#rawglobalgroup" aria-label="Permalink to &quot;RawGlobalGroup&quot;">​</a></h1><p>全局规则组</p><h2 id="extends" tabindex="-1">Extends <a class="header-anchor" href="#extends" aria-label="Permalink to &quot;Extends&quot;">​</a></h2><ul><li><a href="./RawGroupProps"><code>RawGroupProps</code></a>.<a href="./RawGlobalRuleProps"><code>RawGlobalRuleProps</code></a></li></ul><h2 id="properties" tabindex="-1">Properties <a class="header-anchor" href="#properties" aria-label="Permalink to &quot;Properties&quot;">​</a></h2><h3 id="rules" tabindex="-1">rules <a class="header-anchor" href="#rules" aria-label="Permalink to &quot;rules&quot;">​</a></h3><blockquote><p><strong>rules</strong>: <a href="./RawGlobalRule"><code>RawGlobalRule</code></a>[]</p></blockquote><p>全局规则组的规则列表</p><hr><h3 id="actioncd" tabindex="-1">actionCd? <a class="header-anchor" href="#actioncd" aria-label="Permalink to &quot;actionCd?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>actionCd</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>单位: 毫秒</p><p>当前规则的冷却时间, 或者执行 action 最小间隔</p><h4 id="default" tabindex="-1">Default <a class="header-anchor" href="#default" aria-label="Permalink to &quot;Default&quot;">​</a></h4><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">1000</span></span></code></pre></div><h4 id="inherited-from" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from" aria-label="Permalink to &quot;Inherited from&quot;">​</a></h4><p><a href="./RawGroupProps"><code>RawGroupProps</code></a>.<a href="./RawGroupProps#actioncd"><code>actionCd</code></a></p><hr><h3 id="actiondelay" tabindex="-1">actionDelay? <a class="header-anchor" href="#actiondelay" aria-label="Permalink to &quot;actionDelay?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>actionDelay</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>单位: 毫秒</p><p>延迟执行: 查询到节点-&gt;等待一段时间-&gt;再次查询到节点则执行对应 action</p><h4 id="inherited-from-1" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-1" aria-label="Permalink to &quot;Inherited from&quot;">​</a></h4><p><a href="./RawGroupProps"><code>RawGroupProps</code></a>.<a href="./RawGroupProps#actiondelay"><code>actionDelay</code></a></p><hr><h3 id="quickfind" tabindex="-1">quickFind? <a class="header-anchor" href="#quickfind" aria-label="Permalink to &quot;quickFind?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>quickFind</strong>: <code>boolean</code></p></blockquote><p>注意: 将在未来版本弃用此属性, 请使用 <a href="./RawCommonProps#fastquery">fastQuery</a> 代替</p><p>如果开启, 此规则下的所有 <code>末尾属性选择器</code>的<code>第一个属性选择表达式</code>符合下面的结构之一的选择器 将使用快速查找</p><ul><li>[id=&#39;abc&#39;]</li><li>[vid=&#39;abc&#39;]</li><li>[text=&#39;abc&#39;]</li><li>[text^=&#39;abc&#39;]</li><li>[text*=&#39;abc&#39;]</li><li>[text$=&#39;abc&#39;]</li></ul><p>比如 <code>A &gt; B + C[id=&#39;x&#39;][childCount=2]</code> 符合, 但 <code>A &gt; B + C[childCount=2][id=&#39;x&#39;]</code> 不符合</p><p>它的底层原理是 跳过手动遍历所有节点 直接调用 <a href="https://developer.android.google.cn/reference/android/view/accessibility/AccessibilityNodeInfo#findAccessibilityNodeInfosByViewId(java.lang.String)" target="_blank" rel="noreferrer">findAccessibilityNodeInfosByViewId</a> / <a href="https://developer.android.google.cn/reference/android/view/accessibility/AccessibilityNodeInfo#findAccessibilityNodeInfosByText(java.lang.String)" target="_blank" rel="noreferrer">findAccessibilityNodeInfosByText</a> 得到可匹配节点</p><p>大多数情况下都能查询到, 在少数某些复杂结构下, 即使目标节点存在, 快速查询也不一定查询到</p><p>比如 <a href="https://github.com/gkd-kit/subscription/blob/1ae87452d287b558f58f9c4e4448a3190e212ca1/src/apps/com.zidongdianji.ts#L26" target="_blank" rel="noreferrer">Image &lt; @View + View &gt;2 [text*=&#39;广告&#39;]</a> 虽然符合快速查询的条件但是使用 <code>findAccessibilityNodeInfosByText(&quot;广告&quot;)</code> 并不能查询到节点</p><p>它是优点是快速, 因为遍历所有节点是一个耗时行为, 虽然多数情况下这种耗时较低</p><p>但是在某些软件比如 哔哩哔哩 的开屏广告在这种耗时下延迟可达 1-2s, 这也是导致 <a href="https://github.com/gkd-kit/gkd/issues/60" target="_blank" rel="noreferrer">gkd-kit/gkd#60</a> 的原因</p><p>如果你想对某个局部选择器关闭快速查找,只需要调整你的选择器的属性选择表达式的顺序使得它不符合快速查找的条件即可</p><h4 id="default-1" tabindex="-1">Default <a class="header-anchor" href="#default-1" aria-label="Permalink to &quot;Default&quot;">​</a></h4><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span></span></code></pre></div><h4 id="inherited-from-2" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-2" aria-label="Permalink to &quot;Inherited from&quot;">​</a></h4><p><a href="./RawGroupProps"><code>RawGroupProps</code></a>.<a href="./RawGroupProps#quickfind"><code>quickFind</code></a></p><hr><h3 id="fastquery" tabindex="-1">fastQuery? <a class="header-anchor" href="#fastquery" aria-label="Permalink to &quot;fastQuery?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>fastQuery</strong>: <code>boolean</code></p></blockquote><p>如果开启, 此规则下的所有满足 <strong>特定格式的选择器</strong> 将使用快速查找优化查询速度</p><p>详细文档请查看 <a href="https://gkd.li/selector/optimize" target="_blank" rel="noreferrer">查询优化</a></p><h4 id="default-2" tabindex="-1">Default <a class="header-anchor" href="#default-2" aria-label="Permalink to &quot;Default&quot;">​</a></h4><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span></span></code></pre></div><h4 id="inherited-from-3" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-3" aria-label="Permalink to &quot;Inherited from&quot;">​</a></h4><p><a href="./RawGroupProps"><code>RawGroupProps</code></a>.<a href="./RawGroupProps#fastquery"><code>fastQuery</code></a></p><hr><h3 id="matchroot" tabindex="-1">matchRoot? <a class="header-anchor" href="#matchroot" aria-label="Permalink to &quot;matchRoot?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>matchRoot</strong>: <code>boolean</code></p></blockquote><p>此规则下的所有选择器是否直接从根节点开始匹配</p><p>GKD 的原理是监听系统屏幕节点变化 这时候会接收到一个事件节点, 默认从这个节点开始匹配到其子孙节点</p><p>常见情况是: 如果匹配的速度跟不上节点事件数量的产生速度, 下一次匹配的开始节点将变成根节点</p><p>但是如果节点事件产生速度较慢, 比如屏幕上只有一个节点(文本)在变化, 那么开始匹配的节点一直将是这个节点</p><p>此时如果你的选择器的末端属性选择器选择的不是这个节点, 那么匹配将会失败, 即使你能在网页审查工具查询到这个节点</p><p>为了解决这个问题, 你可以设置 matchRoot=true, 这样每次匹配都会从根节点开始匹配</p><p>以 <a href="https://i.gkd.li/i/16105497" target="_blank" rel="noreferrer">快照-16105497</a> 为例, 事件节点总是 _id=8 的节点, 此时如果你的选择器是 <code>[text*=&quot;15秒&quot;] - [text*=&quot;跳过&quot;]</code></p><p>在 matchRoot=false 的情况下, 你的匹配范围如下蓝框</p><p><img src="https://github.com/gkd-kit/gkd/assets/38517192/ec60677f-f0d7-4b0d-8ac2-56306852e4a0" alt="image"></p><p>而在 matchRoot=true 的情况下, 你的匹配范围如下蓝框</p><p><img src="https://github.com/gkd-kit/gkd/assets/38517192/33eb9029-c3c3-4a2e-ab60-a1f099371fef" alt="image"></p><h4 id="default-3" tabindex="-1">Default <a class="header-anchor" href="#default-3" aria-label="Permalink to &quot;Default&quot;">​</a></h4><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span></span></code></pre></div><h4 id="inherited-from-4" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-4" aria-label="Permalink to &quot;Inherited from&quot;">​</a></h4><p><a href="./RawGroupProps"><code>RawGroupProps</code></a>.<a href="./RawGroupProps#matchroot"><code>matchRoot</code></a></p><hr><h3 id="matchdelay" tabindex="-1">matchDelay? <a class="header-anchor" href="#matchdelay" aria-label="Permalink to &quot;matchDelay?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>matchDelay</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>单位: 毫秒</p><p>匹配延迟</p><p>规则准备匹配/或被唤醒时, 等待一段时间, 使此规则参与查询屏幕节点</p><h4 id="inherited-from-5" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-5" aria-label="Permalink to &quot;Inherited from&quot;">​</a></h4><p><a href="./RawGroupProps"><code>RawGroupProps</code></a>.<a href="./RawGroupProps#matchdelay"><code>matchDelay</code></a></p><hr><h3 id="matchtime" tabindex="-1">matchTime? <a class="header-anchor" href="#matchtime" aria-label="Permalink to &quot;matchTime?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>matchTime</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>单位: 毫秒</p><p>规则匹配时间, 此规则参与查询屏幕节点时, 等待一段时间, 休眠此规则</p><p>例如某些应用的 开屏广告 的 activityId 容易误触/太广泛, 而开屏广告几乎只在应用切出来时出现, 设置一个有限匹配时间能避免后续的误触</p><h4 id="inherited-from-6" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-6" aria-label="Permalink to &quot;Inherited from&quot;">​</a></h4><p><a href="./RawGroupProps"><code>RawGroupProps</code></a>.<a href="./RawGroupProps#matchtime"><code>matchTime</code></a></p><hr><h3 id="actionmaximum" tabindex="-1">actionMaximum? <a class="header-anchor" href="#actionmaximum" aria-label="Permalink to &quot;actionMaximum?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>actionMaximum</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>最大执行次数</p><p>规则的 action 被执行的最大次数, 达到最大次数时, 休眠此规则</p><p>功能类似 matchTime, 适用于只需要执行一次的: 开屏广告/更新弹窗/青少年弹窗 一类规则</p><p>当规则准备匹配/或被唤醒时, 将重新计算次数</p><h4 id="inherited-from-7" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-7" aria-label="Permalink to &quot;Inherited from&quot;">​</a></h4><p><a href="./RawGroupProps"><code>RawGroupProps</code></a>.<a href="./RawGroupProps#actionmaximum"><code>actionMaximum</code></a></p><hr><h3 id="resetmatch" tabindex="-1">resetMatch? <a class="header-anchor" href="#resetmatch" aria-label="Permalink to &quot;resetMatch?&quot;">​</a></h3><blockquote><p><code>optional</code> <strong>resetMatch</strong>: <code>&quot;activity&quot;</code> | <code>&quot;app&quot;</code></p></blockquote><p>当规则因为 matchTime/actionMaximum 而休眠时, 如何唤醒此规则</p><h4 id="default-4" tabindex="-1">Default <a class="header-anchor" href="#default-4" aria-label="Permalink to &quot;Default&quot;">​</a></h4><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;activity&#39;</span></span></code></pre></div><h4 id="examples" tabindex="-1">Examples <a class="header-anchor" href="#examples" aria-label="Permalink to &quot;Examples&quot;">​</a></h4><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;activity&#39;</span></span>
2
2
  <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 当 activity 刷新时, 唤醒规则</span></span>
3
3
  <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 刷新 activity 并不代表 activityId 变化</span></span>
4
4
  <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 如 哔哩哔哩视频播放页 底部点击推荐视频 进入另一个 视频播放页, 进入了新 activity 但是 activityId 并没有变化</span></span></code></pre></div><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;app&#39;</span></span>