201

如果我在我的 Mac 上创建一个应用程序,有什么方法可以让它在 iPhone 上运行而无需通过应用商店?

iPhone是否必须越狱并不重要,只要我仍然可以运行使用官方SDK创建的应用程序即可。由于我不会进入的原因,我不能让这个程序通过应用商店。

4

9 回答 9

187

官方开发者计划

对于标准 iPhone,您需要每年支付 99 美元才能成为开发者计划的成员。然后,您可以使用 adhoc 系统将您的应用程序安装到多达 100 台设备上。开发人员程序有详细信息,但它涉及将每个设备的 UUID 添加到您的应用程序包中。使用App Store 提供的Ad Hoc Helper可以最轻松地检索 UUID 。有关此方法的更多详细信息,请参阅 Craig Hockenberry在 iPhone 2.0 上的 Beta 测试文章

越狱的 iPhone

对于越狱的 iPhone,您可以使用我在 iPhone OS 3.0 上使用AccelerometerGraph示例应用程序亲自测试过的以下方法。

创建自签名证书

首先,您需要创建一个自签名证书并修补您的 iPhone SDK 以允许使用此证书:

  1. 启动 Keychain Access.app。在未选择任何项目的情况下,从 Keychain 菜单中选择 Certificate Assistant,然后选择 Create a Certificate。

    名称:iPhone 开发人员
    证书类型:代码签名
    让我覆盖默认值:是

  2. 点击继续

    有效期:3650天

  3. 点击继续

  4. 空白的电子邮件地址字段。

  5. 单击继续直到完成。

    您应该看到“此根证书不受信任”。这是意料之中的。

  6. 设置 iPhone SDK 以允许使用自签名证书:

    sudo /usr/bin/sed -i .bak 's/XCiPhoneOSCodeSignContext/XCCodeSignContext/' /Developer/Platforms/iPhoneOS.platform/Info.plist

    如果您打开了 Xcode,请重新启动它以使此更改生效。

通过 WiFi 手动部署

以下步骤需要先安装openssh, 和。uikittools替换jasoniphone.local为目标设备的主机名。安装 SSH 后,请务必在mobile和用户上设置您自己的密码。root

在手机上手动编译和安装你的应用程序作为系统应用程序(绕过苹果的安装系统):

  1. 项目、设置活动 SDK、设备和设置活动构建配置、发布。

  2. 正常编译您的项目(使用 Build,而不是 Build & Go)。

  3. build/Release-iphoneos目录中,您将拥有一个应用程序包。使用您的首选方法将其传输到设备上的 /Applications。

    scp -r AccelerometerGraph.app root@jasoniphone:/Applications/

  4. 让 SpringBoard 知道新应用程序已安装:

    ssh mobile@jasoniphone.local uicache

    只有在添加或删除应用程序时才需要这样做。更新的应用程序只需要重新启动。

为了在开发过程中让自己的生活更轻松,您可以设置 SSH 密钥身份验证并将这些额外步骤添加为项目中的自定义构建步骤。

请注意,如果您希望稍后删除应用程序,则无法通过标准 SpringBoard 接口执行此操作,您需要使用 SSH 并更新 SpringBoard:

ssh root@jasoniphone.local rm -r /Applications/AccelerometerGraph.app &&
ssh mobile@jasoniphone.local uicache
于 2008-09-01T06:21:23.133 回答
18

是的,一旦您加入了 iPhone 开发者计划并支付了 Apple 99 美元,您就可以在多达 100 台 iOS 设备上配置您的应用程序。

于 2008-09-01T05:16:40.170 回答
13
  • 构建您的应用
  • 上传到破解站点
  • (如果你的应用足够好)破解版将在几分钟后发布,供大家下载;-)
于 2010-04-20T01:31:52.250 回答
8

在这篇文章的帮助下,我制作了一个脚本,该脚本将通过 Installous 应用程序安装以进行快速部署:

# compress application.
/bin/mkdir -p $CONFIGURATION_BUILD_DIR/Payload
/bin/cp -R $CONFIGURATION_BUILD_DIR/MyApp.app $CONFIGURATION_BUILD_DIR/Payload
/bin/cp iTunesCrap/logo_itunes.png $CONFIGURATION_BUILD_DIR/iTunesArtwork
/bin/cp iTunesCrap/iTunesMetadata.plist $CONFIGURATION_BUILD_DIR/iTunesMetadata.plist

cd $CONFIGURATION_BUILD_DIR

# zip up the HelloWorld directory

/usr/bin/zip -r MyApp.ipa Payload iTunesArtwork iTunesMetadata.plist

上面引用的帖子中缺少的是 iTunesMetadata。没有这个,Installous 将无法正确安装应用程序。以下是 iTunes 元数据的示例:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>appleId</key>
    <string></string>
    <key>artistId</key>
    <integer>0</integer>
    <key>artistName</key>
    <string>MYCOMPANY</string>
    <key>buy-only</key>
    <true/>
    <key>buyParams</key>
    <string></string>
    <key>copyright</key>
    <string></string>
    <key>drmVersionNumber</key>
    <integer>0</integer>
    <key>fileExtension</key>
    <string>.app</string>
    <key>genre</key>
    <string></string>
    <key>genreId</key>
    <integer>0</integer>
    <key>itemId</key>
    <integer>0</integer>
    <key>itemName</key>
    <string>MYAPP</string>
    <key>kind</key>
    <string>software</string>
    <key>playlistArtistName</key>
    <string>MYCOMPANY</string>
    <key>playlistName</key>
    <string>MYAPP</string>
    <key>price</key>
    <integer>0</integer>
    <key>priceDisplay</key>
    <string>nil</string>
    <key>rating</key>
    <dict>
        <key>content</key>
        <string></string>
        <key>label</key>
        <string>4+</string>
        <key>rank</key>
        <integer>100</integer>
        <key>system</key>
        <string>itunes-games</string>
    </dict>
    <key>releaseDate</key>
    <string>Sunday, December 12, 2010</string>
    <key>s</key>
    <integer>143441</integer>
    <key>softwareIcon57x57URL</key>
    <string></string>
    <key>softwareIconNeedsShine</key>
    <false/>
    <key>softwareSupportedDeviceIds</key>
    <array>
        <integer>1</integer>
    </array>
    <key>softwareVersionBundleId</key>
    <string>com.mycompany.myapp</string>
    <key>softwareVersionExternalIdentifier</key>
    <integer>0</integer>
    <key>softwareVersionExternalIdentifiers</key>
    <array>
        <integer>1466803</integer>
        <integer>1529132</integer>
        <integer>1602608</integer>
        <integer>1651681</integer>
        <integer>1750461</integer>
        <integer>1930253</integer>
        <integer>1961532</integer>
        <integer>1973932</integer>
        <integer>2026202</integer>
        <integer>2526384</integer>
        <integer>2641622</integer>
        <integer>2703653</integer>
    </array>
    <key>vendorId</key>
    <integer>0</integer>
    <key>versionRestrictions</key>
    <integer>0</integer>
</dict>
</plist>

显然,将 MyApp 的所有实例替换为您的应用程序名称,并将 MyCompany 替换为您的公司名称。

基本上,这将安装在任何安装了 Installous 的越狱设备上。设置完成后,部署速度非常快,因为它可以从任何地方安装,只需将其上传到您公司的网站,然后将文件直接下载到设备上,然后复制/移动到~/Documents/Installous/Downloads.

于 2010-12-12T20:41:12.240 回答
7

随着即将推出的 Xcode 7,现在可以在没有苹果开发者许可证的情况下在您的设备上安装应用程序,因此现在可以跳过应用程序商店并且您不必越狱您的设备。

现在每个人都可以在他们的 Apple 设备上获取他们的应用程序。

Xcode 7 和 Swift 现在让每个人都可以更轻松地构建应用程序并直接在他们的 Apple 设备上运行它们。只需使用您的 Apple ID 登录,然后将您的想法变成可以在 iPad、iPhone 或 Apple Watch 上触摸的应用程序。立即下载 Xcode 7 测试版并亲自试用。不需要计划成员资格。

引用自:https ://developer.apple.com/xcode/

更新:

XCode 7 现已发布:

免费的设备上开发 现在每个人都可以在设备上免费运行和测试自己的应用程序。您可以在 Mac、iPhone、iPad、iPod touch 或 Apple Watch 上运行和调试自己的作品,无需任何费用,也无需加入任何程序。您需要做的就是在 Xcode 中输入您的免费 Apple ID。您甚至可以使用已用于 App Store 或 iTunes 的同一 Apple ID。一旦你完善了你的应用程序,Apple 开发者计划可以帮助你在 App Store 上下载它。

有关在设备上安装和运行的详细信息,请参阅在设备上启动您的应用程序。

于 2015-08-25T12:50:14.500 回答
4

值得注意的是,如果你走越狱路线,iPhone OS 更新有可能(可能?)会扼杀你运行这些应用程序的能力。我会走官方路线并支付 99 美元以获得授权。除了不必担心您的应用程序被破坏之外,您还有机会(如果您选择)在商店中发布您的应用程序。

于 2008-11-20T13:02:38.180 回答
2

按照@Jason Weathered 描述的方式将应用程序复制到iPhone 后,请确保应用程序的“chmod +x”,否则将无法运行。

于 2011-07-22T06:39:31.833 回答
1

*更改/注意事项使其适用于Xcode 3.2.1iPhone SDK 3.1.2

通过 WiFi 手动部署

2)修改Info.plist后一定要重启Xcode

3)找不到“uicache”命令,使用 killall -HUP SpringBoard 对我来说效果很好。

除此之外,我可以确认这可以正常工作。

Mac 用户,使用 PwnageTool 3.1.4 非常适合越狱(DL via torrent)。

于 2010-01-05T22:42:58.037 回答
1

如果您修补/Developer/Platforms/iPhoneOS.platform/Info.plist然后尝试使用来自 Apple 的真实开发配置文件来调试在设备上运行的应用程序,它可能无法正常工作。症状是奇怪的错误消息,com.apple.debugserver在 Xcode 中构建时,您可以使用任何包标识符而不会出错。解决办法是恢复Info.plist

于 2010-04-20T01:19:43.917 回答