@gkd-kit/docs 0.0.1721819132141 → 0.0.1721996752045

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/.vitepress/dist/404.html +4 -4
  2. package/.vitepress/dist/api/index.html +7 -7
  3. package/.vitepress/dist/api/interfaces/RawApp.html +7 -7
  4. package/.vitepress/dist/api/interfaces/RawAppGroup.html +7 -7
  5. package/.vitepress/dist/api/interfaces/RawAppRule.html +7 -7
  6. package/.vitepress/dist/api/interfaces/RawAppRuleProps.html +7 -7
  7. package/.vitepress/dist/api/interfaces/RawCategory.html +7 -7
  8. package/.vitepress/dist/api/interfaces/RawCommonProps.html +7 -7
  9. package/.vitepress/dist/api/interfaces/RawGlobalApp.html +7 -7
  10. package/.vitepress/dist/api/interfaces/RawGlobalGroup.html +7 -7
  11. package/.vitepress/dist/api/interfaces/RawGlobalRule.html +7 -7
  12. package/.vitepress/dist/api/interfaces/RawGlobalRuleProps.html +7 -7
  13. package/.vitepress/dist/api/interfaces/RawGroupProps.html +7 -7
  14. package/.vitepress/dist/api/interfaces/RawRuleProps.html +7 -7
  15. package/.vitepress/dist/api/interfaces/RawSubscription.html +7 -7
  16. package/.vitepress/dist/api/type-aliases/IArray.html +7 -7
  17. package/.vitepress/dist/api/type-aliases/Integer.html +7 -7
  18. package/.vitepress/dist/api/type-aliases/Position.html +7 -7
  19. package/.vitepress/dist/assets/{app.C4_nqKEI.js → app.Ds7k-mzn.js} +1 -1
  20. package/.vitepress/dist/assets/chunks/@localSearchIndexroot.DN0kjX-C.js +1 -0
  21. package/.vitepress/dist/assets/chunks/{VPLocalSearchBox.hh_W4nJZ.js → VPLocalSearchBox.Bk7ibVxh.js} +2 -2
  22. package/.vitepress/dist/assets/chunks/{theme.5eXVDjQR.js → theme.C-O25Cww.js} +1 -1
  23. package/.vitepress/dist/assets/{guide_example.md.BfUvCGfI.js → guide_example.md.DGcC1Bi0.js} +1 -1
  24. package/.vitepress/dist/assets/{guide_example.md.BfUvCGfI.lean.js → guide_example.md.DGcC1Bi0.lean.js} +1 -1
  25. package/.vitepress/dist/assets/{guide_faq.md.CmsGgpOb.js → guide_faq.md.B_JaUqzL.js} +1 -1
  26. package/.vitepress/dist/assets/{guide_faq.md.CmsGgpOb.lean.js → guide_faq.md.B_JaUqzL.lean.js} +1 -1
  27. package/.vitepress/dist/assets/{guide_index.md.BXCpfqkx.js → guide_index.md.DEBRqUTN.js} +1 -1
  28. package/.vitepress/dist/assets/{guide_index.md.BXCpfqkx.lean.js → guide_index.md.DEBRqUTN.lean.js} +1 -1
  29. package/.vitepress/dist/assets/guide_node.md.BUqy6oYw.js +1 -0
  30. package/.vitepress/dist/assets/{guide_node.md.ZD-kK2fy.lean.js → guide_node.md.BUqy6oYw.lean.js} +1 -1
  31. package/.vitepress/dist/assets/{guide_optimize.md.BE7wgnc7.js → guide_optimize.md.Y2BSPgKk.js} +1 -1
  32. package/.vitepress/dist/assets/{guide_optimize.md.BE7wgnc7.lean.js → guide_optimize.md.Y2BSPgKk.lean.js} +1 -1
  33. package/.vitepress/dist/assets/{guide_selector.md.DX2jD1Pz.js → guide_selector.md.DHRkwwnW.js} +1 -1
  34. package/.vitepress/dist/assets/{guide_selector.md.DX2jD1Pz.lean.js → guide_selector.md.DHRkwwnW.lean.js} +1 -1
  35. package/.vitepress/dist/assets/guide_snapshot.md.Bov46Vv_.js +1 -0
  36. package/.vitepress/dist/assets/guide_snapshot.md.Bov46Vv_.lean.js +1 -0
  37. package/.vitepress/dist/assets/{guide_subscription.md.BeMoUK_5.js → guide_subscription.md.B-Vuphse.js} +1 -1
  38. package/.vitepress/dist/assets/{guide_subscription.md.BeMoUK_5.lean.js → guide_subscription.md.B-Vuphse.lean.js} +1 -1
  39. package/.vitepress/dist/assets/{guide_what-is-gkd.md.Bi_GkKdb.js → guide_what-is-gkd.md.fMcPCl1v.js} +1 -1
  40. package/.vitepress/dist/assets/{guide_what-is-gkd.md.Bi_GkKdb.lean.js → guide_what-is-gkd.md.fMcPCl1v.lean.js} +1 -1
  41. package/.vitepress/dist/assets/{index.md.Bi0u80bv.js → index.md.Bgax_V36.js} +1 -1
  42. package/.vitepress/dist/assets/{index.md.Bi0u80bv.lean.js → index.md.Bgax_V36.lean.js} +1 -1
  43. package/.vitepress/dist/assets/style.DU-YwcM_.css +1 -1
  44. package/.vitepress/dist/guide/example.html +8 -8
  45. package/.vitepress/dist/guide/faq.html +8 -8
  46. package/.vitepress/dist/guide/index.html +8 -8
  47. package/.vitepress/dist/guide/node.html +8 -8
  48. package/.vitepress/dist/guide/optimize.html +8 -8
  49. package/.vitepress/dist/guide/selector.html +8 -8
  50. package/.vitepress/dist/guide/snapshot.html +8 -8
  51. package/.vitepress/dist/guide/subscription.html +8 -8
  52. package/.vitepress/dist/guide/what-is-gkd.html +8 -8
  53. package/.vitepress/dist/hashmap.json +1 -1
  54. package/.vitepress/dist/index.html +7 -7
  55. package/package.json +1 -1
  56. package/.vitepress/dist/assets/chunks/@localSearchIndexroot.BrvJ-G67.js +0 -1
  57. package/.vitepress/dist/assets/guide_node.md.ZD-kK2fy.js +0 -1
  58. package/.vitepress/dist/assets/guide_snapshot.md.DyWXSaI-.js +0 -1
  59. package/.vitepress/dist/assets/guide_snapshot.md.DyWXSaI-.lean.js +0 -1
@@ -1 +0,0 @@
1
- import{_ as t,c as d,o as e,a8 as o}from"./chunks/framework.DAuRlsJR.js";const u=JSON.parse('{"title":"属性方法","description":"","frontmatter":{},"headers":[],"relativePath":"guide/node.md","filePath":"guide/node.md","lastUpdated":1721818930000}'),a={name:"guide/node.md"},c=o('<h1 id="title" tabindex="-1">属性方法 <a class="header-anchor" href="#title" aria-label="Permalink to &quot;属性方法 {#title}&quot;">​</a></h1><p>此章节介绍各个类型可用的属性及其方法</p><h2 id="null" tabindex="-1">null <a class="header-anchor" href="#null" aria-label="Permalink to &quot;null&quot;">​</a></h2><div class="note custom-block github-alert"><p class="custom-block-title">提示</p><p><code>null</code> 无任何属性方法, 并且在无特殊说明时, 属性方法当调用者或者参数是 <code>null</code> 时, 均返回 <code>null</code></p></div><p>当 <code>name</code> 是 <code>null</code> 时, <code>name.length</code> 为 <code>null</code></p><p>当 <code>parent</code> 是 <code>null</code> 时, <code>parent.getChild(0)</code> 为 <code>null</code></p><p>当 <code>index</code> 是 <code>null</code> 时, <code>parent.getChild(index)</code> 为 <code>null</code></p><h2 id="boolean" tabindex="-1">boolean <a class="header-anchor" href="#boolean" aria-label="Permalink to &quot;boolean&quot;">​</a></h2><table tabindex="0"><thead><tr><th>方法名</th><th>参数</th><th>返回类型</th><th>描述</th></tr></thead><tbody><tr><td>toInt</td><td></td><td><code>int</code></td><td>转为 0 或 1</td></tr><tr><td>or</td><td><code>boolean</code></td><td><code>boolean</code></td><td>a || b</td></tr><tr><td>and</td><td><code>boolean</code></td><td><code>boolean</code></td><td>a &amp;&amp; b</td></tr><tr><td>not</td><td></td><td><code>boolean</code></td><td>!a</td></tr><tr><td>ifElse</td><td><code>T</code>, <code>T</code></td><td><code>T</code></td><td>if(a) T else T <br> T 是任意类型</td></tr></tbody></table><h2 id="int" tabindex="-1">int <a class="header-anchor" href="#int" aria-label="Permalink to &quot;int&quot;">​</a></h2><table tabindex="0"><thead><tr><th>方法名</th><th>参数</th><th>返回类型</th><th>描述</th></tr></thead><tbody><tr><td>toString</td><td></td><td><a href="#string"><code>string</code></a></td><td>转为10进制字符串</td></tr><tr><td>toString</td><td><code>int</code></td><td><code>string</code></td><td>转为对应进制的字符串</td></tr><tr><td>plus</td><td><code>int</code></td><td><code>string</code></td><td>加上</td></tr><tr><td>minus</td><td><code>int</code></td><td><code>string</code></td><td>减去</td></tr><tr><td>times</td><td><code>int</code></td><td><code>string</code></td><td>乘以</td></tr><tr><td>div</td><td><code>int</code></td><td><code>string</code></td><td>除以</td></tr><tr><td>rem</td><td><code>int</code></td><td><code>string</code></td><td>取余</td></tr><tr><td>more</td><td><code>int</code></td><td><a href="#boolean"><code>boolean</code></a></td><td>a &gt; b</td></tr><tr><td>moreEqual</td><td><code>int</code></td><td><code>boolean</code></td><td>a &gt;= b</td></tr><tr><td>less</td><td><code>int</code></td><td><code>boolean</code></td><td>a &lt; b</td></tr><tr><td>lessEqual</td><td><code>int</code></td><td><code>boolean</code></td><td>a &lt;= b</td></tr></tbody></table><h2 id="string" tabindex="-1">string <a class="header-anchor" href="#string" aria-label="Permalink to &quot;string&quot;">​</a></h2><table tabindex="0"><thead><tr><th>标识符</th><th>属性类型</th><th>描述</th></tr></thead><tbody><tr><td>length</td><td><a href="#int"><code>int</code></a></td><td>字符串长度</td></tr></tbody></table><table tabindex="0"><thead><tr><th>方法名</th><th>参数</th><th>返回类型</th><th>描述</th></tr></thead><tbody><tr><td>get</td><td><a href="#int"><code>int</code></a></td><td><code>string</code></td><td>获取对应索引字符串</td></tr><tr><td>at</td><td><code>int</code></td><td><code>string</code></td><td>同上,但是参数传负数时从最后一个字符取</td></tr><tr><td>substring</td><td><code>int</code></td><td><code>string</code></td><td>截取指定索引到结尾字符串</td></tr><tr><td>substring</td><td><code>int</code>,<code>int</code></td><td><code>string</code></td><td>截取指定间隔字符串</td></tr><tr><td>toInt</td><td></td><td><code>int</code></td><td>转为10进制数字</td></tr><tr><td>toInt</td><td><code>int</code></td><td><code>int</code></td><td>转为指定进制的数字</td></tr><tr><td>indexOf</td><td><code>string</code></td><td><code>int</code></td><td>查找指定字符串的索引</td></tr><tr><td>indexOf</td><td><code>string</code>,<code>int</code></td><td><code>int</code></td><td>从指定索引开始查找指定字符串的索引</td></tr></tbody></table><h2 id="node" tabindex="-1">node <a class="header-anchor" href="#node" aria-label="Permalink to &quot;node&quot;">​</a></h2><div class="important custom-block github-alert"><p class="custom-block-title">重要提示</p><p>此类型下以 _ 开头的属性只能在网页快照调试工具上使用, 真机不可用</p></div><table tabindex="0"><thead><tr><th>标识符</th><th>属性类型</th><th>描述</th></tr></thead><tbody><tr><td>_id</td><td><a href="#int"><code>int</code></a></td><td></td></tr><tr><td>_pid</td><td><code>int</code></td><td></td></tr><tr><td>id</td><td><a href="#string"><code>string</code></a></td><td></td></tr><tr><td>vid</td><td><code>string</code></td><td></td></tr><tr><td>name</td><td><code>string</code></td><td></td></tr><tr><td>text</td><td><code>string</code></td><td></td></tr><tr><td>desc</td><td><code>string</code></td><td></td></tr><tr><td>clickable</td><td><code>boolean</code></td><td></td></tr><tr><td>focusable</td><td><code>boolean</code></td><td></td></tr><tr><td>checkable</td><td><code>boolean</code></td><td></td></tr><tr><td>checked</td><td><code>boolean</code></td><td></td></tr><tr><td>editable</td><td><code>boolean</code></td><td></td></tr><tr><td>longClickable</td><td><code>boolean</code></td><td></td></tr><tr><td>visibleToUser</td><td><code>boolean</code></td><td></td></tr><tr><td>left</td><td><code>int</code></td><td></td></tr><tr><td>top</td><td><code>int</code></td><td></td></tr><tr><td>right</td><td><code>int</code></td><td></td></tr><tr><td>bottom</td><td><code>int</code></td><td></td></tr><tr><td>width</td><td><code>int</code></td><td></td></tr><tr><td>height</td><td><code>int</code></td><td></td></tr><tr><td>childCount</td><td><code>int</code></td><td></td></tr><tr><td>index</td><td><code>int</code></td><td></td></tr><tr><td>depth</td><td><code>int</code></td><td></td></tr><tr><td>parent</td><td><a href="#node"><code>node</code></a></td><td>获取父节点</td></tr></tbody></table><table tabindex="0"><thead><tr><th>方法名</th><th>参数</th><th>返回类型</th><th>描述</th></tr></thead><tbody><tr><td>getChild</td><td><code>int</code></td><td><a href="#node"><code>node</code></a></td><td>获取指定索引的子节点</td></tr></tbody></table><h2 id="context" tabindex="-1">context <a class="header-anchor" href="#context" aria-label="Permalink to &quot;context&quot;">​</a></h2><p>context 具有 <a href="#node">node</a> 的所有属性方法, 下面只介绍额外属性方法</p><table tabindex="0"><thead><tr><th>标识符</th><th>属性类型</th><th>描述</th></tr></thead><tbody><tr><td>prev</td><td><a href="#context"><code>context</code></a></td><td>右侧属性选择器的节点上下文 <br> 最右侧的 prev=null</td></tr><tr><td>current</td><td><a href="#node"><code>node</code></a></td><td>当前节点 <br> current.id=id</td></tr></tbody></table><p>示例</p><div class="language-text vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">text</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>FrameLayout[prev.name$=&#39;ImageView&#39;] &gt; ImageView[current.name=name]</span></span></code></pre></div><p>中的 prev 就是 FrameLayout 右侧的 ImageView, current 就是 ImageView</p><table tabindex="0"><thead><tr><th>方法名</th><th>参数</th><th>返回类型</th><th>描述</th></tr></thead><tbody><tr><td>getPrev</td><td>int</td><td><a href="#context"><code>context</code></a></td><td>快捷获取深层 prev <br> getPrev(0) -&gt; prev <br> getPrev(1) -&gt; prev.prev <br> getPrev(2) -&gt; prev.prev.prev</td></tr></tbody></table><h2 id="global" tabindex="-1">global <a class="header-anchor" href="#global" aria-label="Permalink to &quot;global&quot;">​</a></h2><p>global 具有 <a href="#context">context</a> 的所有属性方法, 并且没有任何属性方法能获取 global 的引用, 下面只介绍额外属性方法</p><table tabindex="0"><thead><tr><th>方法名</th><th>参数</th><th>返回类型</th><th>描述</th></tr></thead><tbody><tr><td>equal</td><td><code>T</code>, <code>T</code></td><td><a href="#boolean"><code>boolean</code></a></td><td>a==b <br> T 是任意类型, a,b 允许 null</td></tr><tr><td>notEqual</td><td><code>T</code>, <code>T</code></td><td><code>boolean</code></td><td>a!=b</td></tr></tbody></table><p>示例</p><div class="language-text vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">text</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>[name=&#39;&#39;][prev.name=&#39;&#39;][current.name=&#39;&#39;][parent.name=&#39;&#39;]</span></span></code></pre></div><ul><li>第一个 <code>name</code> 来自 <a href="#global">global</a>, 实际上任何 <code>xxx</code>/<code>xxx()</code> 都来自 global</li><li>第二个 <code>prev.name</code> 来自 <a href="#context">context</a></li><li>后续的 <code>current.name</code>/<code>parent.name</code> 都来自 <a href="#node">node</a></li></ul>',31),r=[c];function n(i,l,h,b,s,p){return e(),d("div",null,r)}const m=t(a,[["render",n]]);export{u as __pageData,m as default};
@@ -1 +0,0 @@
1
- import{_ as a,c as e,o as t,a8 as i}from"./chunks/framework.DAuRlsJR.js";const m=JSON.parse('{"title":"快照审查","description":"","frontmatter":{},"headers":[],"relativePath":"guide/snapshot.md","filePath":"guide/snapshot.md","lastUpdated":1721818930000}'),o={name:"guide/snapshot.md"},r=i('<h1 id="title" tabindex="-1">快照审查 <a class="header-anchor" href="#title" aria-label="Permalink to &quot;快照审查 {#title}&quot;">​</a></h1><p>关于快照的一些知识</p><h2 id="what-is" tabindex="-1">什么是快照 <a class="header-anchor" href="#what-is" aria-label="Permalink to &quot;什么是快照 {#what-is}&quot;">​</a></h2><p>快照是一个 zip 文件, 保存了设备在某个时间点的状态, 包含以下内容</p><ul><li>截图</li><li>设备信息</li><li>界面信息</li><li>无障碍节点信息</li></ul><p>以前开发者和用户必须下载指定应用然后到指定界面使用类似 autojs 之类的界面才能审查界面</p><p>有了快照之后, 用户只需要在指定页面抓取快照分享给开发者即可</p><p>另外对于某些出现频率极低的界面, 快照也能直接保留这些界面的状态, 无需每次等待出现</p><h2 id="capture-snapshot" tabindex="-1">抓取快照 <a class="header-anchor" href="#capture-snapshot" aria-label="Permalink to &quot;抓取快照 {#capture-snapshot}&quot;">​</a></h2><p>在 GKD 内可以通过多种方式抓取快照, 需要一些前置条件</p><p>抓取快照时必须<strong>开启无障碍权限</strong>, 否则无法获取 界面信息 和 无障碍节点信息</p><p>如果你的设备满足 Android&gt;=11, GKD 可以通过 无障碍权限 获取截图, 否则需要额外开启截屏服务</p><p>到 <code>主页-设置-高级模式-截屏服务</code> 开启即可</p><p>当 Android&lt;=10 且不开启截屏服务时 GKD 会使用 同尺寸透明图片 作为截图保存到快照里</p><p>以下是抓取快照的方式</p><h3 id="by-button" tabindex="-1">通过悬浮窗按钮 <a class="header-anchor" href="#by-button" aria-label="Permalink to &quot;通过悬浮窗按钮 {#by-button}&quot;">​</a></h3><p>打开 <code>主页-设置-高级模式-悬浮窗服务</code> 后界面会出现一个可拖动的按钮, 在任意界面点击这个按钮即可抓取快照</p><h3 id="by-tile" tabindex="-1">通过快捷开关 <a class="header-anchor" href="#by-tile" aria-label="Permalink to &quot;通过快捷开关 {#by-tile}&quot;">​</a></h3><p>下拉打开状态栏, 左右滑动切换到有图标的界面, 点击添加或编辑, 在应用快捷开关找到 <code>捕获快照</code>, 图标和上面介绍的悬浮窗按钮一样</p><p>添加这个快捷开关到状态栏界面, 添加完毕后在任意界面下拉状态栏点击这个图标即可抓取快照</p><h3 id="by-volume" tabindex="-1">通过音量快照 <a class="header-anchor" href="#by-volume" aria-label="Permalink to &quot;通过音量快照 {#by-volume}&quot;">​</a></h3><p>TODO</p><h3 id="by-screenshot" tabindex="-1">通过截屏快照 <a class="header-anchor" href="#by-screenshot" aria-label="Permalink to &quot;通过截屏快照 {#by-screenshot}&quot;">​</a></h3><p>TODO</p><h3 id="by-inspect" tabindex="-1">通过审查工具 <a class="header-anchor" href="#by-inspect" aria-label="Permalink to &quot;通过审查工具 {#by-inspect}&quot;">​</a></h3><p>TODO</p><h3 id="by-invoke-service" tabindex="-1">通过调用服务 <a class="header-anchor" href="#by-invoke-service" aria-label="Permalink to &quot;通过调用服务 {#by-invoke-service}&quot;">​</a></h3><p>TODO</p><h2 id="share-snapshot" tabindex="-1">分享快照 <a class="header-anchor" href="#share-snapshot" aria-label="Permalink to &quot;分享快照 {#share-snapshot}&quot;">​</a></h2><p>快照的一个好处在于可以分享并在线打开, 这可以更好地展示你的问题来获取别人的帮助</p><p>GKD 没有自己的文件存储服务器, 所有的快照都借助 Github 存储</p><p>例如快照 <a href="https://i.gkd.li/i/16235400" target="_blank" rel="noreferrer">https://i.gkd.li/i/16235400</a> 中的 <code>16235400</code> 实际指向了 Github 上的一个文件, 它的链接如下</p><div class="language-txt vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">txt</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>https://github.com/user-attachments/files/16235400/file.zip</span></span></code></pre></div><p>当你使用审查工具生成快照时, 审查工具会自动帮你上传文件到 Github 后得到链接, 相当于自动化以下行为</p><ul><li>从审查工具下载快照为 file.zip 文件到电脑上</li><li>登录 Github 并转到任意能上传文件或者评论的公开页面</li><li>将刚刚的文件拖动进输入框, 文件链接会自动生成</li></ul><p>其中使用到的工具库为</p><ul><li><a href="https://github.com/gkd-kit/network-extension" target="_blank" rel="noreferrer">network-extension</a></li><li><a href="https://github.com/lisonge/user-attachments" target="_blank" rel="noreferrer">user-attachments</a></li></ul><h2 id="rm-privacy-info" tabindex="-1">去除快照中的隐私信息 <a class="header-anchor" href="#rm-privacy-info" aria-label="Permalink to &quot;去除快照中的隐私信息 {#rm-privacy-info}&quot;">​</a></h2><p>当抓取快照时, 图片中可能含有人的名字等敏感信息, 可能需要去除这些信息</p><p>在 GKD 的快照记录界面, 你可以先将快照图片保存到相册, 然后在相册做打马赛克之类的编辑, 之后回到记录界面替换截图即可</p><p>如果敏感信息是文字保留在快照里的节点信息上, 你需要将快照 zip 文件解压缩, 内部有一个 json 文件</p><p>节点信息就在 nodes 数组字段上, 可以直接使用文本替换为等价数量的 <code>*</code>, 修改文件后重新压缩为 zip 重新导入快照即可</p>',42),s=[r];function l(n,p,h,c,d,u){return t(),e("div",null,s)}const f=a(o,[["render",l]]);export{m as __pageData,f as default};
@@ -1 +0,0 @@
1
- import{_ as a,c as e,o as t,a8 as i}from"./chunks/framework.DAuRlsJR.js";const m=JSON.parse('{"title":"快照审查","description":"","frontmatter":{},"headers":[],"relativePath":"guide/snapshot.md","filePath":"guide/snapshot.md","lastUpdated":1721818930000}'),o={name:"guide/snapshot.md"},r=i("",42),s=[r];function l(n,p,h,c,d,u){return t(),e("div",null,s)}const f=a(o,[["render",l]]);export{m as __pageData,f as default};