最开始想在iSH上面跑, 结果发展的越来越好
1. 解决编译问题
本来是直接复制了一份然后魔改,但是develop分支变化速度太快,所以我换了一个思路:
- 用submodule track upstream更改
- 编写shim header来实现缺少的宏、函数等
- 用脚本批量替换一些宏没法兼容的东西:比如Windows下的宽字符串L“”需要转成ANSI的
- override main入口函数的文件来整体重写
2. 解决WiFi Sync
Wifi Sync两个组成部分:
- AltServer广播”_altserver._tcp”的mDNS TXT记录,然后让AltStore来链接
- AltServer通过usbmuxd来使用WiFi连接设备进行操作
- 广播:
- 要广播mDNS就必须要用avahi
- 要用avahi就必须要动态链接avahi或者他的各种compact库
- musl又不能静态连接的同时去动态链接
- 因此就必须通过另一个小程序来进行广播
- 我使用了Python+ctypes使用avahi的libdnssd compact
- WiFi usbmuxd:
- 通过netmuxd实现
3. 解决AnisetteData
- 之前AnisetteData通过白嫖Sideloadly的服务来获取,但导致用户出现大量-36607错误
- 需要自己搭建server
- Anisette的获取渠道只有iCloud比较方便
- macOS iCloud 有人写了,但是不好部署
- Windows的iCloud可以在Wine中安装,可以搞
- 方案:
- Wine中运行iCloud
- 需要至少登录一次后,才能正常提取AnisetteData
- 学习了AHK,编写了个简单脚本
- 将AltServer的Anisette部分代码提出来,成一个单独的小程序
- 写一个简单服务器,但需要在Wine环境里运行,负责调用小程序,并输出JSON
- Python多线程支持差、C++太难写
- 只剩NodeJS比较适合
- 编写后使用nexe打包成独立exe直接运行
- 封装成Docker