手把手教你搭建cydia私有源

手把手教你搭建cydia私有源

 出于两个目的想要把一些deb包打包做成私有源

  1. 万能的墙导致有时候下载别的源太慢或者必须要科学上网。
  2. 手机上装的deb包有时候,比如不小心手机重启了(虽然现在我还没遇到过),不完美越狱就比较尴尬了。因此尽可能是将手机上现在已经安装的所有的包导出然后制作成私有源,即使下次重启啥都没了重新安装也不用科学上网,也不用那么麻烦了。
     可能已经有其他平台或者软件能够解决以上问题了,但是本着学习和不断探索的精神,还是造一次轮子吧。

1. 打包deb

 发布越狱程序的时候需要打包deb包,然后自己上传到cydia源内就可以通过cydia来安装了。

1.1 配置文件

 创建一个目录 bundleid为名字的文件夹(比如com.echosdaddy.test),在 com.echosdaddy.test 目录下新建 DEBIAN 和 Applications 这两个目录,然后在 DEBIAN 下新建一个文本文件 control。

 control 文件就是打包用的配置文件,编辑文件如下:

Package: com.echosdaddy.test
Name: echosdaddy
Version: 0.1
Description: this is a description
Section: Jailbreak
Depends: firmware (>= 8.0)
Priority: optional
Architecture: iphoneos-arm
Author: echosdaddy
Homepage: https://lingo.bichonfrise.cn
Icon: file:///Applications/test.app/Icon.png
Maintainer: echosdaddy

 下面是注释说明,只是为了让大家明白各个配置都是干嘛的。

Package: com.echosdaddy.test // bundleid
Name: echosdaddy  // 软件名称
Version: 0.1 // 版本号
Description: this is a description  // 描述信息
Section: Jailbreak // 这里就对应的是源内全部软件下面的分类了,cydia会自动分类
Depends: firmware (>= 8.0) // 软件依赖以","分割,如果有版本要求可参考左侧例子
Priority: optional
Architecture: iphoneos-arm
Author: echosdaddy // 作者信息
Homepage: https://lingo.bichonfrise.cn // 作者主页,这里其实就可以做成像雷锋源那样做个导航
Icon: file:///Applications/test.app/Icon.png  // 软件图标,会在cydia中显示
Maintainer: echosdaddy //维护人,多个维护人以","分割

 找到你用 Xcode 编译的应用,复制到 Applications 目录,记得要把 .DS_Store 文件删除,不然可能安装不成功,使用 ls -al 查看文件确认一下。

1.2 打包

 到com.echosdaddy.test上面一级目录,然后执行打包命令:

dpkg-deb -b com.echosdaddy.test com.echosdaddy.test.deb

  dpkg-deb 是theos里面的一个程序,如果没设置环境变量,记得使用绝对路径或者相对路径都可以。

  如果你想解包别的deb咋弄呢?

dpkg -x a.deb a

  解包之后你就可以修改control文件啥的了。

2. 扫描打包上传

 到这里其实就已经有自己的deb包了,那如何做成cydia,能够自己在cydia中设置一下源就可以直接自己选择下载安装了呢?

 首先得自己制作cydia格式的包文件,包含以下几个文件:

  1. deb 包
  2. Packages文件
  3. Release文件
  4. 图标文件(可选)

 图标文件自己整个60*60的图标png格式放到Packages同级目录下即可,cydia会自动识别。名字必须是“CydiaIcon.png”

 接下来就是打包了把所有的deb都打包在一起:

dpkg-scanpackages *.deb > Packages

  Packages 文件际上就是 control 文件的一个集合,打开 Packages 查看一下格式:

Package: net.echosdaddy.test
Version: 0.1
Architecture: iphoneos-arm
Maintainer: EchosDaddy
Depends: grep, sed
Filename: /Users/bichonfrise/deb/com.sull.backtodeb_0.9b6-1_iphoneos-arm.deb
Size: 76352
MD5sum: 3666ea71c418c28db81b694b8768d14b
SHA1: 6e6899cdd2ba2b67529c474e0490ab145eb4fbf1
SHA256: 5b4489d419f3245e6d45fba4ac67c1dd55ca3b4b16784f12744f63b3c84edcdf
Section: EchosDaddy
Priority: optional
Homepage: https://bichonfrise.cn
Description: 这是一个EchosDaddy程序
Author: EchosDaddy
Name: 应用测试

  把你想打包的deb都放到当前目录下就行了。这样就可以生成一个Packages文件,接下来用bzip2压缩下就行了

bzip2 Packages

  最后写一个Release文件这一步就完事了,其实就是介绍一下自己的软件源。

Origin: EchosDaddy 软件源™
Label: EchosDaddy
Suite: stable
Version: 1.7
Codename: EchosDaddy
Architectures: iphoneos-arm
Components: main
Description: EchosDaddy 软件源

  然后上传到自己的webserver下或者空间下就行了,一共以下几类文件:

  1. deb包
  2. Packages.bz2
  3. Release
  4. 图标文件(可选)

  然后自己就可以通过cydia设置自己的源来使用了。

  • 这里需要自己有个webserver或者空间都可以,我看别人也有用git搞的,我不熟悉就不搞那个了。

我自己搞了一个可以参观下:http://lingo.bichonfrise.cn/cydia

3. cydia内跳转

 在看雷锋源的时候发现可以走webhtml跳转到cydia内包安装页面,咋做的呢?charles抓包看了下其实就是urlschema。自己设置bundleid就行了。记得这里只有用charles抓包手机请求才能看到,因为做了user-agent判断,当然自己重写user-agent也行。

<a href="cydia://package/com.abcydia.tone.nlch" target="_new">
  <img class="icon" src="icons/Ringtones.png" />
    <div>
      <div>
        <label>
          <p>逆流成河 - 金南玲  铃声</p>
        </label>
      </div>
    </div>
</a>

4. 可持续发展设想

  这里没啥说的,就是走平台化思路,两个思路:

  1. 开放给大家自己可以备份自己的源
  2. 大家可以自行发布自己的deb包,可以设置为收费或(免费+google adsence广告)模式。

最后的最后,欢迎大家与我多多交流,vx号:nicholas_mcc

参考资料:

【saurik教程】http://www.saurik.com/id/7

【打包deb】https://www.exchen.net/ios-hacker-将-app-打包成-deb-发布安装.html

【制作cydia源】https://www.exchen.net/ios-hacker-制作自己的-cydia-源.html

【图标相关】 https://www.cnblogs.com/mengshu-lbq/archive/2013/01/16/2862681.html

2 Likes

正好在找搭建cydia源的教程 :+1:

我自己在本地也有做一套加速源 但是由于核心依赖被新版cydia强制限制了apt.sbinger.com这套方案在特定的时候不得不使用zebra这样的软件源管理器来实现加速服务
原理非常简单,把所有的软件包版本号+.01
update.sh (3.8 KB)
这是目前使用的更新脚本,自动识别软件包状态并修改没有修改过的软件包来实现依赖劫持,让软件包管理器自动优先下载本地服务器上的软件

注意还有一点就是你的软件包文件名不要带“:”否则nginx在没特殊配置的情况下会挂掉

1 Like

很不错
已收藏