修复 ShadowsocksX GFWList 更新提示 404 错误的问题

ShadowsocksX 已经有好长一段时间没有更新了。但是在 Mac 上,还是它的使用效果最好,同时配合 GFWList 一起使用,堪称完美。然而由于太久没更新,且 gfwlist.txt 是 hard code 在代码里面的,所以升级 GFWList 会报 404 错误。主要是因为原来的 GFWList 托管在 Google Code 上,现在托管在 GitHub 上。

先 fork 一份带代码,再 clone 一份最(lao)新(jiu)的代码到本地。二话不说,直接上 Xcode 编译,结果必须直接出错。Google 一番后,发现原来 Target 的版本是 10.7,AFNetworking 的一些特性不支持,将 Target 调整为 10.8 解决第一个问题。

继续编译,必须还有问题,这次提示找不到 libsodium,上网又胡乱 Google 了一圈,发现大多的解决方案都是 npm 安装 pod 解决。其实自己编译也没那么麻烦,去 libsodium 仓库扒一个最新的 release 代码回来,进入目录,运行 dist-build/osx.sh 就好了。运行后会在当前目录生成一个叫 libsodium-osx 的目录,把它整个复制到 Shadowsocks 项目目录里面,修改 Scheme,添加 include searh path,再把 libsodium.a 拖入 link lib 就解决了。

好,继续编译,这次说是没有证书什么的,这个无所谓了,去 build setting,将 code sign 部分全部修改为 don’t sign,编译通过,可以正常运行了。接下来进入正题,修改 ShadowsocksX/SWBAppDelegate.m 文件,用新地址替换旧地址:

1
[manager GET:@"https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {

重新编译文件,验证没有问题,GFWList 也可以正常更新了。最后签个名,省得整天有烦人的提醒,再打个包,方便日后使用(其实主要是@龙七同学说我们都是讲究人,不能太随便了,得neng个dmg 😂)。

最后来个快速传送门,给懒得折腾,不会折腾和没有开发者账号无法折腾的小伙伴们:

https://github.com/TommyLau/shadowsocks-iOS/releases/download/2.6.3-GFWList/ShadowsocksX-2.6.3-GFWList.dmg