Belächelt hatte mich WAKE-Kollege Lauritz Brinkmann und gesagt „Bei Android waren es mal wieder wenige Klicks und bei Apple ein riesiger Umweg.“ Ja, wer kennt sie nicht, diese andauernden Sticheleien zwischen Android- und Apple-Usern. Die Diskussion soll hier natürlich nicht aufgemacht werden. Fakt ist: Ich besitze einige Produkte mit angebissenem Apfel drauf und wir wollten unser 2D-Puzzle-Game WAKE – wir haben es von „Wakewalker“ wieder umbenannt – (Artikel: „Kleiner Wecker, großes Abenteuer“) von unserer genutzten Game-Engine Unity aus exportieren – als iOS-App. Da sich der Weg tatsächlich sehr mühsam gestaltet hat und es nur einzelne Schritte mit den aktuellen Problemen als Einleitung gibt, möchte ich dir hier zeigen, wie du momentan (Stand: August 2017) dein iOS-Export-Vorhaben realisieren kannst.
Das benötigst du
- MacBook (Version 10.10.5)
- Unity (Version 2017.1)
- XCode (Version 7.2)
- weiteren Apple-Device: z.B. iPhone oder iPad (in unserem Fall und deshalb auch in diesem Beispiel: iPhone 6 (iOS-Version 10.3.3)
- DeveloperDiskImage für iOS 10.3.3 (beziehungsweise deiner iOS-Version, die sowohl bei deinem iPhone/iPad, als auch bei deinem MacBook, xCode und Unity die aktuellste sein muss. Ich habe also erstmal alles eine Runde geupdatet.)
Schritt für Schritt zur iOS-App
1.) Update dein MacBook, iPhone/iPad, Unity und xCode auf die aktuellste Version.
2.) Melde dich bei xCode mit deiner Apple-ID an. Über diese individuelle verfügt jeder Apple-User. Klicke dafür oben in der Leiste auf xCode > Preferences. Danach klicke im dadurch geöffneten Fenster auf „Accounts“. Unten links klickst du auf das Plus und fügst deine Apple-ID hinzu. Das machst du, in dem du deine Apple-ID und das dazugehörige Passwort eingibst. Dein Account wird dann Teil der Liste, hinter deinem Namen steht dann „Personal Team“.

3.) Wechsle jetzt zu Unity. Trage dort euren Projektnamen ein (der wird zwingend benötigt, weil Unity ansonsten die nächsten Schritte nicht zulässt). Klicke dafür in deiner Unity-Leiste ob auf Edit > Project Settings > Player. Es erscheint rechts ein Inspector-Fenster, in dem du die Felder ausfüllen kannst.

4.) Erzeuge nun eine .xcodeproj-Datei deines gesamten Unity-Projekts, um damit bei xCode weiterzuarbeiten und die letztendliche iOS-App auf deinem iPhone/iPad ins Laufen zu bekommen. Dafür klickst du bei Unity auf File > Build Settings. Es erscheint ein Fenster mit deinen Szenen. Sorge oben dafür, dass alle Szenen, die du in deiner App haben möchtest, dort sichtbar und angekreuzt sind. Falls noch nicht alle da sind, füge sie über „Add Open Scenes“ hinzu. Links wählst du iOS aus. Klicke dann unten auf den Button „Build“. Unity fragt dich, wo du die Dateien speichern möchtest. Lege am besten einen Build-Ordner in deinem Unity-Projekt-Ordner an.

5.) Bei Android ist der Schritt an dieser Stelle bereits abgeschlossen, die fertige APK der App ist entstanden. Apple-User machen jetzt weiter: Wechsle von Unity zu xCode und öffne dort deine eben erzeugte .xcodeproj-Datei aus dem Build-Ordner. Dafür klickst du bei xCode auf File > Open und wählst – je nachdem wohin du die Build-Dateien gespeichert hast – die .xcodeproj-Datei aus, bei mir heißt sie „Unity-iPhone.xcodeproj“.

6.) Du befindest dich jetzt in xCode. Klicke oben links auf die hinzugefügte .xcodeproj-Datei. Es erscheint eine Identity-Übersicht, in der du dem Projekt einen Bundle-Identifier-Namen gibst – bei uns ist es „com.PuzzledApart.Wake“. Außerdem trägst du bei Team deine angemeldete Apple-ID ein. Dadurch erscheint darunter mit einem gelben Dreieck die Meldung „No code signing identities found“. Darunter befindet sich ein „Fix issue“-Button. Klicke auf diesen. Dadurch wird für dein Team, das du erneut auswählen musst, ein sogenanntes „Provisioning Profile“ erstellt. Das bedeutet nur, dass dir die Rechte zum Erstellen der iOS-App eingeräumt werden (weitere Infos im Apple-Artikel: „Creating Your Team Provisioning Profile“). Anmerkung: Es kann sein, dass das nicht funktioniert und die Meldung mit dem gelben Dreieck nicht verschwindet. Es kann dann helfen, wenn du deinen Apple-ID-Account noch einmal entfernst und neu hinzufügst (siehe Schritt 2). Um den Account zu entfernen kannst du ihn links auswählen und auf „Backspace“ (Taste über „Enter“) klicken.

7.) Schließe jetzt dein iPhone/iPad mit einem USB-Kabel (ich habe den Kopf des iPhone-Ladekabels entfernt) an dein MacBook an. Dein iPhone darf dabei nicht im Batterie-Sparmodus und nicht gelocked sein. Das bedeutet du muss unter den Einstellungen bei „Anzeige & Helligkeit > Automatische Sperre“ die Variable „Nie“ eintragen. Bei „Batterie > Stromsparmodus“ darf dieser nicht aktiviert sein. Solltest du einen Code zum Entsperren deines iPhones/iPads verwenden, empfiehlt es sich, diesen unter „Touch ID & Code“ ebenfalls zu deaktivieren.
8.) Dann musst du dein iPhone/iPad (meins heißt „Jojos iPhone“) als Auswahlmöglichkeit, also weiteren Device, bei XCode hinzufügen. Dafür klickst du in xCode oben im Fenster auf den Bereich neben dem Stop-Button (Quadrat). Da steht gerade vermutlich „Generic iOS-Device“. Dort wählst du dein iPhone/iPad aus.

9.) Ich dachte an diesem Schritt, dass ich fertig sei und klickte auf „Run“ (Product > Run). Daraufhin erscheint folgende Fehlermeldung: „Could not find Developer Disk Image“. Die bedeutet letztendlich, dass die iOS-Version deines iPhones/iPads bei xCode noch nicht vorhanden ist. Es gibt nämlich einzelne Ordner für die jeweiligen iOS-Versionen. Deshalb musst du noch die – in meinem Fall iOS-Version 10.3 – hinzufügen. Du kommst wie folgt zu den Ordnern:
- Klicke im Finder links auf „Programme“ und wähle mit einem Rechtsklick „xCode“ aus. Solltest du wie ich keine Maus, sondern das Touchpad verwenden: Bewege zwei Finger in die untere, rechte Ecke des Touchpads und drücke mit ihnen einmal darauf.
- Wähle aus der erscheinenden Liste „Paketinhalt zeigen“ aus.
- Der Weg zum benötigten Ordner: Contents > Developer > Platforms > iPhoneOS.platform > DeviceSupport

10.) Aber was genau fügst du da ein? Die DeveloperDiskImage.dmg und ihre dazugehörige Signatur zu deiner iOS-Version des iPhones/iPads. Ich konnte meinen Ordner bei einem GitHub-Forumspost downloaden, den ich durch googlen gefunden habe (Download DeveloperDiskImage-Ordnern iOS 10.3). Nach dem Entpacken besitzt du die iOS-Version deines iPhones/iPads als Ordner. Schiebe sie einfach neben die anderen iOS-Versions-Ordner. Oben auf dem Bild von Schritt 9 siehst du, dass ich das schon gemacht habe.
11.) Jetzt xCode komplett schließen, neustarten und wieder die Unity-.xcodeproj-Datei öffnen. Um weiteren Fehlermeldungen vorzubeugen, musst du in xCode unter den Build-Settings (da warst du vorhin schon einmal, als du Team und Bundle-Identifier eingetragen hast bei „General“, wählst in der gleichen Leiste „Build-Settings“ aus) noch etwas hinzufügen. Unter Code-Signing > Code-Signing-Identity trägst du jeweils deine Apple-ID als Developer ein. Die kannst du dort auswählen (siehe Foto).

12.) Jetzt ist der große Moment gekommen: Klicke jetzt – mit deinem iPhone/iPad als ausgewähltem Device (siehe Schritt 8) – bei xCode auf „Run“ (Product > Run). Daraufhin werden einige Settingsdateien runtergeladen.
13.) Klicke erneut auf „Run“. Deine iOS-App wird auf dein iPhone/iPad geladen. Sie sieht so hellgrau aus, besitzt das Unity-Logo und heißt wie deine App.
14.) iOS merkt, dass die App nicht aus dem App-Store geladen, sondern von einem fremden Hersteller – nämlich dir – stammt. Damit du deine App wirklich testen kannst, musst du erneut in deine iPhone-/iPad-Einstellungen gehen (Allgemein > Geräteverwaltung). Dort erlaubst du, dass du deine eigene App nutzen darfst.
15.) Klicke jetzt auf das Symbol deiner iOS-App auf deinem iPhone/iPad. Ganz viel Spaß beim Testen – jetzt funktioniert’s!
Beitragsbild: Screenshot-Collage der Icons am MacBook
Du hast weitere Fragen oder Anmerkung zum iOS-App-Export mit Unity und/oder möchtest mir einfach nur sagen, dass Android aus deiner Sicht eh viel cooler ist? Gerne. Kommentiere diesen Artikel, nutze das Kontaktformular oder meine Social-Media-Accounts als Anlaufstelle. Ich freue mich auf deine Nachricht und hoffe, dass dir die Anleitung geholfen hat.
Absolut geniale Beschreibung.
Ich als eingefleischter Android Entwickler hab es tatsächlich hinbekommen 😉
Ohhh, Danke dir! Das freut mich sehr! 😍🎉
Vielen dank, für die ausführliche Erläuterung! Oha… da platzt mein Traum, auch für alle meine Schüler, die I-Phones nutzen eine lauffähige App zu erzeugen. (Als Beispiel für den Distanzunterricht in Informatik) Gibt es keine Möglichkeit eine allgemeine I-Phone App zu erzeugen? Schade.
Ohwei. Der Artikel ist jetzt 4 Jahre alt, sind die Schritte noch die gleichen? Ich glaube ich werde darauf verzichten mein Zeug für IOS zu kompilieren. 🤣