V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  lisongeee  ›  全部回复第 8 页 / 共 31 页
回复总数  620
1 ... 4  5  6  7  8  9  10  11  12  13 ... 31  
@akira #27

> 小程序里面的东西他能点么

可以的,这个是饿了么小程序的快照 https://gkd-kit.gitee.io/import/12504305

但是有个缺点,无法通过 activityId 来区分小程序,所有小程序的 activityId 都是 https://gkd-kit.gitee.io/import/12504305
@aQuQ #25

> 进阶一点的玩法是禁用组件/host op 有考虑这个方向吗?

非常抱歉哈,这个暂不考虑,这个应用核心在于 GKD 高级选择器

说到禁用组件,miui 系统的开屏广告倒是可以使用 adb 命令禁用
@akira #27

> 小程序里面的东西他能点么

不知道,小程序如果内部提供无障碍就可以点击,比如知乎是套的 h5 ,webview 内部就是可以点击的,我一会试试
@Jirajine #21

> 规则更新需要非常频繁吗?

目前是,目前订阅是 https://github.com/gkd-kit/subscription 虽然我自己够用,但是对大多数人来说,有点少
@Jirajine

如果不放心你直接把网络权限禁用了就行,应用能设置暂停更新,每个订阅每个 APP 每个规则组也能单独设置禁用的

但是如果不联网,应用有 bug 如何更新呢,这种 app 又不能上架,也不能像 李跳跳一样 微信公众号里分发

另外 APP 自带的默认的订阅是来自 https://github.com/gkd-kit/subscription 这个订阅也是开源维护的
@Jirajine

应用启动第一次更新后可以在设置里配置暂停更新的
@xiaolushuo123

> 支持下,tv 上可以使用吗

抱歉我没有 tv ,但是如果 tv 上如果能开启无障碍服务,我猜测可以
@Jirajine

不联网怎么更新订阅获取新规则组啊,而且这个是开源的,你完全可以自己构建
@2218675712

shizuku 目前只支持 获取 activityId ,通过 shizuku 获取 无障碍服务是可以实现的,但是我手机的 shizuku 老是自动关闭

因此就没怎么实现,后续会支持的,但是我的无障碍很稳啊,从来没有关闭过
@iwlei

什么自定义规则都能行,只要有快照,这个选择器引擎能玩出花来,地铁二维码 这种寸寸小 case

这个规则还能实现自动接受微信转账,自动微信抢红包,但是我以前不小心把写的规则删除了,我后续补一下
这个 APP 是我两年前开始磨磨蹭蹭边玩遍写的,核心部分是 那个 GKD 节点高级选择器,是用 kotlin multiplatform 写的

kotlin 可以编译到 js ,这使得网页审查工具也能执行选择器,这个对规则书写效率提高是很大的

界面 UI 使用体验可能不太好,因为我的审美比较辣鸡,请见谅,但是规则执行部分是没问题
比如百度贴吧评论区中间的广告的规则是,我确信 李跳跳 是做不到这种规则的

```txt
{
key: 4,
name: '帖子评论区内部广告卡片',
activityIds: 'com.baidu.tieba.frs.FrsActivity',
rules:
'ImageView < @FrameLayout < LinearLayout < RelativeLayout <n LinearLayout < RelativeLayout + LinearLayout[id=`com.baidu.tieba:id/obfuscated`] TextView[text=`广告`]',
},
```
比如某些可关闭广告的按钮没有 id/text/desc 或者不唯一并且位置也不固定,这时 李跳跳 是无法关闭的

但是 GKD 的选择器能把这个节点周围的节点也作为判断逻辑,类似 CSS 的 A > B

如果了解过 CSS ,那么对这个选择器会有一点熟悉,比如截图示例里的关闭微信广告的规则是

```txt
{
key: 0,
name: '关闭朋友圈广告',
desc: '朋友圈信息流广告,点击关闭按钮,确认关闭',
activityIds: 'com.tencent.mm.plugin.sns.ui.SnsTimeLineUI',
exampleUrls: [
`https://github.com/gkd-kit/subscription/assets/38517192/c9ae4bba-a748-4755-b5e4-c7ad3d489a79`,
],
rules: [
'TextView[text*=`广告`] + TextView[text=`关闭该广告`]',
'ImageView - TextView[text=`广告`][id!=null][index=0]',
],
},
```
@bnoblech

这个和李跳跳不一样,李跳跳是本地规则,GKD 是 订阅规则

最不一样的是 GKD 提供了一个强大的选择器引擎以及对应的快照审查工具能实时连接应用内置的 HTTP Server

https://github.com/gkd-kit/selector

https://github.com/gkd-kit/subscription

https://github.com/gkd-kit/inspect

GKD 的选择器规则能把界面上的无障碍节点串连起来,大大提高了泛用性

网页审查工具能实时测试选择器选中的目标节点,大大提高规则开发效率
242 天前
回复了 nnegier 创建的主题 Android 请教 Android 任务栈 Intent 指向相关问题?
从 从前台通知中启动了一个 Activity ,如果这个 Activity 不是 MainActivity ,又不想在[系统最近任务界面]显示这个快照

你可以重写 finish() 换成 finishAndRemoveTask() 这样你 finish 这个界面的时候,它不会在 [系统最近任务界面] 上显示
也可以用 github 图片,随便找个仓库评论区输入框粘贴图片自动上传并生成 markdown

![image]( https://github.com/lisonge/vite-plugin-monkey/assets/38517192/c2e7fe76-a31c-4fd6-ad51-b7366a3ec804)
查看它的 dependencies 可以发现 https://www.npmjs.com/package/inquirer
@FrankHB

null 我觉得还好,不好的点是没有把 null 做到编译期,实际上可 null 就是一个简单的联合类型

如果把 null 像 kotlin/ts/c#/Swift/dart 直接做到编译期,我觉得就没啥问题了

Optional 太长太难用了,还是编译期 null 校验+可选链更好用
@yinzhili 是的,我同意你的说法
kotlin: val jobName = people?.job?.jobName ?: null
js/ts: const jobName = people?.job?.jobName?.[0] ?? null
c#: var jobName = people?.job?.jobName?[0] ?? null
Swift: let value = obj?.nestedObj?.property
dart: var jobName = people?.job?.jobName ?: null

但是肯定有人觉得 Optional 比上面更好用,毕竟祖宗之法不可变
1 ... 4  5  6  7  8  9  10  11  12  13 ... 31  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2798 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 33ms · UTC 10:48 · PVG 18:48 · LAX 03:48 · JFK 06:48
Developed with CodeLauncher
♥ Do have faith in what you're doing.