是否可以在没有付费开发人员证书的越狱设备上编译和运行Xcode项目?


9

无论出于踢球还是出于预算原因,我都想选择一个通常需要开发人员帐户的软件包,并构建一个可以在越狱的iOS设备上运行的应用程序。

我有第5代iPod Touch,使用evasi0n越狱,运行iOS 6.1。

我在OS X(10.8.2)Lion中使用Xcode 4.6。

Answers:


6

以下指导步骤可实现此目的:http : //iphonedevwiki.net/index.php/Xcode

每个步骤都提供了我的发现和行动。

1.使用“钥匙串访问”在“登录”(默认)钥匙串上创建一个名称为“ iPhone Developer”的自签名代码签名证书。

  • 我按照上述说明进行了截图。
  • 我将大多数字段留为空白或使用其默认值。

在此处输入图片说明

2.打开/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Info.plist(4.2或以下:)/Developer/Platforms/iPhoneOS.platform/Info.plist。您可能需要root权限。

  • 我正在使用Xcode 4.6,所以我打开了前一个.plist文件。

3.更换所有出现XCiPhoneOSCodeSignContextXCCodeSignContext。其中有三个(XCode版本3.2.4+)。

  • 如屏幕截图所示,我进行了三处修改。

在此处输入图片说明 在此处输入图片说明 在此处输入图片说明

4.保存文件并重新启动Xcode。

  • 保存文件。

5.确保在Mac上具有ldid。将副本放在的某处/usr/local/bin

6.在ldid程序旁边创建一个Python脚本ldid3.py。使它可执行。填写:

#!/usr/bin/env python

from sys import argv
from subprocess import check_call
from os.path import basename, dirname, splitext, join
from tempfile import NamedTemporaryFile

app = argv[-1]
ldid_path = join(dirname(__file__), 'ldid')
obj_path = join(app, splitext(basename(app))[0])

if '-gta' not in argv:
    check_call([ldid_path, '-S', obj_path])
else:
    with NamedTemporaryFile('w+b', 0) as f:
        f.write("""
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>get-task-allow</key>
    <true/>
  </dict>
</plist>
        """)
        check_call([ldid_path, '-S' + f.name, obj_path])
  • 我创建了一个新的纯文本文件,并将上面的代码复制粘贴到该文件中。
  • 我将此文件另存为ldid3.py并存储在/usr/local/bin目录中。
  • 在终点站,跑了chmod 777 /usr/local/bin/ldid3.py

7.打开iPhoneCodeSign.xcspec。该文件可以在[For Xcode 4.6:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Specifications/iPhoneCodeSign.xcspec]中找到:

8.将文件中的条目从更改codesignldid3.py

  • 按照官方说明,通过在控制台中键入将spec文件转换为纯文本: sudo plutil -convert xml1 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Specifications/iPhoneCodeSign.xcspec
  • 我用TextEdit打开了文件。
  • 替换<key>CommandLine</key><string>/usr/bin/codesign</string><key>CommandLine</key><string>/usr/local/bin/ldid3.py</string>

9.保存文件,然后重新启动Xcode。

  • 我保存了文件并退出TextEdit。

10. /var/mobile/tdmtanf在设备上创建一个文件,以在安装时启用Apple的“ TDMTANF旁路”(警告:这样做也将您带入沙盒GameCenter)。

  • 我在Windows中创建了一个空文本文件,将其命名为,将它tdmtanfSSH导入iPod,并将其上传到/var/mobile/,然后重新启动iPod。

现在一切都结束了...

我打开现有的Xcode项目,然后单击“运行”。它可以在iOS模拟器中正常运行。

在此处输入图片说明

我确保将代码签名设置为使用步骤1中设置的证书。

在此处输入图片说明

我构建应用程序(“项目”>“构建”)。随后显示一条成功消息。

TicTacToe.app从我的应用程序文件夹中抓取/Libary/Developer/Xcode/DerivedData/TicTacToe-cjgzmoxtflyegtfypsbxbuiuwxns/Build/Products/Debug-iphoneos/并将其转移到Windows计算机上,以安装到iPod上。

为了将应用程序安装到iPod上,我拖到TicTacToe.app“ iPhone配置实用程序”的“应用程序”部分,但是收到此错误消息,提示我的应用程序“不是有效的移动应用程序”。

我还尝试使用iFunbox和在Cydia中找到的AppCake应用程序手动安装该应用程序。都失败了。

在此处输入图片说明 在此处输入图片说明

作为一个兴趣点,因为随着我在Google周围的关注,我注意到许多人提到了这一点的重要性:我确实安装了AppSync。(对不起,截图太大了。如果我要记下它,请告诉我!)

在此处输入图片说明

结论

因此,尽管多次严格按照说明进行操作,但iPhone配置实用程序仍未将我的应用识别为有效应用。我无法使用诸如iFunbox之类的程序或诸如AppCake之类的Cydia应用来手动安装该应用。

我怀疑该应用确实确实无效,但是在认真遵循说明之后,我不确定原因。

谁能告诉我为什么我的应用程序无效,除了付钱外我还能做些什么来解决呢?


但是,这是一个有趣的阅读。
Thecafremo

不,很高兴阅读,以后可能还会再来。感谢分享。
罗伯特

在使用Xcode 4.2和iOS 4时,对我非常有帮助。我希望有人可以将该程序更新为Xcode 4.6
rraallvv

下载ldid之后,您需要使用chmod 755 ldid将其权限更改为755。这导致我退出1错误。

0

您可以连接设备,然后选择iOS设备作为“运行”目标。在运行时,该应用程序会自动安装在您的设备上。或者,您可以选择您的iOS设备,而无需仅运行“构建并存档”。之后,分发...选择“保存用于企业或临时部署”。您将获得.ipa文件。希望它能对您有所帮助。


0

继续@joncom的答案..您可以将.app文件直接添加到iPhone中,只需执行一些额外的步骤。

  • .app文件复制到您的桌面上,然后将其压缩
  • 重命名[yourappname].zip[yourappname].ipa
  • 然后继续并从cydia下载AppSync
  • 将.ipa文件下载并安装到设备上

注意:

你也可以做到这一点的情况下直接经历所有的Python代码修改@joncom提到..阅读更多在这里

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.