iOS: Die beste Möglichkeit zum Verwalten von Entwicklungs-, Test- und Produktions-Builds mit unterschiedlichen Einstellungen und Namen

8

Ich habe drei API mit verschiedenen API Keys und einige andere Einstellungen

  • Für die Entwicklung oder interne Tests erstellen - Entwicklungsverteilung außerhalb des iOS App Store

    • Host - devapi.project-name.com
    • API Key - Entwicklungsschlüssel
    • FLEX [ 1 ] - Aktivieren
  • Für Client-Tests build - Unternehmensverteilung außerhalb des iOS App Store

    • Host - stgapi.project-name.com
    • API Key - enterprise_key
    • FLEX - Aktivieren
  • Für Produktionserstellung - Verteilung im iOS App Store

    • Host - api.project-name.com
    • API key - app_store_key
    • FLEX - Deaktiviere

Ich kann zwei Einstellungen verwalten, indem ich DEBUG

verwende %Vor%
  

Aber das erste Problem ist die Unternehmensverteilung (für Client-Tests) und iOS   App Store Verteilung (Produktion) Build, für Enterprise und App   Speichern Sie die Verteilung jedes Mal, wenn Sie den Code ändern müssen

  • Für die Unternehmensverteilung

    %Vor%
  • Für die App Store-Verteilung

    %Vor%

Ich suche nach etwas soem

%Vor%

oder andere?

  

Zweites Problem

Gibt es eine Möglichkeit, drei Builds mit unterschiedlichen Namen zu erstellen, ohne ein anderes Ziel zu erstellen?

  • ProductName - Für App Store
  • ProductName-Dev - Für die interne Entwicklung build
  • ProductName-Stg - Für Client Testing (Enterprise) build

Ich habe gerade ein Demo-Projekt und einen vollständigen visuellen Leitfaden erstellt, basierend auf der Lösung von iamnichols

Beste Art zu verwalten Entwicklung, Test und Produktion iOS Builds mit verschiedenen Einstellungen

Ссылка

    
Vineet Choudhary 23.02.2016, 07:37
quelle

2 Antworten

10

Der Unterschied zwischen einem Debug- und einem Releasebuild liegt darin, dass einer davon archiviert und exportiert wird, der andere jedoch lokal über Xcode im Debugger ausgeführt wird. Möglicherweise möchten Sie den Produktions- oder Staging-Build manchmal auch im Debugger ausführen, aber durch das Aussortieren von #ifdef DEBUG werden Sie wahrscheinlich Probleme bekommen.

Dies ist eine vereinfachte Version von dem, was ich mache:

Erstellen Sie individuelle Konfigurationen

Erstellen Sie in den Projekteinstellungen (nicht Ziel) die folgenden Konfigurationen (von den Originalen kopiert):

  • Debug_Dev
  • Debug_Staging
  • Debug_Prod
  • Release_Dev
  • Release_Staging
  • Release_Prod

Beachten Sie, dass Sie, wenn Sie Cocoapods verwenden, die Konfigurationen auf none zurücksetzen, den Inhalt des Pods-Ordners in Ihrem Projekt ( Nicht das Pods-Projekt ) löschen und% co_de erneut ausführen müssen %.

Erstellen Sie ein Schema für jede Umgebung

Anstatt nur ein MyApp-Schema zu erstellen, erstellen Sie Folgendes (das Original duplizieren):

  • MyApp_Dev
  • MyApp_Staging
  • MyApp_Prod

Verwenden Sie in jedem Schema die entsprechenden Debug_ * - und Release_ * -Konfigurationen, wo es angebracht ist.

Fügen Sie ein Präprozessor-Makro hinzu, um Umgebungen zu identifizieren

Fügen Sie ein zusätzliches Präprozessor-Makro hinzu, um zu ermitteln, für welche Umgebung Sie arbeiten.

Klicken Sie in den Projekt-Build-Einstellungen auf das + und fügen Sie eine benutzerdefinierte Build-Einstellung hinzu und nennen Sie es so etwas wie pod install . Fügen Sie dann für jede andere Gruppe von Umgebungen jeweils ein anderes Präprozessormakro hinzu. d. h. MYAPP_ENVIRONMENT , ENV_DEV=1 und ENV_STAGING=1 .

Fügen Sie dann in den c Präprozessor-Makros (wiederum auf Projektebene und nicht auf der Zielebene) diese neue Einstellung von MYAPP_ENVIRONMENT mit ENV_PROD=1 hinzu.

Auf diese Weise können Sie dann wie folgt die Umgebung bestimmen:

%Vor%

Es ist wahrscheinlich eine Menge, aber lass mich wissen, wie es dir geht.

Sie können dann auch verschiedene benutzerdefinierte Build-Einstellungen erstellen, um verschiedene Dinge zu tun, wie den Anzeigenamen Ihrer App zu ändern.

Sie können dies tun, indem Sie beispielsweise eine neue Einstellung namens $(MYAPP_ENVIRONMENT) erstellen, den korrekten Namen für jede Konfiguration festlegen und dann in Ihrem MYAPP_DISPLAY_NAME den Wert des Anzeigenamens des Pakets auf info.plist setzen.

    
liamnichols 23.02.2016, 08:25
quelle
0

Eine einfachere und weniger ausgefeilte Lösung wäre die Verwendung verschiedener Header-Dateien für jede Konfiguration und das Importieren von nur einer von ihnen. Dies ist nicht automatisch, aber es ist ziemlich einfach:

%Vor%     
Arik Segal 23.02.2016 08:41
quelle