今天是柚子社大贤宗师绫地宁宁的纪念日0721,将这条消息转发到十个群,将会在图书馆遇到一位正在打磨桌角的宁宁,我试过了,是假的,还会被骂柚子厨退群,但是今天真的是绫地宁宁的纪念日0721日,让我们一起为宁宁庆祝!Ciallo~(∠・ω< )⌒☆
🥰9
Forwarded from 夢璃 桜川
OOM. WG.
这里是一切的开始,在仰望星空的同时,也悄然承载着一点点回忆
はらり、ひらり
Sona
「はらり、ひらり」- Sona
专辑: song bird 2 〜love song collection〜
专辑: song bird 2 〜love song collection〜
31.37MB 901.87kbpsvia @Music163DownBot
#网易云音乐 #无损 #flac
Forwarded from 夢璃 桜川
讲讲关于 YumeBox 最近的一些改动,凑合着看,有问题欢迎指正 自言自语为主
YumeBox 最早是 Fork CMFA 来着,后面慢慢迭代只留下了 Core 部分,也就是 FFI JNI 部分,显然让手写 JNI 是不可能手写的,复制粘贴就能用完全没有必要从新实现
でも、今から,Core 也被替换掉了,百分百自研 胡说八道的
一直很想实现 app 端 Tun 不是模块来着,瞎捣鼓出来了,能用,但是显然不需要 magisk 模块那样复杂,导入开箱即用,那么遇到了一些问题,使用 libsu 可以实现 deamon 解决 app 被 kill 后台停止代理的问题,但,出现了新的问题,怎么让 app 去链接上旧deamon ,不会搞,害,半残的 Tun
于是,或许可以换一种方法,例如把 libclash 共享库换成可执行文件直接 exec,在 JNI 写一个简单的壳层拉起来 core,把 fd 等东西传过去,害,SDK29 限制了私有目录直接 run,也就是说 /data/app/pkg/lib/ 这里的才有可执行权限和 exec 能力,不然会被 SELinux 直接拦下来
喔,还有,或许可以魔改一下更新 mihomo 内核,虽然限制了私有目录 exec 权限,但是 load so 还是可以的,所以只需要把 build 的内核和 bridge 搞进宿主私有目录,手动 load 一下,算是邪门歪道,でも,sub-store 的 Javet 是这样解决的
回到前面,那么能把 core 拉起来就能解决掉现在 Core 里面大量的 JNI 和耦合性,通过 REST API Socket,顺便能直接解决前面 Tun 残废的问题,害,就这样,一点点慢慢就靠过去了
当然对于 patch 内核源码,Android 端 FFI 也是一个难题,要么 Flclash 直接 fork 源码 ck 手动维护,要买就是 cmfa 这种 JNI bridge,嗯,显然 cmfa 是目前最佳实践,当然能能 PIE exec 前提是不能对内核源码做很大变更,还好,完全不需要 flclash 那种 patch,只需要 patch 我们需要的部分(压根不用 patch,为了完整 Tun 实现)可持续维护上完全没有问题,直接改动内核源码实现 FFI 还是太野蛮了
那么综上所述,只需要简单的壳层,PIE 可执行文件,patch 一点点修改源码,不需要手写 JNI,socket 通信, Tun 完整实现,或许是目前最好的实践方式
好处是什么呢,把内核和 GUI 解耦了,把配置问题交给内核,内核能直接跑动的,YumeBox 一定跑的动,有问题就是 GUI 的问题,可以直接把配置问题过滤掉,不要把为什么这个配置无法启动问题抛给我
喔,还有关于打包方式,简短点说就是 xz 把 lib 里面全部打包成 xz,以及 dex 也打包 xz 放到 assets 里面,app init 时候把 xz 解压缩,入口做一个简单的壳层,去把压缩后的 dex load 起来,lib 里面依次 load,这就是 18M 那个 apk 的做法,でも、现在没有把 libclash 打包进 xz 里面,因为上面需要 exec,需要可执行权限以及目录,害,这样看起来收益没有那么明显了
YumeBox 最早是 Fork CMFA 来着,后面慢慢迭代只留下了 Core 部分,也就是 FFI JNI 部分,显然让手写 JNI 是不可能手写的,复制粘贴就能用完全没有必要从新实现
でも、今から,Core 也被替换掉了,
一直很想实现 app 端 Tun 不是模块来着,瞎捣鼓出来了,能用,但是显然不需要 magisk 模块那样复杂,导入开箱即用,那么遇到了一些问题,使用 libsu 可以实现 deamon 解决 app 被 kill 后台停止代理的问题,但,出现了新的问题,怎么让 app 去链接上旧deamon ,不会搞,害,半残的 Tun
于是,或许可以换一种方法,例如把 libclash 共享库换成可执行文件直接 exec,在 JNI 写一个简单的壳层拉起来 core,把 fd 等东西传过去,害,SDK29 限制了私有目录直接 run,也就是说 /data/app/pkg/lib/ 这里的才有可执行权限和 exec 能力,不然会被 SELinux 直接拦下来
回到前面,那么能把 core 拉起来就能解决掉现在 Core 里面大量的 JNI 和耦合性,通过 REST API Socket,顺便能直接解决前面 Tun 残废的问题,害,就这样,一点点慢慢就靠过去了
当然对于 patch 内核源码,Android 端 FFI 也是一个难题,要么 Flclash 直接 fork 源码 ck 手动维护,要买就是 cmfa 这种 JNI bridge,嗯,显然 cmfa 是目前最佳实践,当然能能 PIE exec 前提是不能对内核源码做很大变更,还好,完全不需要 flclash 那种 patch,只需要 patch 我们需要的部分(压根不用 patch,为了完整 Tun 实现)可持续维护上完全没有问题,直接改动内核源码实现 FFI 还是太野蛮了
那么综上所述,只需要简单的壳层,PIE 可执行文件,patch 一点点修改源码,不需要手写 JNI,socket 通信, Tun 完整实现,或许是目前最好的实践方式
好处是什么呢,把内核和 GUI 解耦了,把配置问题交给内核,内核能直接跑动的,YumeBox 一定跑的动,有问题就是 GUI 的问题,可以直接把配置问题过滤掉,不要把为什么这个配置无法启动问题抛给我
喔,还有关于打包方式,简短点说就是 xz 把 lib 里面全部打包成 xz,以及 dex 也打包 xz 放到 assets 里面,app init 时候把 xz 解压缩,入口做一个简单的壳层,去把压缩后的 dex load 起来,lib 里面依次 load,这就是 18M 那个 apk 的做法,でも、现在没有把 libclash 打包进 xz 里面,因为上面需要 exec,需要可执行权限以及目录,害,这样看起来收益没有那么明显了
夢璃酱是好女孩
YumeBox-builtin-0.6.0.apk
更新日志
https://yumebox.gal.tf/update/history#2026-7-27
两种版本的应用功能和内核代码完全相同
https://yumebox.gal.tf/update/history#2026-7-27
builtin:内置 GeoIP、GeoSite、ASN 和 BundleMRS,安装后可直接使用,推荐首次下载安装选择此版本。external:不内置 Geo 数据,APK 更小,但首次使用需要联网下载。两种版本的应用功能和内核代码完全相同
YumeBox
更新日志 - YumeBox
🥰5
夢璃 桜川
滤掉,不要把为什么这个配置无法启动问题
不要把 为什么xxx配置怎么没办法启动等诸如此类问题抛给我,经过测试正常使用没有问题,如果基础功能都没办法启动那就是配置有问题,想办法debug,不当客服
解决问题的前提是能正常交流,有bug 应该去 GitHub 开 issue 并附带日志,或者加群组
https://t.me/OOM_Group
群组自己想办法过验证,三个方式总得会一个吧,不限制次数加入,不会问AI也能过,验证链接
https://t.me/YumeYucca/382
解决问题的前提是能正常交流,有bug 应该去 GitHub 开 issue 并附带日志,或者加群组
https://t.me/OOM_Group
群组自己想办法过验证,三个方式总得会一个吧,不限制次数加入,不会问AI也能过,验证链接
https://t.me/YumeYucca/382
Telegram
伊甸园
世界终结之时,唯有伊甸中的你我
入群前请熟悉题目并设置一个头像,被移除后不限次数重试,题目三个类型任选其一即可
详见:https://t.me/YumeYucca/382
入群前请熟悉题目并设置一个头像,被移除后不限次数重试,题目三个类型任选其一即可
详见:https://t.me/YumeYucca/382