timzaak / blog

8 stars 1 forks source link

多平台客户端开发 #98

Closed timzaak closed 1 year ago

timzaak commented 1 year ago

多平台客户端开发除了技术选型,就是多平台调试。跨平台编译无法保证在相应平台真能跑起来,尤其是调用了特定平台的专属库。此时就需要在该平台上跑起来,进行验证。

ARM 架构,树莓派/香橙派支持 Linux、Windows、FreeBSD。 可以买三个 SD 卡 + 1台派 来搞。 x86_64 架构,台式机/笔记本 + VirtualBox。

macOS 目前有 aarch64 和 x86_64 两个架构,这个我只能说买两台 mac mini 来解决。

CI/CD 发布 直接用 Github Actions 比较实在。 但是其目前只提供 x86_64 架构下的 Host, 其他的是通过 qmenu 虚拟化来搞,遇到麻烦的问题,可通过 tmate 远程过去进行 debug, 能提升不少解决问题的速度。

timzaak commented 1 year ago

跨平台编译脚本也是个问题。尤其是涉不同项目编译的时候。 zx 目前发现在 windows 平台下不够好。 目前想到的是 在 scala 上搞。但需要大量的封装。 Ammonite 是一个选择, 但整合度上有点差,还是用 os-lib , 在此基础上封装出 Session(主要是为了cd、pwd 和 指令 combine, 指令结果输出log)

但就是需要安装JVM,也不方便快速调试。 思来想去,还不如 Python + SSH 来的清爽。:cry: 我最终落地的方案是 Makefile 和 Bash 脚本, 这个 Linux/macOS 都支持, 至于 Windows,后面再说,大概率要写 PowerShell 。

timzaak commented 1 year ago

至于IDE, Visual Studio Code + Remote Develop 用来调试开发,主力开发还是 IDEA 全家桶用的比较爽。至于Xcode、Visual Studio 这种和操作系统深度绑定的,主要是通过支持多平台开发框架来尽量规避

timzaak commented 1 year ago

Github Action

Arm64 架构还不行,需要 self-hosted 还需要额外设置一些东西:

 export GITHUB_ACTIONS_RUNNER_TLS_NO_VERIFY=1

最终还是因为网络问题,放弃自建 Runner。先写好编译脚本,手动触发。

Github Action 发布了 Arm64 的 Mac runner