如何将iPhone应用程序从Xcode部署到真实的iPhone设备?


157

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


看到这个问题的答案,我之前曾问过这个问题,它提供了一个很好的指南,说明如何将其放在越狱的iPhone上。
丹·沃克


2
Xcode 7现在具有免费配置,因此无需注册Apple开发者帐户即可在真实设备上测试应用程序。有关更多详细信息,请参见此答案
Suragch 2015年

Answers:


56

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

另外,请确保将二进制文件标记为可执行文件: chmod +x /Applications/AccelerometerGraph.app/AccelerometerGraph


3
是的,您需要将设备越狱才能使用此方法。(显然)
esqew

如何启动命令ldid -S ...?您是否需要SSH控制台?有没有免费的方法可以在越狱的iPhone上获取SSH客户端?
丹·里胡

tanderson:Cydia中有一个ldid软件包,您可以为OS X编译一个软件包
rpetrich 2011年

rpetrich我相信他的问题是如何键入和使用命令,而不是如何获取软件包。@tanderson,您可以通过Open SSH(然后从桌面连接到电话)或iPhone本身中的终端。这两个应用程序都可以从Cydia免费下载。使用SSH的好处是,您还可以使用它简单地将应用程序复制到手机中。如果您经常这样做,请确保检查其他答案-您可以使XCode替您完成所有工作,但这是一个麻烦的过程来欺骗它。
cregox

92

我混合使用了两种方法:Jasonalex。在第二个方面,我们具有能够调试的优势。我将主要只复制以下内容(并简化alex的内容):

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


1.创建自签名证书

修补您的iPhone SDK,以允许使用此证书:

  1. 启动Keychain Access.app。在未选择任何项目的情况下,从“钥匙串”菜单中选择“证书助手”,然后选择“创建证书”。

    • 名称: 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上,通过添加源** http://repo.hackyouriphone.org ** 安装应用程序AppSync

  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. 打开“项目>编辑项目设置”(从菜单中)。单击“构建”选项卡。在列表中找到“代码签名身份”及其子代“任何iPhoneOS设备”,并将两者都设置为条目“ Do n'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

按照这些说明进行了尝试,但是现在“方案”的类型为My Mac 64位,并且我再也没有运行模拟器或真实iPhone的选择,因此我什至无法测试代码。我使用的是SDK 4.3,不确定是否重要
nosatalian 2011年

1
实际上,进行更新:在将项目设置中的基本SDK从iphoneos更改为iOS 4.3之后,一切正常。尽管xcode提示“启动远程程序时出错:无法完成任务处理”,但我可以通过单击启动该应用程序。
nosatalian

1
我收到此错误:The identity used to sign the executable is no longer valid. ... (0xE8008018) 即使我将3650天过期。手机本身似乎正在检查。
斯蒂芬,

这个“修补XCode”技巧是否在4.3.2上有效,还是会制止它
Gabor 2012年

1
第6点。在我的情况下,我必须更改/Developer/iphoneentitlements401/gen_entitlements.py文件的权限才能让普通用户执行它。有了这个程序完美地工作。
abidibo 2012年

43

Xcode 7之后的免费配置

为了在真实设备上测试您的应用程序而不是支付Apple Developer费用(或越狱您的设备),您可以使用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,终于允许这样做了。


1
非常感谢。如果没有付费的Apple开发人员许可,则可以完美运行。
kishorer747

但是,这确实存在一些问题-您一次最多只能安装3个应用,并且您需要每周更新证书。
SilverWolf-恢复莫妮卡

@seaturtle,感谢您的更新。我最终花了钱来获得开发者许可证,所以我没有及时了解这个答案。限制太糟糕了。关于Android的某些事情要比Apple好得多。
Suragch

9

如果您要谈论的是使用官方SDK构建并直接从xcode进行部署的应用程序,那您就可以。


8

您必须越狱设备。


1
遵循@rpetrich的方法,并将可执行文件SSH到设备的/ Applications文件夹中,它在重新启动/重新启动后应该可以工作。
esqew


5

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


4

昨晚我正在查看Apple Developer,在Provisioning Certificate中,我发现了类似“签署团队成员”之类的东西。我认为有一种方法可以将团队成员添加到付费个人资料中。您只需向应用ID所有者(已付费)要求,即可将您添加为团队成员。我不确定。仍在搜索。


是的,您可以添加团队成员。每年限制使用200台设备。
cregox 2011年

Cawas-您知道如何向您的Apple ID添加成员吗?
阿克瑟伊,

如果您在名称前加上@,我们只会收到通知。正如您自己说的,您必须先获得一个付款帐户。然后,它应该真的很简单,因为我找不到有关该方法的任何教程。我从来没有自己做过。
cregox 2011年

3

不,这很容易做到。在Xcode中,将“活动配置”设置为“发布”。将设备从Simulator更改为Device-无论是哪种SDK。如果要直接导出到iPhone,请将其连接到计算机。按Build and Go。如果您的iPhone未连接到计算机,则会出现一条消息,指出您的iPhone未连接。

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

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

希望这可以帮助!

PS:如果它说明证书无效,请单击Xco​​de中的项目,在文件堆栈左侧的小项目图标上,然后按Apple + I,或从菜单栏中执行获取信息。单击顶部的构建。在“代码签名”下,将“代码签名身份-任何iPhone OS设备”更改为“不签名”。


7
OP没有签名证书或供应配置文件。这些说明适用于价格为$ 99的iPhone开发人员计划成员,但未解决如何在未注册该程序的情况下在设备上运行的问题。
cdespinosa

2

这实际上取决于您所使用的Xcode版本,因为不同的版本使用不同的方法将不同的方法部署到您的iPhone中而没有配置概要文件。

Xcode 3.2.1是一个很好的版本,易于整理,但是我们需要知道您使用的是哪个版本。


2

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

在“项目浏览器”视图中,单击项目的根项,然后在中间窗口中选择“目标”,然后单击“构建阶段”选项卡,在底部,您将看到“添加构建阶段”按钮,单击并选择“添加运行脚本”,然后粘贴“ codesign ”由Cawas发布的脚本。


1

没有解决方法。如果设备中注册了临时部署的应用程序,则只能进行临时部署。这样可以防止您建立自己的应用商店。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.