终于,ADB KIT、Uncon支持无root OTG

实现经历

虽然在无 root 的情况下支持 adb 不是一个特别大众的需求,但是我仍在为此做努力,这个已经是前两周实现了,但是没时间写相关文章。

解释一下 adb 编译成 arm64 二进制后,为什么不能无 root 通过 OTG 去连接另一台设备,因为 adb 在最初设计就没有考虑会运行在安卓设备上,在安卓上,进程不能直接读写 /dev/bus/usb 节点,而在 PC 上是扫描这个节点(linux),这和安卓其它一堆动态权限类似,安卓为了做权限控制,修改了了 Linux 内核,加了 Linux 原本不会有的限制,例如 Linux 上普通进程本就是可以读写 usb 的,但在安卓上,我们只能通过编写 java 代码动态申请安卓权限,然后用 android 的 java api 去读写。
所以c语言层不能读写 usb,而 java 可以,而这二者如何结合,就是问题所在,也是实现的难点所在。

所以在之前的 ADB KIT中,我也是这样做的,并用 java 代码实现了部分 adb 协议,包括握手,鉴权,文件上传,软件安装,终端交互。这部分是开源的,文章在掘金 -> https://juejin.cn/post/7034799230086545445,所以我对 adb 本身的理解,本就已经超出绝大部分人了,你们给我提的思路和建议,都是我四五年前能想到的东西了,我们做东西要的是实现,而不是谁都能想到的想法。

但是这种效率极低,上传文件龟速,不也不太清楚是为什么,可能是我实现得不好,也可能是 java 效率本就不如 c。
并且协议很难实现完整,例如投屏所需要的关键协议,adb forward 等

最终方案,将 termux-adb 进行了改造,结合 termux-api,在命令行中实现动态申请 usb 权限,然后获得文件的描述符,然后 hook adb 在代码中的 open opendir 等方法,让它以为读取到的就是串口设备,这样的效率是极高的。

经过了很久的尝试,花了我的一整个周末,熬了几个大夜,说实话,我不太想把这作为一个免费的功能,但是最终,它是免费的,在当前版本是,我不会限制你使用的版本,如果后续它成为一个付费的功能,你也可以使用历史版本。

总是会有人来说,“都是用的开源的东西你凭什么收费,都是能查到的资料写的你凭什么收费,尽管不是能查到的资料,那你也是凭现有的资料总结出来的,你凭什么收费”,有个人之前在酷安的评论区一直喷我这点(最近又来一个),我屏蔽后去我的B站喷,这世上最可怕的生物,是人。

我就收费了,我写个 hello world 我也收费999元怎么了?你敢说我错了?没逼着你买,我的软件都是我付出过极多精力的东西,很多都一直免费到现在,我上班工资一个月几w,下班还要来伺候这群人(指的态度不好的),真是不讨好。当然友好的用户,我还是很愿意为他们提供好的软件的。

如果我喜欢某一个软件,我希望它是收费的,如果它一直免费,我反而会担心,用爱发电总有终止的那一天,除非开发者财富自由,不然开发者总是会陷入一个困境“写这个又没钱,要不我不写好好上班算了”。

的确,目前我所开发的软件,都给我带来很多的精神内耗,加上最近了解了一下我升职后的工资,大概升两职后,工资大概能到4w一个月,我为什么不把自己写软件的精力也投入到工作上呢?然后一天一天。

哦最后关于我的软件为什么还不收费,是因为一个软件要收费,需要做的事情也是很多的,后端接口,鉴权方式等,最近公司的压力太大,我能拿来自己开发的时间极少。

我不太清楚甲壳虫和bug的方式,但我敢说,目前 ADB KIT OTG 的效率是大于它俩的。

如何使用

1.保证需要调试的设备开启了 USB 调试
2.使用 OTG 数据线连接两个设备
这个地方有个小坑, type c to c 的线总是没办法区分谁连谁,全靠运气,所以有条件的可以用 USB to Type c 再加一个 OTG转接头解决

ADB KIT 将绝大部分的工作都自己完成了,使用 OTG 调试设备几乎和 PC 连接 Android 一样

数据线插上,然后打开 ADB KIT
如图,注意点确定哈,点完后,被调试的设备会出现 ADB 的弹窗,也注意点确定哈(如果是MIUI没点到这个弹窗,后面都不会弹了,重启和开关 USB 调试可以解决)

无 Root 使用 ADB 带来的好处

只要自己有两个设备即可激活 Shizuku、Scene、冰箱等软件,就算需要激活的设备没有自带的无线调试
可以更方便的为其他的设备安装/卸载软件,上传文件,例如车机,手表

无界也马上支持无 Root OTG 控制另一台安卓(车机,手表),最近工作压力稍微有点大,精力缺乏。

Android双屏异显简单上手

获得 Display

1.一、使用MediaRouter选择演示显示

1
2
3
4
5
6
7
8
MediaRouter mediaRouter = (MediaRouter) context.getSystemService(Context.MEDIA_ROUTER_SERVICE);
MediaRouter.RouteInfo route = mediaRouter.getSelectedRoute();
if (route != null) {
Display presentationDisplay = route.getPresentationDisplay();
if (presentationDisplay != null) {
// ***
}
}
阅读更多

梦魇兽软件反馈指南

软件反馈

目前个人软件两个群,总共2000多人,处理反馈信息压力属实太大,时不时一个好友请求过来,几句话啥也说不明白就开始慰问我全家。

酷安私信也是,我平时工作偶尔就想放松一下,当个社区刷一下,就发现私信态度不好的,评论态度不好的,态度不好还指责我的,说其他的开发者是又厉害有热心,我的确做不到…

所以后续我QQ禁止加好友,酷安禁止私聊。

后续反馈优先处理邮箱(mengyanshou@gmail.com)和Github Issue中的信息。

不要一上来就一段简单的文字,说这是为什么为什么!我甚至都不知道你使用的软件是哪一个

反馈带上最基本的信息。

手机系统类型:MIUI,Flyme

Android 版本:10,11,12

所使用的软件版本:以应用在系统内为主,就是你在桌面长按软件进入应用详情看到的那个

复现逻辑:如果是bug,你得让我复现,我才能通过调试代码进行修复

开发维护多难

魇·工具箱代码是1.7w行

速享是1.6w行

ADB KIT 是1.7w行

Uncon 是1.6w行

Code FA 的代码很少,相比上面几个可以忽略不计

除了闭源的魇·工具箱和 Uncon 以外,其他项目都是开源的,觉得不真实的话可以自己去对应的开源地址看。

每个工程有大量的上下文,所以我每次维护一个软件,都有一些时间是在读之前的代码,我如果一天维护一个软件,可能才把当前代码读懂,就该维护下一个软件了。

所以我基本是好几周专一维护同一个软件。

维护的时间

由于我目前**的问题比较严重,平时下班基本没有精力再写代码,周末也是很少的时间维护,所以大家购买会员慎重考虑。

一些闲话

我在滴滴加实习工作了一年,也和多个部门协作过,至今我没有遇见一个人还用业余时间搞个人项目的,一个也没有!

也许在他们眼中我才是那个傻子。明明拿着比大多数同龄人都要高的工资,却要一边上班一边伺候我的用户。

平时上班本就烦躁,一些一加群就@我啥也说不明白的人,我真的会更烦躁。

个人软件对我的意义

是爱好,是执念,我遇见一些需求场景找不到好的软件,我便会尝试自己开发,当前脑子里面还有非常多的想开发的软件。

自然是因为时间不允许,所以才没开发。

我也想不工作专心写自己的项目,可我还需要生活,需要还债。

Flutter实战项目-Android生态互联

背景

目前各大厂商的多设备协同大都做得差强人意,并且都只是自己生态下的产物,不能实现跨生态互联。

为什么厂商不真正将生态覆盖到其他设备?是技术支持不够吗?
技术不是问题,以每个厂商的实力,像鸿蒙的互联,小米妙想,应该是能够跨厂商互联的,但是这样做了,用户就不会为了使用这项功能,
而对整个生态的设备消费了,这甚至会直接影响设备的销量,例如我有小米手机,华为平板,如果华为平板已经支持小米妙想的话,我再买小米平板的概率就被降低了。

软件截图

在视频渲染上,

屏幕的渲染氛围硬解和软件,在前面的版本,是通过 C/C++ 自实现代码,

从大的视角看 Uncon

Flutter 承载了前面的视图界面,用户最先看到的主页,菜单,响应各种动画

ROM工具现存情况调研

1.TIK

开源免费 bash+python
优点:安卓通用工具箱,支持大量格式ROM分解、合成()

阅读更多

客制化键盘入坑

前言

这不是一篇专业的键盘指南,只是我个人从初入这个坑进行的一些总结。

所谓的客制化套件,比我想象中的多太多了。传送,可以看这位UP的视频,各种各样的键盘。

如果你不知道选啥套件,去他的视频列表中基本就能找到自己喜欢的。

期初我也不知道这些人晒的键盘是在哪儿买的,淘宝搜不到,京东搜不到。

后来稀里糊涂才知道ZF这个软件,ZFrontier,装备前线(应用市场下载)。后来才知道,一些准备卖的套件,会发布一些开团的帖子,会贴上开团群号。

然后进群后,大都是让填一个石墨,附上地址信息和转账订单号和截图等。

如何选键帽键帽

  • 键帽会影响手感,我以前一直以为不会
  • 键帽会影响套件声音
  • 同样的轴在不同的位置声音也不同

建议别用XDA,我起初觉得键帽好看就行,结果发现,XDA的键帽特别容易误触。

量产键盘推荐

NJ80(墙裂推荐)

这款键盘由于还是塑料壳,声音不是那么优秀,但这是我用的第一把手感非常棒的键盘,刚开始会经常看其他的UP推荐各种各样的量产键盘。

但都不会提到这款键盘,其原因是这款键盘其实是一年前的了,但如今还是挺不错的,我是后来上小红书才发现这款键盘的,体验了金粉轴,办公写代码感觉都非常nice。

不过大家有些反馈打字会震手,但我并没有感受到

个人录制的打字音 传送门

HALO65

这是B站之前抄得很火的 Nuphy air 65 一个牌子的,整体感觉还是可以,但是键盘灯屏闪比较严重,不过我觉得挺好看的,也冲了

关于键盘灯屏闪: 这个其实和手机屏闪是一样的道理,大家都说反正人眼看不出来,其实不然,低频率的屏闪会让人视觉感到疲劳的,当然你可以不用一直盯着看。

原厂的晚风轴润多了,按起来有点肉,后来我自己换了金粉,感觉就好很多了,灯有屏闪眼睛不一直盯着看,问题不大。

NJ68PRO

我是在 Keydous官网发现这把键盘的,小红书以及B站的视频并不多。

但我很喜欢。所以就冲了,1599,铜定位+草莓冰淇淋轴PRO,用了很久,还是很不错,虽然这个价格,是有很多溢价的,但是也算半个量产了。

打字声音很棒!

其他的套件带轴和键帽,还得坐牢几个月才能拿着。

专业的角度我不太懂,打字音不错,手感不错

FASTAPI官方项目(二)-数据库介绍、后端文件结构介绍

前言

这个后端有标准的 OAuth2.0 用户认证,token 是 jwt 规范的 beaere token,并且数据库中存的是用户密码的 hashcode,
登录也只是检验的用户提交的密码的 hash 与数据库是否一致,hashcode 是无法还原成
原始密码的,也就是说极端情况数据库被盗,别人也无法看到用户的密码。

阅读更多