160

如何在没有 99 美元的 Apple 证书的情况下将 iPhone 应用程序从 Xcode 部署到真实的 iPhone 设备?

4

12 回答 12

92

我混合使用了两种方法:Jason'salex's。有了第二个,我们就有了能够调试的优势。我将主要复制以下两者(并简化亚历克斯):

2012 年 1 月更新:这仍然适用于 SDK 4.2.1 和 iOS 5.0.1 - 我刚刚在新的计算机和设备上进行了测试!


1. 创建自签名证书

修补您的 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,请重新启动它以使此更改生效。

如果您使用的是 iOS 5,就是这样!现在就试试!它可能不允许调试,但应用程序会在那里!

我对此感到非常惊讶,因为您应该知道,我不知道所有这些黑客行为的全部内容!正如我所指出的,我所做的只是稍微改进我在其他地方发现的东西。

所以,是的,整个方法不再以同样的方式工作,我懒得找一个新的……除了这个,它使用了一个名为 Theos 的工具,但我无法完成整个过程。

最后,如果您出于某种原因需要卸载它,请查看本文末尾。就我而言,我不得不这样做,因为我无法弄清楚为什么整个方法都停止工作了,而且我已经不在乎了,因为我们已经获得了等待已久的许可证。(该死的 DUNS 号码需要很长时间......)

.

.


.

.

.

2. 使 Xcode 能够在越狱设备上构建

  1. 在您越狱的 iPhone 上,通过添加源来安装应用程序AppSync ** http://repo.hackyouriphone.org **

  2. 删除代码签名和权利的 SDK 要求(我喜欢sed!):

    sudo /usr/bin/sed -i .bak '/_REQUIRED/N;s/YES/NO/' /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/SDKSettings.plist
    
  3. 注意部分iPhoneOS5.0.sdk。例如,如果您使用的是 iOS 4.2 SDK,只需相应地替换它:

    sudo /usr/bin/sed -i .bak '/_REQUIRED/N;s/YES/NO/' /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/SDKSettings.plist
    
  4. 通过修补 Xcode 结束需求删除。这意味着二进制编辑:

    cd /Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Plug-ins/iPhoneOS\ Build\ System\ Support.xcplugin/Contents/MacOS/
    dd if=iPhoneOS\ Build\ System\ Support of=working bs=500 count=255
    printf "\xc3\x26\x00\x00" >> working
    /bin/mv -n iPhoneOS\ Build\ System\ Support iPhoneOS\ Build\ System\ Support.original
    /bin/mv working iPhoneOS\ Build\ System\ Support
    chmod a+x iPhoneOS\ Build\ System\ Support
    

    如果您打开了 Xcode,请重新启动它以使此更改(以及最后一个更改)生效。

  5. 打开“项目>编辑项目设置”(从菜单中)。单击“构建”选项卡。在列表中找到“Code Signing Identity”及其子“Any iPhoneOS Device”,并将两者都设置为“Don't Code Sign”条目:

    替代文字

    在此之后,请随意撤消第 3 步。至少在我的情况下,一切正常。

  6. 使用我们定制的自签名证书将 Xcode 设置为代码签名(第一个操作方法)。如果您不想调试,可以跳过此步骤:

    mkdir /Developer/iphoneentitlements401
    cd /Developer/iphoneentitlements401
    curl -O http://www.alexwhittemore.com/iphone/gen_entitlements.txt
    mv gen_entitlements.txt gen_entitlements.py
    chmod 777 gen_entitlements.py
    

    插入你的 iPhone 并打开 Xcode。打开窗口>组织者。从左侧列表中选择设备,然后单击“用于开发”。系统将提示您登录配置网站,单击取消。它可以使合法的配置更容易,但不会使非法的不配置变得更加困难。

    现在你必须为你所做的每一个新项目做这最后一部分。转到菜单项目 > 新构建阶段 > 新运行脚本构建阶段。在窗口中,复制/粘贴:

    export CODESIGN_ALLOCATE=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate
    if [ "${PLATFORM_NAME}" == "iphoneos" ]; then
    /Developer/iphoneentitlements401/gen_entitlements.py "my.company.${PROJECT_NAME}" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent";
    codesign -f -s "iPhone Developer" --entitlements "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/"
    fi
    

.

.


.

.

卸载

第一部分:

sudo mv -f /Developer/Platforms/iPhoneOS.platform/Info.plist.bak /Developer/Platforms/iPhoneOS.platform/Info.plist

对于第二部分:

sudo mv -f /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/SDKSettings.plist.bak /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/SDKSettings.plist
sudo mv -f iPhoneOS\ Build\ System\ Support.original iPhoneOS\ Build\ System\ Support

如果您确实执行了第 3 步而不是第 2 步,只需相应地对其进行修改:

sudo mv -f /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/SDKSettings.plist.bak /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/SDKSettings.plist

剩下的,只是恢复你在 XCode 上所做的,/Developer/iphoneentitlements401/gen_entitlements.py如果你想删除:

sudo rm -f /Developer/iphoneentitlements401/gen_entitlements.py
于 2010-11-15T00:05:35.887 回答
56

听起来应用程序没有签名。从 Cydia 下载 ldid ,然后像这样使用它:ldid -S /Applications/AccelerometerGraph.app/AccelerometerGraph

还要确保二进制文件被标记为可执行文件:chmod +x /Applications/AccelerometerGraph.app/AccelerometerGraph

于 2008-10-30T23:48:56.320 回答
49

Xcode 7 之后的免费配置

为了在真实设备上测试您的应用程序而不是支付 Apple 开发人员费用(或越狱您的设备),您可以使用 Xcode 7 和 iOS 9 支持的新免费配置。

以下是或多或少从文档中采取的步骤(这非常好,所以请阅读):

1. 在 Xcode 中添加您的 Apple ID

转到 XCode > 首选项 > 帐户选项卡 > 添加按钮 (+) > 添加 Apple ID。请参阅文档以获取更多帮助。

在此处输入图像描述

2. 单击项目导航器中的常规选项卡

在此处输入图像描述

3. 从团队弹出菜单中选择您的 Apple ID。

在此处输入图像描述

4.连接您的设备并在方案菜单中选择它。

在此处输入图像描述

5. 单击修复问题按钮

在此处输入图像描述

如果您收到有关捆绑名称无效的错误,请将其更改为唯一名称。

6. 运行你的应用

在 Xcode 中,单击构建并运行按钮。

在此处输入图像描述

7. 在设备设置中信任应用开发者

运行您的应用程序后,您将收到一个安全错误,因为您要运行的应用程序不是来自 App Store。

在此处输入图像描述

在您的设备上,前往“设置”>“通用”>“个人资料”>“你的 Apple ID 名称” >“信任你的 Apple ID 名称” >“信任”。

8. 再次在您的设备上运行您的应用程序。

就是这样。您现在可以运行自己的(或您拥有源代码的任何其他应用程序),而无需花费 99 美元。谢谢你,Apple,终于允许这样做了。

于 2015-11-26T00:30:30.103 回答
9

如果您正在谈论使用官方 SDK 构建并直接从 xcode 部署的应用程序,则不能。

于 2008-10-29T23:29:06.687 回答
8

您必须越狱您的设备。

于 2008-10-29T11:08:09.540 回答
6

有一种无需支付苹果费用即可部署 iPhone 应用程序的方法 您必须越狱您的设备并按照http://www.alexwhittemore.com/?p=398中的说明进行操作

于 2010-09-11T17:28:03.637 回答
5

我在任何地方都没有看到任何迹象表明您可以在没有(付费)证书的情况下临时部署到真正的 iPhone。

于 2009-11-14T07:42:02.110 回答
4

我昨晚浏览了 Apple Developer,在配置证书中我发现了类似“签名团队成员”的内容。我认为有一种方法可以将团队成员添加到付费个人资料中。您可以要求 App Id Owner(付费)将您添加为团队成员。我不确定。仍在寻找。

于 2011-02-08T05:48:31.877 回答
3

不,这很容易做到。在 Xcode 中,将 Active Configuration 设置为 Release。将设备从模拟器更改为设备 - 任何 SDK。如果要直接导出到 iPhone,请将其连接到计算机。按构建并开始。如果您的 iPhone 未连接到计算机,则会出现一条消息,提示您的 iPhone 未连接。

如果这适用于您:(未连接 iPhone)

转到您的项目文件夹,然后转到里面的构建文件夹。转到 Release-iphoneos 文件夹,将应用程序放入其中,拖放到 iTunes 图标上。当您同步您的 iTouch 设备时,它会将其复制到您的设备。它还将作为 iPhone 应用程序出现在 iTunes 中。

希望这可以帮助!

PS:如果它说证书无效,只需单击 Xcode 中的项目,左侧​​文件堆栈中的小项目图标,然后按 Apple+I,或从菜单栏中执行 Get Info。单击顶部的构建。在 Code Signing 下,将 Code Signing Identity - Any iPhone OS Device 更改为 Don't Sign。

于 2009-05-15T00:46:18.483 回答
2

这实际上完全取决于您使用的 Xcode 版本,因为不同的版本使用不同的方法部署到您的 iPhone,而无需配置文件。

Xcode 3.2.1 是一个不错的版本,很容易整理,但是我们需要知道你使用的是什么版本。

于 2009-11-09T01:17:15.500 回答
2

Cawas 发布的解决方案也与 XCode4 完美配合。但是,IDE 的 UI 有一些变化,因此您需要进行一些研究才能找到 Run Script :)

在 Project Navigator 视图中单击项目的根项,然后在中间窗口中选择 Target,然后单击 Build Phases 选项卡,在底部您将看到 Add Build Phase 按钮​​,单击并选择 Add Run Script,然后粘贴“codesign “卡瓦斯发布的脚本。

于 2011-05-22T19:23:50.293 回答
1

没有解决方法。如果应用程序已在您的设备上注册,您只能临时部署应用程序。这会阻止您建立自己的应用商店。

于 2009-07-27T11:29:29.890 回答