找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 2813|回复: 0

越狱开发前后端之搭建简单Cydia源

[复制链接]

307

主题

228

回帖

7341

积分

用户组: 真·技术宅

UID
2
精华
76
威望
291 点
宅币
5591 个
贡献
253 次
宅之契约
0 份
在线时间
948 小时
注册时间
2014-1-25
发表于 2021-8-5 12:50:10 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有账号?立即注册→加入我们

×
本帖最后由 元始天尊 于 2021-8-6 12:44 编辑

为什么要搭建Cydia源

  如果你是越狱软件开发者开发了若干软件,并打算推广给人试用,那么最好有自己的源,这样对于客户比较方便。本节教程源码位于https://gitee.com/lich0/jailbroken_programming_lesson/tree/master/frontend2_cydia

搭建Cydia源

  环境和工具依赖: Mac系统,Theos,Python3,dpkg,gzip,bzip2,xz
  本例中笔者生成了一个最小化Theos工程nopdeb,此工程产生随机deb包,用于测试从源安装deb
  在目录下执行rebuild_source.sh,脚本自动编译deb包,并打包为源。成功后目录下会产生多个文件(Packages,Packages.bz2,Packages.gz,Packages.xz),并启动python的http服务器。

nopdeb结构

  nopdeb是笔者创建的最小的Theos工程,其目录结构为(是的你没看错,就2个文件):

layout/DEBIAN/control       描述待生成deb包的信息,包括作者,文件路径,依赖等
Makefile            用于打包
./rebuild_source.sh 
make: Entering directory '/private/tmp/jailbroken_programming_lesson/frontend2_cydia/nopdeb'
make: Entering directory '/private/tmp/jailbroken_programming_lesson/frontend2_cydia/nopdeb'
dd if=/dev/random of=layout/tmp/test bs=1m count=1
1+0 records in
1+0 records out
1048576 bytes transferred in 0.002648 secs (395970695 bytes/sec)
make: Leaving directory '/private/tmp/jailbroken_programming_lesson/frontend2_cydia/nopdeb'
make: Entering directory '/private/tmp/jailbroken_programming_lesson/frontend2_cydia/nopdeb'
dpkg-deb: 正在 './packages/nop_0.0.1-1+debug_iphoneos-arm.deb' 中构建软件包 'nop'。
make: Leaving directory '/private/tmp/jailbroken_programming_lesson/frontend2_cydia/nopdeb'
make: Leaving directory '/private/tmp/jailbroken_programming_lesson/frontend2_cydia/nopdeb'
dpkg-scanpackages: info: Wrote 1 entries to output Packages file.
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...

  手机打开cydia->软件源->编辑->添加->http://192.168.0.20(笔者Mac本IP地址),源很快就添加好了,如图所示   

添加源

  测试安装nopdeb,安装成功。如图所示   

安装deb
安装deb
安装deb
安装deb

  Cydia添加源时大致行为如下

发送HEAD请求,检测/Packages.xz是否存在 
发送HEAD请求,检测/Packages.gz是否存在  
发送HEAD请求,检测/Packages.bz2是否存在  
发送HEAD请求,检测/Packages.lzma是否存在  
发送HEAD请求,检测/Packages是否存在  
如果上述请求成功,则GET请求对应Packages(注1),从Pacakges获取软件列表并缓存
如果上述请求均不成功,则显示失败,源内空空如也
安装软件时,从Pacakges中提取软件的下载地址下载   

  从过程可以看出Cydia优先读取压缩格式的Packages,某些源的软件比较多时,Packages文件本身会达到十几到几十MB,因此支持压缩文件传输是很必要的      

  • 注1 这一步请求的特殊点是Cydia使用了路径前缀/.,而Sileo是正常的无此前缀。如果你的服务器不能正确处理/.前缀,那么添加源将会失败。下面列举一些笔者测试过的服务器
nginx 可用Cydia添加源
Python2+SimpleHTTPServer/Python3+http.server 可用Cydia添加源
tornado 可用Cydia添加源
github/github pages 可用Cydia添加源(很多人把github作为免费源了,就是国内访问速度巨卡)
gitee 不可用Cydia添加源,且文件大小限制为1M(所以你们会看到很多人写教程都是github搭建源,没听说过用gitee搭建源的吧,gitee搭建的只能给Sileo用)
七牛对象存储 不可用Cydia添加源
其他的留给读者自己去测了

  Tips 源里找不到某软件有以下几种可能

  • 手机中已经安装的软件版本高于源中的版本,因此Cydia不显示该软件.
  • 手机中其他源的软件版本高于当前源中的版本,因此Cydia不显示该软件.
  • 源服务器故障,所有软件均不显示

  

// 添加源
192.168.0.221 - - [05/Aug/2021 12:20:04] "HEAD /Packages.xz HTTP/1.1" 200 -
192.168.0.221 - - [05/Aug/2021 12:20:04] "HEAD /Packages.gz HTTP/1.1" 200 -
192.168.0.221 - - [05/Aug/2021 12:20:04] "HEAD /Packages.bz2 HTTP/1.1" 200 -
192.168.0.221 - - [05/Aug/2021 12:20:07] code 404, message File not found
192.168.0.221 - - [05/Aug/2021 12:20:07] "GET /./InRelease HTTP/1.1" 404 -
192.168.0.221 - - [05/Aug/2021 12:20:07] code 404, message File not found
192.168.0.221 - - [05/Aug/2021 12:20:07] "GET /./Release HTTP/1.1" 404 -
192.168.0.221 - - [05/Aug/2021 12:20:07] "GET /./Packages.xz HTTP/1.1" 304 -
192.168.0.221 - - [05/Aug/2021 12:20:22] code 404, message File not found
192.168.0.221 - - [05/Aug/2021 12:20:22] "GET /./CydiaIcon.png HTTP/1.1" 404 -
// 安装deb
192.168.0.221 - - [05/Aug/2021 12:21:32] code 404, message File not found
192.168.0.221 - - [05/Aug/2021 12:21:32] "GET /CydiaIcon.png HTTP/1.1" 404 -
192.168.0.221 - - [05/Aug/2021 12:21:36] "GET /deb/nop_0.0.1-1%2bdebug_iphoneos-arm.deb HTTP/1.1" 200 -

扩展Cydia源

  如果用户较多,并且服务器的流量带宽有限,那么建议对Cydia源进行扩展。步骤如下   

  • 将deb存放在文件服务器(如网盘)/对象存储(七牛),关键点是可以直接拿到文件的可下载URL
  • 服务器配置成对deb/前缀的访问进行301/302跳转到真实下载地址。

回复

使用道具 举报

QQ|Archiver|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图

GMT+8, 2024-4-24 08:50 , Processed in 0.037024 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表