用 Rust 打包了一个才 1.8M 的微信读书 Mac App - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
/div>
爱意满满的作品展示区。
tw93
V2EX    分享创造

用 Rust 打包了一个才 1.8M 的微信读书 Mac App

  •  
  • tw93
    Tw93 2022-10-15 09:14:55 +08:00 14044 次点击
  • 这是一个创建于 1144 天前的主题,其中的信息可能已经有所发展或是发生改变。

    总览

    之前用 Rust 打包了一个微信读书的 Mac 版本,1.8M 大小,用了一段时间还不错,将代码开源到 Github ,感兴趣的小伙伴可下载试试,让你可以使用电脑进行阅读,当然也可以基于代码二次开发一些其他有趣的工具。

    开源地址:https://github.com/tw93/pake

    下载地址:http://tw93.fun/images/app/WeRead.dmg

    原理

    用 Rust 来打包你的 App ,底层使用 Tauri ,当前支持微信读书,有更多想法,欢迎提 Issue 。

    展示效果

    1

    第 1 条附言    2022-10-15 10:17:11 +08:00

    0.2 新增 Flomo

    2

    第 2 条附言    2022-10-15 18:34:16 +08:00

    为了防止 ETC,说明如下

    1. 这个东西只是一个玩具,不是用来赚钱的,关于你更喜欢 PWA 或者其他的打包方式完全没有问题,喜欢就好
    2. 花了半天搞的,所以只能说能用,或者有朋友想自己折腾折腾,fork 就能用,没有太多优化啥的,后面会持续优化优化,当时开源这种东西,不是甲乙方的关系,而是分享交流而已,V 站我觉得是国内程序员最好的社区,不然其实也不会来分享的。

    关于这个工具的一些特征,说明如下

    • :相比传统的 electron 套壳打包,大小要小数十倍,一般 2M 大小
    • :Pake 的底层使用的 Rust Tauri 框架,性能体验较 JS 框架要轻快不少
    • :不是单纯打包,实现了通用快捷键的透传、沉浸式的窗口、拖动、打包样式兼容
    • :只是一个玩具,或者说一个用 Rust 替代之前老思路的玩法,欢迎交流

    此贴不再回复,下楼吃螺蛳粉去~

    75 条回复    2023-09-09 00:38:00 +08:00
    fyooo
        1
    fyooo  
       2022-10-15 09:41:40 +08:00
    哇塞,不错啊,暗中观察一下,看看大家会不会被封号,不封的话我再试试
    HopeLee
        2
    HopeLee  
       2022-10-15 09:42:30 +08:00
    赞一个
    sdd11
        3
    sdd11  
       2022-10-15 09:52:20 +08:00 via iPhone
    为啥能这么小,因为用的系统的 webkit 么
    oldshensheep
        4
    oldshensheep  
       2022-10-15 09:52:53 +08:00   44
    感觉是来搞笑的,套个浏览器就成了一个应用了。还有 100 多 STAR ,什么小白这么好骗,眼馋……
    Sting1226
        5
    Sting1226  
       2022-10-15 09:59:17 +08:00   1
    直接网页版不就好了。网页转 App 纯属脱了 kz 放 p 。
    bxb100
        6
    bxb100  
       2022-10-15 10:01:38 +08:00
    虽然但是直接用 PWA 不就好了
    tw93
        7
    tw93  
    OP
       2022-10-15 10:07:18 +08:00 via iPhone
    @Sting1226 爱用不用
    tw93
        8
    tw93  
    OP
       2022-10-15 10:14:37 +08:00
    @fyooo 为啥会封号?
    tw93
        9
    tw93  
    OP
       2022-10-15 10:15:52 +08:00
    @sdd11 是的,rust 里有一个叫做 tauri 的框架搞的
    tw93
        10
    tw93  
    OP
       2022-10-15 10:16:29 +08:00
    @bxb100 其实不是所有的都要做成这样的,更适合那种本来应该是一个 pc 软件的当时没有做的那种,比如说各种阅读类的
    Veneris
        11
    Veneris  
       2022-10-15 10:16:38 +08:00 via iPhone
    不懂就问,这不就是网页套壳吗?
    甚至是把微信读书官方的网页直接套进来
    tw93
        12
    tw93  
    OP
       2022-10-15 10:19:19 +08:00
    @Veneris 是的,不是传统那种,这个性能好一点,而且包巨小,传统套壳一般是 100M 的大小了,相当于包了一个 electron ,这个使用的是当前一个 Rust 中一个比较新的技术 https://tauri.app/ 弄的,可以去了解一下,平时用来做些小工具很合适
    tw93
        13
    tw93  
    OP
       2022-10-15 10:27:51 +08:00
    要不我也点一个赞,哈哈
    dcsuibian
        14
    dcsuibian  
       2022-10-15 10:28:57 +08:00   1
    只是套壳的话没啥用。
    vscode 、draw.io 、typora 做成 app 可以读取、访问本地文件
    clash for windows 是为了改网络设置

    微信读书本来不就有网页版,也不需要调用本地 api ,直接多一个浏览器标签页不好么
    tw93
        15
    tw93  
    OP
       2022-10-15 10:36:40 +08:00
    @dcsuibian 其实各有喜好,怎么都行
    hangbale
        16
    hangbale  
       2022-10-15 10:51:14 +08:00
    最近正在用 tauri 重构之前的一个项目 比 Electron 爽多了
    tw93
        17
    tw93  
    OP
       2022-10-15 10:52:55 +08:00
    @hangbale tauri 我大概半年前开始用,这个东西性能以及和本地交互还是很不错的,就是 rust 很多周边能力还是没有 js 那么丰富,不过愿意折腾其实反而更好玩
    kenken
        18
    kenken  
       2022-10-15 10:56:35 +08:00 via iPhone
    不错,支持一下
    penzi
        19
    penzi  
       2022-10-15 11:33:14 +08:00 via Android
    好奇 OP 怎么推广这么短时间拿到这么多 stars 的
    tw93
        20
    tw93  
    OP
       2022-10-15 11:35:43 +08:00
    @maggch97 我在推上也发了下,不少朋友比较喜欢,才想着其实 V 站也有不少喜欢技术的朋友,就顺便也发到这里来了
    mango111
        21
    mango111  
       2022-10-15 11:35:48 +08:00
    @maggch97 你看 op 本来就在经营影响力了,推特啊周报啊群啊发发能触达到很多人
    kidlj
        22
    kidlj  
       2022-10-15 11:57:48 +08:00   1
    感谢作者,我个人很喜欢。
    darer
        23
    darer  
       2022-10-15 12:08:24 +08:00
    win 不打包一下吗
    tw93
        24
    tw93  
    OP
       2022-10-15 12:12:04 +08:00 via iPhone
    @darer 哈哈 有 windows 同学欢迎 fork
    Tink
        25
    Tink  
    PRO
       2022-10-15 12:18:17 +08:00
    好评,虽然是套壳应用,用起来可以
    kongkongye
        26
    kongkongye  
       2022-10-15 12:24:57 +08:00 via iPhone
    之前喜欢装 app ,现在反过来了,喜欢网页,因为 app 开多了扩展坞会很挤,并且 app 经常需要更新,然后打开加载竟然还没网页快,关闭 app 感觉也不如网页轻量
    TonyHoAspire
        27
    TonyHoAspire  
       2022-10-15 12:46:31 +08:00
    准备支持 Linux 吗?
    muhuan
        28
    muhuan  
       2022-10-15 13:16:08 +08:00
    支持一个
    2NUT
        29
    2NUT  
       2022-10-15 13:22:49 +08:00
    @oldshensheep #4 pwa 有什么问题么?
    DonaidTrump
        30
    DonaidTrump  
       2022-10-15 13:26:32 +08:00 via iPhone
    @kongkongye app 怎么能开到扩展坞里去?
    tw93
        31
    tw93  
    OP
       2022-10-15 13:29:18 +08:00 via iPhone
    @tulongtou 安装后打开就在了
    tw93
        32
    tw93  
    OP
       2022-10-15 13:30:19 +08:00 via iPhone
    @TonyHoAspire 可以去看看 tauri 的文档 直接 fork 实现
    tw93
        33
    tw93  
    OP
       2022-10-15 13:32:33 +08:00 via iPhone
    @2NUT 存在就是合理的,很多时候需要拿作品说话
    2NUT
        34
    2NUT  
       2022-10-15 13:33:34 +08:00   1
    @tw93 #33 我是 支持你的, 即使是形式上 一个是 cs 一个 bs ,在客户看来就是本质区别
    DonaidTrump
        35
    DonaidTrump  
       2022-10-15 13:35:06 +08:00 via iPhone
    @tw93 那电脑没有插扩展坞会怎样?会打不开么?
    tw93
        36
    tw93  
    OP
       2022-10-15 13:37:31 +08:00 via iPhone
    @2NUT 谢谢
    tw93
        37
    tw93  
    OP
       2022-10-15 13:38:46 +08:00 via iPhone
    @2NUT 哈哈 我的意思是你回复的那哥们喷是合理的,下次我标题和内容尽量注意 防止引起 argue
    Phishion
        38
    Phishion  
       2022-10-15 13:54:35 +08:00
    套不套壳选什么技术路线很重要么?我觉得还是满足用户需求最重要,只能说这个门槛比较低,容易被模仿,对用户来说倒是没差
    tw93
        39
    tw93  
    OP
       2022-10-15 13:56:50 +08:00 via iPhone   1
    @Phishion 赞同 首先需要满足需求 然后才是技术选择,有时候技术选择能帮助一定程度提高体验和开发效率
    blankmiss
        40
    blankmiss  
       2022-10-15 14:15:43 +08:00
    存在即合理是句误译来着
    icyalala
        41
    icyalala  
       2022-10-15 14:28:00 +08:00   4
    这什么扯淡 MacApp ,就一个 WebView 。。。
    同样的需求,我试了下拿 Xcode 拖个 WebView 加载 https://weread.qq.com ,两分钟就能做出你这个需求,打包出来 213 KB 。

    @2NUT 做 PWA 直接在浏览器里打开,点下安装就能出一个桌面 App 图标,压根就不需要你打包。
    tw93
        42
    tw93  
    OP
       2022-10-15 14:42:21 +08:00 via iPhone
    @icyalala 你 2min 搞好,贴出来看看是不是一样,嘴强王者不如实际操作,少于 5min 算我输,我这边可以半 min 打一个包
    yesterday17
        43
    yesterday17  
       2022-10-15 14:59:18 +08:00
    @tw93 Rust 项目半分钟就能打包完可能不是褒义(
    tw93
        44
    tw93  
    OP
       2022-10-15 15:01:11 +08:00 via iPhone
    @yesterday17 这不是留了一些 buffer 不
    callmesmc
        45
    callmesmc  
       2022-10-15 15:51:12 +08:00 via iPhone
    这个可以注入 css 不?
    sinnosong1
        46
    sinnosong1  
       2022-10-15 15:52:16 +08:00
    原来大家电脑上都没有浏览器啊
    tw93
        47
    tw93  
    OP
       2022-10-15 15:56:25 +08:00
    @callmesmc 可以的,这个里面就注入了一些,体验更好一些
    Desiree
        48
    Desiree  
       2022-10-15 15:57:14 +08:00
    存在即合理,楼上没必要一上来就喷的..
    tw93
        49
    tw93  
    OP
       2022-10-15 15:57:33 +08:00
    @sinnosong1 是的 我们这边只能用命令行拨号上网
    coderunI
        50
    coderunI  
       2022-10-15 16:15:35 +08:00
    这 star 是真的吗?
    owtotwo
        51
    owtotwo  
       2022-10-15 16:23:19 +08:00   1
    这 stars 数算得上另一种意义的 nb 了
    tw93
        52
    tw93  
    OP
       2022-10-15 16:33:10 +08:00
    @coderunI 假的,talk is cheap, show me the code
    systemcall
        53
    systemcall  
       2022-10-15 17:09:18 +08:00 via Android
    edge 不是可以直接把不是 pwa 的网页也作为应用安装吗?
    搞不懂你这有什么用
    magicdawn
        54
    magicdawn  
       2022-10-15 17:18:16 +08:00   1
    微信网页版并没有做 PWA, 发炎之前自己看一下啊
    jfdnet
        55
    jfdnet  
       2022-10-15 17:50:25 +08:00
    @oldshensheep 很多官方 pc 端也就是网页套壳,这有什么好酸的。
    sdd11
        56
    sdd11  
       2022-10-15 18:11:36 +08:00 via iPhone
    那这个在官网的基础上做了什么优化么?比如加一些快捷键之类的
    tw93
        57
    tw93  
    OP
       2022-10-15 18:13:43 +08:00
    @sdd11 其实网页基本快捷键都是需要支持的,包括沉浸式头、顶部可以拖动、还有样式兼容
    butanediol2d
        58
    butanediol2d  
       2022-10-15 18:17:00 +08:00
    OP 我觉得你做的东西没问题,主要是宣传上出了差错。

    把网页打包成 App 不是伪需求,而且恰恰相反,非常有市场,以至于直接在 Google 上搜索 “Turn any website into desktop Mac app” 已经有一大堆能批量生产、自定义转换网页的产品了。

    根据你的帖子正文来看,你并没有创造什么新东西,普通人包括非程序员只要会搜索就能达成一样的效果。

    所以大伙更关注的是是你这个打包出来的东西有没有什么特殊之处,比如楼上所说的快捷键,或者自定义 CSS 之类的功能。
    icyalala
        59
    icyalala  
       2022-10-15 18:19:29 +08:00   1
    @tw93 https://bitbucket.org/icyalala/mac_webivew/src/master/
    拖了个 WebView 改改配置,新增了 3 行代码去加载那个 URL ,两分钟。打包点 Archive 只要 5 秒。
    tw93
        60
    tw93  
    OP
       2022-10-15 18:22:38 +08:00
    @butanediol2d 中肯,懒了
    vvhy
        61
    vvhy  
       2022-10-15 18:24:30 +08:00
    @magicdawn #54 chrome 浏览器 ... > 更多 > 创建快捷方式 > 在窗口中打开,和 pwa 没什么区别,这个功能挺好用的
    huohei
        62
    huohei  
       2022-10-15 18:26:49 +08:00 via iPhone
    你说的对,但是在 chrome 里将一个网页作为应用安装只要 5s ,并且大小不到 1m
    tw93
        63
    tw93  
    OP
       2022-10-15 18:35:11 +08:00
    @butanediol2d 已经在附言中补充,谢谢提醒,回复如下

    ----


    ## 为了防止 ETC ,说明如下

    1. 这个东西只是一个玩具,不是用来赚钱的,关于你更喜欢 PWA 或者其他的打包方式完全没有问题,喜欢就好
    2. 花了半天搞的,所以只能说能用,或者有朋友想自己折腾折腾,fork 就能用,没有太多优化啥的,后面会持续优化优化,当时开源这种东西,不是甲乙方的关系,而是分享交流而已,V 站我觉得是国内程序员最好的社区,不然其实也不会来分享的。


    ## 关于这个工具的一些特征,说明如下
    - **小**:相比传统的 electron 套壳打包,大小要小数十倍,一般 2M 大小
    - **快**:Pake 的底层使用的 Rust Tauri 框架,性能体验较 JS 框架要轻快不少
    - **特**:不是单纯打包,实现了通用快捷键的透传、沉浸式的窗口、拖动、打包样式兼容
    - **玩**:只是一个玩具,或者说一个用 Rust 替代之前老思路的玩法,欢迎交流


    此贴不再回复,下楼吃螺蛳粉去~
    AA5DE3F034ACCB9E
        64
    AA5DE3F034ACCB9E  
       2022-10-15 18:35:15 +08:00
    程序员有必要自贱自己的行业吗?
    jchnxu
        65
    jchnxu  
       2022-10-16 00:22:09 +08:00
    这个是我的需求,浏览器 tab 太多找不到,我做了好几个套壳 app 了。lz 加油
    jianson2006
        66
    jianson2006  
       2022-10-16 00:56:13 +08:00
    @butanediol2d 中肯的回复,值得深思!
    lllllliiii
        67
    lllllliiii  
       2022-10-16 12:18:16 +08:00
    各位可以解下 https://github.com/tauri-apps/wry 。。
    masker
        68
    masker  
       2022-10-16 22:03:23 +08:00 via Android
    GitHub 的 trending ,有的 repo 也是没什么技术含量,也能有几千甚至上万 stars 的,不知道是刷的还是小白实在太多
    lixile
        69
    lixile  
       2022-10-17 11:38:55 +08:00
    我来说个场景吧
    pwa 的网页也作为应用 确实我在用
    但是浏览器崩溃的时候 所有应用会一起崩溃 这是最不想见到的
    所有 pwa 能有独立的生命周期 才是最好的 这就是应该比较典型的应用场景
    yihy8023
        70
    yihy8023  
       2022-10-17 15:41:34 +08:00
    感觉不错,给楼主赞一个。打开挺快,也很流畅
    linuxsteam
        71
    linuxsteam  
       2022-10-18 06:59:31 +08:00 via iPhone
    electron 还有 native api 呢 可不是光套壳
    A01514035
        72
    A01514035  
       2022-10-21 15:09:54 +08:00
    可不可以打包一个哔哩哔哩和抖音,看看你这个和官方的“客户端”,哪个更好用。
    chancat
        73
    chancat  
       2022-10-22 02:51:41 +08:00 via Android
    我特么看成了 1.8m 的微信。。。赶紧点进来了
    w7777777
        74
    w7777777  
       2023-05-09 09:13:07 +08:00
    @vvhy 666 学到了
    2NUT
        75
    2NUT  
       2023-09-09 00:38:00 +08:00
    @oldshensheep 现在看看更气人,1 万多 star 了,这个就是技术眼界。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3291 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 11:31 PVG 19:31 LAX 03:31 JFK 06:31
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86