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

时间:2008-10-29 11:06:18

标签: ios xcode deployment certificate

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

11 个答案:

答案 0 :(得分:91)

我使用了两个混音:Jason'salex's。第二,我们有能力调试的优势。我大部分时间都只是复制下面的内容(并简化alex'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,请重新启动它以使此更改生效。

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

    我对此感到非常惊讶,因为you should know,我不知道所有这些黑客的全部内容!正如我指出的那样,我所做的只是改进了我在其他地方发现的一点点。

    所以是的,整个方法不再以同样的方式工作了,我无法找到一个新的...除了{{3}但我无法完成整个过程。

    最后,如果您因任何原因需要卸载,请查看此帖子的结尾。在我的情况下,我不得不因为我无法弄清楚为什么所有蓝色这整个方法都停止工作,我不能再关心了,因为我们已经获得了漫长的等待许可。 (FUNING DUNS号码需要很长时间......)


    2。启用Xcode以在Jailbroken设备上构建

    1. 在越狱的iPhone上,通过添加来源** [{3}} **

    2. 来安装应用 AppSync
    3. 删除代码签名和权利的SDK要求(我很喜欢this, which uses a tool called Theos!):

      sudo /usr/bin/sed -i .bak '/_REQUIRED/N;s/YES/NO/' /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/SDKSettings.plist
      
    4. 注意 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
      
    5. 通过修补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,请重新启动此更改(以及最后一次)以使其生效。

    6. 打开“项目>编辑项目设置”(从菜单中)。单击“Build”选项卡。 在列表中找到“代码签名身份”及其子“任何iPhoneOS设备”,并将其设置为条目 “不要代码签名“

      alt text

      在此之后可以随意撤消第3步。至少在我的情况下它很顺利。

    7. 使用我们自定义的自签名证书(第一个操作方法)将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。打开窗口>管理器。从左侧列表中选择设备,然后单击“用于开发”。系统将提示您输入配置网站,单击“取消”。它可以使合法的配置更容易,但不会使非法的配置变得更加困难。

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

      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
      

    8. 卸载

      第一部分:

      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
      

答案 1 :(得分:56)

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

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

答案 2 :(得分:42)

Xcode 7后的免费配置

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

以下是the documentation或多或少采取的步骤(非常好,请仔细阅读):

<强> 1。在Xcode中添加Apple ID

转到XCode&gt;偏好&gt;帐户标签&gt;添加按钮(+)&gt;添加Apple ID。有关更多帮助,请参阅the docs

enter image description here

<强> 2。单击“项目导航器”中的“常规”选项卡

enter image description here

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

enter image description here

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

enter image description here

<强> 5。单击“修复问题”按钮

enter image description here

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

<强> 6。运行您的应用

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

enter image description here

<强> 7。在设备设置中信任应用开发者

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

enter image description here

设备上,转到设置&gt;一般&gt;个人资料&gt; 你的Apple-ID-name &gt;信任你的Apple-ID-name &gt;信任。

<强> 8。再次在您的设备上运行您的应用。

就是这样。您现在可以运行自己的(或任何其他具有源代码的应用程序),而无需支付99美元。感谢Apple,最终允许这样做。

答案 3 :(得分:9)

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

答案 4 :(得分:8)

你必须越狱你的设备。

答案 5 :(得分:6)

有一种方法可以部署iPhone应用程序而无需支付给苹果 您必须越狱设备并按照http://www.alexwhittemore.com/?p=398

中的说明操作

答案 6 :(得分:5)

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

答案 7 :(得分:4)

昨晚我正在通过Apple开发人员,在配置证书中,我找到了类似“签署团队成员”的内容。我认为有一种方法可以将团队成员添加到付费个人资料中。 您可以向App Id所有者(付费用户)询问是否将您添加为团队成员。我不确定。还在搜索。

答案 8 :(得分:3)

不,这很容易做到。在Xcode中,将Active Configuration设置为Release。将设备从模拟器更改为设备 - 无论SDK。如果要直接导出到iPhone,请将其连接到计算机。按Build and Go。如果您的iPhone未连接到计算机,则会显示一条消息,指出您的iPhone未连接。

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

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

希望这有帮助!

PS:如果它说的是证书无效,只需点击Xcode中的项目,左侧​​文件堆栈中的小项目图标,然后按Apple + I,或从菜单栏中获取信息。单击顶部的Build。在代码签名下,更改代码签名身份 - 任何iPhone OS设备都不要签名。

答案 9 :(得分:2)

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

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

答案 10 :(得分:1)

没有解决方法。如果应用已在您的设备中注册,则您只能临时部署应用。这可以防止您构建自己的应用商店..