【问题标题】:How to build & deploy tweaks to Cydia on Jailbroken iOS devices?如何在越狱的 iOS 设备上构建和部署对 Cydia 的调整?
【发布时间】:2016-07-15 08:11:13
【问题描述】:

如何创建Cydia 应用程序以及如何将应用程序部署到Cydia App 商店? 我熟悉Objective-C,开发cydia Apps会容易吗? 如何在设备上安装cydia Apps

【问题讨论】:

    标签: app-store jailbreak cydia


    【解决方案1】:

    对于那些在 2021 年提出这个问题的人:

    为 Cydia 构建应用程序与为 App Store 构建应用程序相同。您可以使用 Xcode,制作您的应用程序,然后将其打包到 .deb 文件中。

    可能 OP 想问的是如何进行调整。这需要:

    • 正确理解 Objective-C 和 iOS 框架作为调整可以大量挂钩到预先存在的 iOS 模块以修改其行为。
    • Theos(它是一个在越狱设备和 macOS 上都可用的平台,可以编译调整)。
    • 回购。

    Cydia(以及现在的 Zebra、Sileo、Installer 5 等)遵循标准的 Debian 软件包格式。因此,一旦你为你的调整编译了Mach-O 二进制文件,你需要将它打包到一个DEB 文件中,其中包含一个描述调整的control 文件。

    Cydia Tweak DEB 控制文件如下所示:

    Package: com.geosn0w.iSecureOS
    Name: iSecureOS
    Depends: firmware (>= 11.0)
    Version: 1.17
    Architecture: iphoneos-arm
    Description: An iOS Security Application for Jailbroken units.
    Maintainer: GeoSn0w (@FCE365)
    Author: GeoSn0w (@FCE365)
    Section: Utilities
    Icon: https://isecureos.idevicecentral.com/repo/Files/iSecureOS/iSecureOS.png
    Depiction: https://isecureos.idevicecentral.com/repo/Files/iSecureOS/iSecureOS.html
    SileoDepiction: https://isecureos.idevicecentral.com/repo/sileo/isecureos.json
    

    这是我的一个调整中的一个活生生的例子。建议在文件中填充所有字段。这些将在安装调整时由 Cydia 解析。

    除此之外,您的 DEBIAN 文件夹可以包含一个 postinst 文件供您进行调整。这将在安装后立即运行脚本或更多脚本。如果您需要在系统上设置任何内容,例如权限、文件夹、来自网络的资源等等,请执行此操作。

    postinst 文件示例:

    #!/bin/bash
    echo GeoSn0w is preparing the File System... 
    chown root:wheel /Applications/iSecureOS.app/iSecureOS
    chmod 6755 /Applications/iSecureOS.app/iSecureOS
    
    echo Successfully prepared File System.
    

    在这种情况下,我在文件系统上给了调整适当的权限,否则我的调整将无法在启动时获得 root 权限,它需要它们。

    并非所有调整都需要postinst 脚本。

    关于如何构建这些调整,iPhone Dev Wiki 有一篇很棒的文章介绍了如何开始。

    通常情况下,您将有一个 .xm 文件用于您的调整,如下所示:

    %hook SBApplicationIcon
    
    -(void)launch{
            UIAlertView* __launchView = [[[UIAlertView alloc] init] autorelease];
            __launchView.title = @"Hello";
            __launchView.message = @"This is an allert";
            [__launchView addButtonWithTitle:@"Dismiss"];
            [__launchView show];
    }
    
    %end
    

    %hook 告诉tweak 在哪里注入自己,%end 标志着tweak 的结束。在这两者之间,您可以添加您的方法和代码来覆盖 iOS 方法的默认行为。请参阅以下文档,因为该主题相当大且复杂。

    要回答一个常见问题,不,你现在不能用 Swift 编写越狱调整。仅在 Objective-C 中。

    文档:

    1. https://iky1e.tumblr.com/post/9561218739/jailbroken-development-starter-pack
    2. https://iphonedev.wiki/index.php/Getting_Started#Prototyping_a_tweak
    3. https://iphonedev.wiki/index.php/Best_Practices

    【讨论】:

      【解决方案2】:

      为了开发 Cydia 的调整(或者只是针对一般的越狱设备),您需要在 Mac、Windows、Linux 甚至设备本身上安装 Theos。有关所有详细信息,请参阅this 页面。

      【讨论】:

        【解决方案3】:

        Theos 最初是“iphone-framework”,该项目旨在简化 iOS 设备(主要是越狱设备)的命令行构建代码。后来它经历了重大变化并成为 Theos,这是一个灵活的基于 Make 的构建系统,主要用于越狱软件开发,但也完全支持构建其他支持的平台。 Theos 可以在 macOS、iOS、Linux 和 Windows(在 Cygwin 或 Linux 的 Windows 子系统下)运行并且可以构建项目。

        URL for Installation

        【讨论】:

          【解决方案4】:

          首先,您需要一个越狱设备。 此外,您将需要拥有许多 ios 设备或拥有它们的朋友,因为如果您真的想这样做,并且您的第一个 cydia 是一个应用程序,它会崩溃并搞砸一切。作为开发人员,您可能看起来不太好。其次不这样做会很容易,因为苹果不希望你这样做,所以甚至在你的第一个应用程序完成之前,你可能需要几个月或几年的时间。至于部署它们,你需要从源安装并且不能只需将它们放在“Cydia Appstore”中即可。

          【讨论】:

          • 不,不一定。有不需要越狱的 Theos-Jailed。 Theos 也可以在 macOS 上运行,无需越狱。
          猜你喜欢
          • 2011-05-16
          • 1970-01-01
          • 2016-01-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-01-24
          • 2016-09-19
          相关资源
          最近更新 更多