2013-09-05 9 views
7

Ich habe ein Projekt, das ich gerne weiß Label. Grundsätzlich müssen nur Icons, Startbilder und info.plist geändert werden. Das Problem ist, dass das Projekt zu groß ist und ich wirklich keine zusätzlichen Ziele und Ressourcen hinzufügen möchte.White Labeling eine iOS App

Die Lösung, die ich sehe, besteht darin, ein separates Projekt zu erstellen und das erste als Abhängigkeitsprojekt hinzuzufügen. Dieses White-Labeling-Projekt würde keinen Code haben, sondern eine Reihe von Zielen mit verschiedenen Bildern und Info.plists für sie. In diesem Fall würde ich jedes Mal, wenn ich die App weiß beschriften möchte, ein anderes Ziel mit einem eigenen Satz von Bildern erstellen. Und wann immer ich eine weitere Veröffentlichung machen möchte, könnte ich einfach all diese Ziele erstellen und eine Reihe von Variationen für die gleiche App bekommen. Klingt einfach.

Das Problem liegt in der Implementierung. Ich habe das Projekt als Abhängigkeit verlinkt, ebenso wie das Ziel. Aber jedes Mal, wenn ich die App erstelle, erstellt sie eine ausführbare Datei mit dem ursprünglichen Namen, obwohl es in info.plist anders ist. Wahrscheinlich liegt das daran, dass das ursprüngliche Ziel seine eigene info.plist hat. Eine andere Sache ist, wie man die Ressourcen vom ursprünglichen Ziel durch andere ersetzt.

Jede mögliche Hilfe schätzen

+0

Meiner Meinung nach, Ziele der beste Weg ist, zu erreichen, was Sie wollen, sollten Sie diese Lösung überdenken. – Cyril

+0

Ja, je mehr ich darüber nachdenke, desto mehr verstehe ich, dass das die einfachste Lösung wäre – Ezeki

Antwort

2

Ich tat dies in meinem Job und wie ich tat, ich bin es, ein Python-Skript, das ich schrieb, dass geht in und manipuliert die Info.plist mit einer Liste von Ersatzwerten, die ich speichern in eine alternative Plist-Datei. Wir haben auch ein Build-Step-Skript, das alle Ressourcen, die wir für diesen Build benötigen, eingibt und injiziert.

Sie können das Paket beliebig manipulieren, aber Sie müssen es tun, bevor Xcode die App signiert. In einigen Fällen möchten Sie vielleicht auch die Info.plist im Bundle öffnen und editieren, tun Sie es einfach vor dem Signierschritt.

+0

Danke, das klingt wirklich interessant! Würden Sie das Beispiel dieses Skripts teilen? – Ezeki

+0

Ich kann das nicht, abgesehen davon, dass es etwas komplizierter ist als das, was Sie brauchen würden. Haben Sie einen bestimmten Teil, zu dem Sie eine Anleitung benötigen? – dtrotzjr

15

Ich verwalte derzeit eine White-Label-iOS-App. Wir fügen dem Hauptprojekt Ziele für jeden White-Label-Client hinzu und haben die meisten Teile unserer App über eine Theme.plist-Datei konfigurierbar gemacht.

Also enthält jedes Ziel alle Klassen für die App, aber hat benutzerdefinierte Info.plist, Symbole, Startbildschirmen, Schriftart-Dateien und Theme.plist.

Wir vermeiden den Ansatz, die oben erwähnt @dtrotzjr, weil es ein paar Dinge außerhalb der Info.plist Datei waren, die wir je Ziel ... das Bereitstellungsprofil ist ein gutes Beispiel sowie Präprozessormakros ändern benötigt, um die gelegentliche Handhabung #ifdef für pro-Client-Hacks.

Es machte es auch für neue Entwickler einfacher, den Build-Prozess zu verstehen.

+0

Ich denke, das sollte die akzeptierte Antwort sein, weil es flexibler ist und kein Out-of-Band-Python benötigt. –