Wie kann ich eine iPhone-Anwendung von Xcode auf einem echten iPhone-Gerät bereitstellen?

157

Wie kann ich eine iPhone-Anwendung von Xcode auf einem echten iPhone-Gerät bereitstellen, ohne über ein Apple-Zertifikat in Höhe von 99 US-Dollar zu verfügen?

DFG
quelle
In dieser Antwort auf eine Frage, die ich zuvor gestellt habe, finden Sie eine sehr gute Anleitung, wie Sie sie auf Ihr iPhone mit Jailbreak übertragen können.
Dan Walker
6
Siehe auch
philfreo
2
Xcode 7 bietet jetzt eine kostenlose Bereitstellung, sodass Sie sich nicht für ein Apple Developer Account anmelden müssen, um Apps auf einem realen Gerät zu testen. Siehe diese Antwort für weitere Details.
Suragch

Antworten:

56

Es hört sich so an, als ob die Anwendung nicht signiert ist. Laden Sie ldid von Cydia herunter und verwenden Sie es dann wie folgt:ldid -S /Applications/AccelerometerGraph.app/AccelerometerGraph

Stellen Sie außerdem sicher, dass die Binärdatei als ausführbar markiert ist: chmod +x /Applications/AccelerometerGraph.app/AccelerometerGraph

rpetrich
quelle
3
Ja, Sie müssen Ihr Gerät jailbreaken, damit diese Methode funktioniert. (offensichtlich)
esqew
Wie starte ich den Befehl ldid -S ...? Benötigen Sie dafür eine SSH-Konsole? Gibt es eine kostenlose Möglichkeit, einen SSH-Client auf ein IPhone mit Jailbreak zu übertragen?
Dan Leahu
tanderson: es gibt ein ldid-Paket in Cydia und Sie können eines für OS X kompilieren
rpetrich
rpetrich Ich glaube, seine Frage ist, wie man den Befehl eingibt und verwendet, nicht wie man das Paket erwirbt. @tanderson Sie können Open SSH (und dann von Ihrem Desktop aus eine Verbindung zum Telefon herstellen) oder ein Terminal im iPhone selbst aufrufen . Beide Apps können kostenlos von Cydia heruntergeladen werden . Mit SSH haben Sie den Vorteil, dass Sie damit auch einfach Ihre App auf das Telefon kopieren können. Wenn Sie dies häufig tun, überprüfen Sie unbedingt die anderen Antworten. Sie können XCode dazu bringen, alle Aufgaben für Sie zu erledigen, aber es ist eine mühsame Prozedur, dies zu tun.
Cregox
92

Ich habe eine Mischung aus zwei Howtos verwendet: Jasons und Alex ' . Mit dem zweiten haben wir den Vorteil, debuggen zu können. Ich werde meistens nur beide unten kopieren (und Alex's vereinfachen):

Update Jan 2012: Dies funktioniert immer noch unter SDK 4.2.1 und iOS 5.0.1 - Ich habe gerade alles auf einem neuen Computer und Gerät getestet!


1. Erstellen Sie ein selbstsigniertes Zertifikat

Patchen Sie Ihr iPhone SDK, um die Verwendung dieses Zertifikats zu ermöglichen:

  1. Starten Sie Keychain Access.app. Wenn keine Elemente ausgewählt sind, wählen Sie im Menü Schlüsselbund die Option Zertifikatassistent und dann Zertifikat erstellen.

    • Name: iPhone Entwickler
    • Zertifikatstyp: Codesignatur
    • Lassen Sie mich die Standardeinstellungen überschreiben: Ja
  2. Klicken Sie auf Weiter

    • Gültigkeit: 3650 Tage
  3. Klicken Sie auf Weiter

  4. Löschen Sie das Feld E-Mail- Adresse.

  5. Klicken Sie auf Weiter, bis der Vorgang abgeschlossen ist .

    Sie sollten "Dieses Stammzertifikat ist nicht vertrauenswürdig" sehen . Dies wird erwartet.

  6. Stellen Sie das iPhone SDK so ein, dass das selbstsignierte Zertifikat verwendet werden kann:

    sudo /usr/bin/sed -i .bak 's/XCiPhoneOSCodeSignContext/XCCodeSignContext/' /Developer/Platforms/iPhoneOS.platform/Info.plist

    Wenn Sie Xcode geöffnet haben, starten Sie es neu, damit diese Änderung wirksam wird.

Und wenn Sie auf iOS 5 sind, ist es das! Versuchen Sie es jetzt! Das Debuggen ist möglicherweise nicht möglich, aber die App wird da sein!

Das hat mich sehr überrascht, denn wie Sie wissen sollten , habe ich keine Ahnung, worum es bei all diesen Hackings geht! Alles, was ich getan habe, war ein wenig zu verbessern, was ich anderswo gefunden habe, wie ich zeigte.

Also ja, die ganze Methode funktioniert nicht mehr auf die gleiche Weise und ich konnte mir nicht die Mühe machen, eine neue zu finden ... Abgesehen davon, dass ein Tool namens Theos verwendet wird, aber ich konnte den gesamten Prozess nicht durchlaufen.

Wenn Sie es aus irgendeinem Grund deinstallieren müssen , überprüfen Sie das Ende dieses Beitrags. In meinem Fall musste ich, weil ich nicht herausfinden konnte, warum das ganze Blau dieser ganzen Methode nicht mehr funktionierte, und es war mir egal, da wir bereits die lang erwartete Lizenz haben. (Freaking DUNS Nummer dauert so lange ...)

.

.


.

.

.

2. Aktivieren Sie Xcodes, um auf einem Gerät mit Jailbreak aufzubauen

  1. Installieren Sie auf Ihrem iPhone mit Jailbreak die App AppSync, indem Sie die Quelle ** http://repo.hackyouriphone.org ** hinzufügen

  2. Entfernen Sie die SDK-Anforderungen für Codezeichen und Berechtigungen (ich liebe sed !):

    sudo /usr/bin/sed -i .bak '/_REQUIRED/N;s/YES/NO/' /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/SDKSettings.plist
  3. Achten Sie auf dasiPhoneOS5.0.sdkTeil. Wenn Sie beispielsweise das iOS 4.2 SDK verwenden, ersetzen Sie es einfach entsprechend:

    sudo /usr/bin/sed -i .bak '/_REQUIRED/N;s/YES/NO/' /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/SDKSettings.plist
  4. Schließen Sie das Entfernen der Anforderungen durch Patchen von Xcode ab. Dies bedeutet binäre Bearbeitung:

    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

    Wenn Sie Xcode geöffnet haben, starten Sie es neu, damit diese (und die letzte) Änderung wirksam wird.

  5. Öffnen Sie "Projekt> Projekteinstellungen bearbeiten" (aus dem Menü). Klicken Sie auf die Registerkarte "Erstellen" . Suchen Sie "Code Signing Identity" und sein untergeordnetes "Any iPhoneOS Device" in der Liste und setzen Sie beide auf den Eintrag "Don't Code Sign" :

    Alt-Text

    Danach können Sie Schritt 3 rückgängig machen. Zumindest in meinem Fall ging es gut.

  6. Setzen Sie Xcode auf Code Sign mit unserem maßgeschneiderten selbstsignierten Zertifikat (die erste Anleitung). Dieser Schritt kann wahrscheinlich übersprungen werden, wenn Sie nicht debuggen möchten:

    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

    Schließen Sie Ihr iPhone an und öffnen Sie Xcode. Öffnen Sie Fenster> Organizer. Wählen Sie das Gerät aus der Liste auf der linken Seite aus und klicken Sie auf "Für die Entwicklung verwenden". Sie werden aufgefordert, sich für die Bereitstellung der Website anzumelden. Klicken Sie auf Abbrechen. Es soll die legitime Bereitstellung erleichtern, erschwert jedoch nicht die illegitime Nichtbereitstellung.

    Jetzt müssen Sie diesen letzten Teil für jedes neue Projekt ausführen, das Sie erstellen . Gehen Sie zum Menü Projekt> Neue Erstellungsphase> Neue Erstellungsskript-Erstellungsphase. Kopieren Sie im Fenster Folgendes:

    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

.

.


.

.

Deinstallation

Für den 1. Teil:

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

Für den 2. Teil:

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

Wenn Sie Schritt 3 statt 2 ausgeführt haben, ändern Sie ihn einfach ebenfalls entsprechend:

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

Im Übrigen wird nur das, was Sie auf XCode getan haben, zurückgesetzt und gelöscht, /Developer/iphoneentitlements401/gen_entitlements.pywenn Sie möchten:

sudo rm -f /Developer/iphoneentitlements401/gen_entitlements.py
Cregox
quelle
Ich habe versucht, diese Anweisungen zu befolgen, aber jetzt ist 'Scheme' vom Typ My Mac 64 Bit, und ich habe keine Option mehr, Simulator oder echtes iPhone auszuführen, sodass ich den Code nicht einmal testen kann. Ich habe SDK 4.3 verwendet und bin mir nicht sicher, ob das wichtig ist
nosatalian
1
Aktualisieren: Nach dem Ändern des Basis-SDK in den Projekteinstellungen von iPhone auf iOS 4.3 funktionieren die Dinge. Obwohl xcode "Fehler beim Starten des Remote-Programms: Fehler beim Abrufen der Aufgabe für den Prozess" anzeigt, kann ich die App starten, indem ich darauf klicke.
Nosatalian
1
Ich erhalte folgende Fehlermeldung: The identity used to sign the executable is no longer valid. ... (0xE8008018) Auch wenn ich 3650 Tage bis zum Ablauf eingestellt habe. Es scheint, als würde das Telefon selbst eine Überprüfung durchführen.
Stephen
funktioniert dieser "Patching XCode" -Trick für 4.3.2 oder er wird ihn bremsen
Gabor
1
Punkt 6. In meinem Fall musste ich die Dateiberechtigungen /Developer/iphoneentitlements401/gen_entitlements.py ändern, damit der normale Benutzer sie ausführt. Damit funktioniert das Verfahren einwandfrei.
Abidibo
43

Kostenlose Bereitstellung nach Xcode 7

Um Ihre App auf einem realen Gerät zu testen, anstatt die Apple Developer-Gebühr (oder den Jailbreak Ihres Geräts) zu zahlen, können Sie die neue kostenlose Bereitstellung verwenden, die Xcode 7 und iOS 9 unterstützen.

Hier sind die Schritte, die mehr oder weniger aus der Dokumentation entnommen wurden (was ziemlich gut ist, lesen Sie es also durch):

1. Fügen Sie Ihre Apple ID in Xcode hinzu

Gehen Sie zu XCode> Einstellungen> Registerkarte Konten> Schaltfläche Hinzufügen (+)> Apple ID hinzufügen. Weitere Hilfe finden Sie in den Dokumenten .

Geben Sie hier die Bildbeschreibung ein

2. Klicken Sie im Projektnavigator auf die Registerkarte Allgemein

Geben Sie hier die Bildbeschreibung ein

3. Wählen Sie Ihre Apple ID aus dem Team-Popup-Menü.

Geben Sie hier die Bildbeschreibung ein

4. Schließen Sie Ihr Gerät an und wählen Sie es im Schema-Menü.

Geben Sie hier die Bildbeschreibung ein

5. Klicken Sie auf die Schaltfläche Probleme beheben

Geben Sie hier die Bildbeschreibung ein

Wenn Sie eine Fehlermeldung erhalten, dass der Bundle-Name ungültig ist, ändern Sie ihn in einen eindeutigen Namen.

6. Führen Sie Ihre App aus

Klicken Sie in Xcode auf die Schaltfläche Erstellen und ausführen.

Geben Sie hier die Bildbeschreibung ein

7. Vertrauen Sie dem App-Entwickler in den Geräteeinstellungen

Nach dem Ausführen Ihrer App wird ein Sicherheitsfehler angezeigt, da die App, die Sie ausführen möchten, nicht aus dem App Store stammt.

Geben Sie hier die Bildbeschreibung ein

Gehen Sie auf Ihrem Gerät zu Einstellungen> Allgemein> Profil> Ihr-Apple-ID-Name > Vertrauen Sie Ihrem-Apple-ID-Namen > Vertrauen.

8. Führen Sie Ihre App erneut auf Ihrem Gerät aus.

Das ist es. Sie können jetzt Ihre eigenen (oder andere Apps, für die Sie den Quellcode haben) ausführen, ohne die 99 Dollar ausgeben zu müssen. Vielen Dank, Apple, dass Sie dies endlich zugelassen haben.

Suragch
quelle
1
Vielen Dank. Dies funktionierte perfekt ohne die bezahlte Apple Developer License.
kishorer747
Dies hat jedoch einige Probleme: Sie können nur bis zu 3 Apps gleichzeitig installieren und müssen das Zertifikat jede Woche erneuern.
SilverWolf - Stellen Sie Monica
@seaturtle, danke für das Update. Ich habe schließlich das Geld für die Entwicklerlizenz ausgegeben, damit ich über diese Antwort nicht auf dem Laufenden bin. Das ist schade um die Einschränkungen. Es gibt einige Dinge an Android, die viel schöner sind als Apple.
Suragch
9

Sie können nicht, nicht wenn Sie über Anwendungen sprechen, die mit dem offiziellen SDK erstellt und direkt von xcode bereitgestellt werden.

micmcg
quelle
8

Sie müssen Ihr Gerät jailbreaken.

Kann Berk Güder
quelle
1
Befolgen Sie die Methode von @ rpetrich und SSH die ausführbare Datei in den Ordner / Applications des Geräts. Sie sollte nach einem Neustart / Respring funktionieren.
Esqew
6

Es gibt eine Möglichkeit, iPhone-Apps bereitzustellen, ohne an Apple zu zahlen. Sie müssen Ihr Gerät jailbreaken und den Anweisungen unter http://www.alexwhittemore.com/?p=398 folgen

Löwe
quelle
auch eine perfekte Anleitung, mit einem anderen Ansatz als @Dan ... Ich habe beide verwendet, tho.
Cregox
5

Nichts, was ich irgendwo gesehen habe, weist darauf hin, dass Sie eine Ad-hoc-Bereitstellung auf einem echten iPhone ohne (kostenpflichtiges) Zertifikat durchführen können.

Matthew Phillips
quelle
4

Ich habe gestern Abend den Apple Developer durchgesehen und dort im Provisioning-Zertifikat so etwas wie "Signing Team Members" gefunden. Ich denke, es gibt eine Möglichkeit, Teammitglieder zum bezahlten Profil hinzuzufügen. Sie können einfach den App-ID-Eigentümer (kostenpflichtig) bitten, Sie als Teammitglied hinzuzufügen. Ich bin nicht sicher. Ich suche immer noch danach.

Akshay
quelle
Ja, Sie können Teammitglieder addieren. Es gibt ein Limit von 200 Geräten pro Jahr.
Cregox
Cawas - Wissen Sie, wie Sie ein Mitglied zu Ihrer Apple-ID hinzufügen können?
Akshay
Wir erhalten nur Benachrichtigungen, wenn Sie das @ vor dem Namen einfügen. Wie Sie selbst sagten, müssen Sie zuerst ein Zahlungskonto erhalten. Dann sollte es wirklich einfach sein, da ich kein Tutorial dazu finden konnte. Ich habe es nie selbst gemacht.
Cregox
3

Nein, das ist einfach. Setzen Sie in Xcode die aktive Konfiguration auf Freigeben. Ändern Sie das Gerät von Simulator zu Gerät - unabhängig vom SDK. Wenn Sie direkt auf Ihr iPhone exportieren möchten, schließen Sie es an Ihren Computer an. Drücken Sie Build and Go. Wenn Ihr iPhone nicht mit Ihrem Computer verbunden ist, wird eine Meldung angezeigt, dass Ihr iPhone nicht verbunden ist.

Wenn dies auf Sie zutrifft: (iPhone war nicht verbunden)

Gehen Sie zu Ihrem Projektordner und dann zum darin enthaltenen Build-Ordner. Gehen Sie zum Ordner Release-iphoneos und nehmen Sie die App in sich auf. Ziehen Sie sie per Drag & Drop auf das iTunes-Symbol. Wenn Sie Ihr iTouch-Gerät synchronisieren, wird es auf Ihr Gerät kopiert. Es wird auch in iTunes als Anwendung für das iPhone angezeigt.

Hoffe das hilft!

PS: Wenn etwas über ein ungültiges Zertifikat aussagt, klicken Sie einfach auf das Projekt in Xcode, das kleine Projektsymbol im Dateistapel links, und drücken Sie Apple + I oder rufen Sie in der Menüleiste Informationen ab. Klicken Sie oben auf Erstellen. Ändern Sie unter Codesignatur die Codesignaturidentität - Jedes iPhone OS-Gerät, das nicht signiert werden soll.

cdespinosa
quelle
7
Das OP verfügt nicht über ein Signaturzertifikat oder ein Bereitstellungsprofil. Diese Anweisungen gelten für Mitglieder des iPhone-Entwicklerprogramms für 99 US-Dollar, behandeln jedoch nicht die Frage, wie sie auf dem Gerät ausgeführt werden sollen, ohne sich für das Programm anzumelden.
Cdespinosa
2

Dies hängt wirklich alles davon ab, welche Version von Xcode Sie verwenden, da verschiedene Versionen unterschiedliche Methoden für die Bereitstellung auf Ihrem iPhone ohne Bereitstellungsprofil verwenden.

Xcode 3.2.1 ist eine gute Version und leicht zu sortieren, aber wir müssen wissen, welche Version Sie verwenden.

Magnatek
quelle
2

Die von Cawas veröffentlichte Lösung funktioniert auch perfekt mit XCode4. Es gibt jedoch einige Änderungen an der Benutzeroberfläche von IDE, sodass Sie einige Nachforschungen anstellen müssen, um Run Script zu finden :)

Klicken Sie in der Projektnavigatoransicht auf das Stammelement des Projekts, wählen Sie dann im mittleren Fenster Ziel aus, klicken Sie auf die Registerkarte Build-Phasen. Unten sehen Sie die Schaltfläche Build-Phase hinzufügen, klicken Sie auf Run-Skript hinzufügen und fügen Sie dann Codescode ein "Skript von Cawas gepostet.

Gobol
quelle
1

Es gibt keine Problemumgehung. Sie können Apps nur dann ad hoc bereitstellen, wenn sie auf Ihrem Gerät registriert sind. Dies verhindert, dass Sie Ihren eigenen App Store erstellen.


quelle