Ist es möglich, ein Xcode-Projekt auf einem Gerät mit Jailbreak ohne ein kostenpflichtiges Entwicklerzertifikat zu kompilieren und auszuführen?

Sowohl aus Spaß als auch aus Budgetgründen würde ich gerne ein Paket nehmen, das normalerweise ein Entwicklerkonto erfordern würde, und eine App erstellen, die auf einem iOS-Gerät mit Jailbreak ausgeführt werden kann.

Ich habe einen iPod Touch der 5. Generation, der mit evasi0n jailbreakt wurde und auf dem iOS 6.1 ausgeführt wird.

Ich verwende Xcode 4.6 mit OS X (10.8.2) Lion.

Antworten (3)

Die folgenden Anleitungen zu diesem Zweck stammen aus: http://iphonedevwiki.net/index.php/Xcode

Meine Erkenntnisse und Maßnahmen werden unter jedem Schritt bereitgestellt.

1. Erstellen Sie mithilfe der Schlüsselbundverwaltung ein selbstsigniertes Code-Signatur-Zertifikat mit dem Namen „iPhone-Entwickler“ auf dem Schlüsselbund „Login“ (Standard).

  • Ich habe Screenshots gemacht, als ich die obige Anleitung befolgt habe.
  • Ich habe die meisten Felder leer oder auf ihrem Standardwert gelassen.

Geben Sie hier die Bildbeschreibung ein

2. Öffnen /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Info.plist(4.2 oder niedriger: /Developer/Platforms/iPhoneOS.platform/Info.plist). Möglicherweise benötigen Sie Root-Rechte.

  • Ich verwende Xcode 4.6, also habe ich die frühere .plistDatei geöffnet.

3. Ersetzen Sie alle Vorkommen von XCiPhoneOSCodeSignContextdurch XCCodeSignContext. Es gibt drei davon (XCode Version 3.2.4+).

  • Ich habe drei Änderungen vorgenommen, wie die Screenshots zeigen.

Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein

4. Speichern Sie die Datei und starten Sie Xcode neu.

  • Datei gespeichert.

5. Stellen Sie sicher, dass Sie ldid auf Ihrem Mac haben. Legen Sie eine Kopie irgendwo ab, zB in /usr/local/bin.

6. Erstellen Sie das Python-Skript ldid3.py direkt neben dem ldid-Programm. Machen Sie es ausführbar. Füllen Sie es mit:

#!/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])
  • Ich habe eine neue Nur-Text-Datei erstellt und den obigen Code hineinkopiert.
  • Ich habe diese Datei als ldid3.pygespeichert und im /usr/local/binVerzeichnis abgelegt.
  • Im Terminal lief chmod 777 /usr/local/bin/ldid3.py.

7. Öffnen Sie iPhoneCodeSign.xcspec. Diese Datei finden Sie unter [For Xcode 4.6: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Specifications/iPhoneCodeSign.xcspec]:

8. Ändern Sie den Eintrag in der Datei von Aufruf codesignauf ldid3.py.

  • Konvertieren Sie die Spezifikationsdatei gemäß der offiziellen Anweisung in Klartext, indem Sie in der Konsole Folgendes eingeben:sudo plutil -convert xml1 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Specifications/iPhoneCodeSign.xcspec
  • Ich habe die Datei mit TextEdit geöffnet.
  • Ersetzt <key>CommandLine</key><string>/usr/bin/codesign</string>durch <key>CommandLine</key><string>/usr/local/bin/ldid3.py</string>.

9. Speichern Sie die Datei und starten Sie Xcode neu.

  • Ich habe die Datei gespeichert und TextEdit beendet.

10. Erstellen Sie eine Datei /var/mobile/tdmtanfauf dem Gerät, um Apples „TDMTANF-Umgehung“ in installd zu aktivieren (Warnung: Dadurch gelangen Sie auch in ein Sandbox-GameCenter).

  • Ich erstelle eine leere Textdatei in Windows, nenne sie tdmtanf, schicke sie per SSH in meinen iPod, lade sie auf hoch und starte /var/mobile/meinen iPod neu.

Jetzt wo das alles vorbei ist...

Ich öffne mein vorhandenes Xcode-Projekt und drücke auf Ausführen. Im iOS Simulator funktioniert es ohne Probleme.

Geben Sie hier die Bildbeschreibung ein

Ich stelle sicher, dass Code Signing so eingestellt ist, dass es das in Schritt 1 eingerichtete Zertifikat verwendet.

Geben Sie hier die Bildbeschreibung ein

Ich erstelle die App (Projekt > Erstellen). Es folgt eine Erfolgsmeldung.

Ich nehme meinen App-Ordner TicTacToe.appund /Libary/Developer/Xcode/DerivedData/TicTacToe-cjgzmoxtflyegtfypsbxbuiuwxns/Build/Products/Debug-iphoneos/übertrage ihn auf meinen Windows-Rechner, um ihn auf meinem iPod zu installieren.

Beim Versuch, die App auf meinem iPod zu installieren, ziehe ich sie TicTacToe.appin den Anwendungsbereich des iPhone-Konfigurationsdienstprogramms, erhalte jedoch diese Fehlermeldung, die besagt, dass meine App „keine gültige mobile Anwendung ist“.

Ich habe auch versucht, die App manuell mit iFunbox und der in Cydia gefundenen AppCake- App zu installieren. Beide scheitern.

Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein

Als interessanter Punkt, denn als ich herumgegoogelt habe, habe ich bemerkt, dass viele Leute die Wichtigkeit erwähnen: Ich habe AppSync installiert. (Entschuldigung für den riesigen Screenshot. Wenn ich ihn entfernen sollte, lass es mich bitte wissen!)

Geben Sie hier die Bildbeschreibung ein

Fazit

Obwohl ich die Anweisungen mehrmals genau befolgt habe, wird meine App vom iPhone Configuration Utility nicht als gültige App erkannt. Ich kann die App nicht manuell mit Programmen wie iFunbox oder Cydia-Apps wie AppCake installieren.

Ich vermute, dass die App tatsächlich ungültig ist, aber nachdem ich die Anweisungen sorgfältig befolgt habe, bin ich mir nicht sicher, warum.

Kann mir jemand sagen, warum meine App nicht gültig ist und was ich tun kann, um dies zu beheben, außer Geld zu husten?

Es war aber eine interessante Lektüre.
Nein - ich bin froh, es gelesen zu haben und werde wahrscheinlich in Zukunft darauf zurückkommen. Danke, dass du es geteilt hast.
Dies war sehr hilfreich für mich bei der Arbeit an Xcode 4.2 und iOS 4, ich hoffe, jemand kann das Verfahren auf Xcode 4.6 aktualisieren
Nach dem Herunterladen von ldid müssen Sie die Berechtigungen mit chmod 755 ldid auf 755 ändern. Dies verursachte mir einen Exit 1-Fehler.

Sie können Ihr Gerät verbinden und Ihr iOS-Gerät als Ausführungsziel auswählen. Wenn es ausgeführt wird, wird die Anwendung automatisch auf Ihrem Gerät installiert. Oder Sie können Ihr iOS-Gerät auswählen, dann müssen Sie es nicht ausführen, sondern nur erstellen und archivieren. Danach verteilen... wählen Sie Save for Enterprise or Ad-Hoc Deployment. Sie erhalten Ihre .ipa-Datei. Hoffe es kann dir helfen..

Fortsetzung der Antwort von @joncom.. Sie können die .app-Dateien mit nur wenigen zusätzlichen Schritten direkt zu Ihrem iPhone hinzufügen.

  • Kopieren Sie die .appDatei auf Ihren Desktop und zippen Sie sie dann
  • umbenennen [yourappname].zipin[yourappname].ipa
  • Fahren Sie dann fort und laden Sie AppSync von Cydia herunter
  • Laden Sie die .ipa-Datei herunter und installieren Sie sie auf Ihrem Gerät

HINWEIS:

Sie können dies auch direkt tun, ohne die gesamte von @joncom erwähnte Python-Code-Änderung durchlaufen zu müssen. Lesen Sie hier mehr