So erstellen Sie mehrere Apps aus einem Projekt mit unterschiedlichen App-Namen, Symbolen, Einstellungen,

9

Das Erstellen von iOS- und Android-Apps mit nur einem Projekt ist ziemlich beeindruckend. Es ist aber auch möglich, mehrere Apps mit unterschiedlichen Namen, Symbolen usw. zu erstellen.

Dies kann sehr hilfreich sein, wenn Sie Apps mit demselben Layout und vielleicht 95% der gleichen Funktionen / Codes / Algorithmen erstellen:

  • verschiedene Zielgruppen (Rezepte App für Fitness, Veganer, Gemüse, Öko, ...)
  • verschiedene Sportarten (Nachrichten für Fußball, Basketball, Tennis ...)
  • verschiedene Kunden (Business-App für Kunden A, B und C)
  • ...

Dinge, die je nach App anders sein können:

  • App-Name
  • App-Symbole
  • SplashScreen
  • Design
  • Einstellungen (API URL, ...)
  • Etwas Code (Standardfunktion / Komponenten könnten möglicherweise durch anwendungsbasierte benutzerdefinierte Dateien überschrieben werden)

Vielleicht wäre es die perfekte Lösung, wenn Sie ein Verzeichnis Flavors haben, in das Sie alle Dateien einfügen können, die Sie zum Überschreiben der Standard-Code-Base verwenden möchten.

Jemand hier, der etwas Ähnliches oder irgendwelche Ideen veröffentlicht hat, wie man das löst?

    
rakete 13.11.2017, 13:58
quelle

8 Antworten

3

Dies ist ein Problem, das ich in meinen letzten Tagen bei meinen Projekten gelöst habe. Und ich denke, ich habe eine gute (nicht perfekte) Lösung bisher.

Idee. Wir haben keine integrierten Funktionen, die uns bei der Bearbeitung dieses Falls helfen. Daher können wir einige externe Manipulationen verwenden, die diese Aufgabe erfüllen. Was wir brauchen, sind nur mehrere Android- und iOS-Projekte und eine einzige JS-Code-Basis.

Implementierung. Ich bin zu dieser Projektstruktur gekommen:

  • ios
  • Android
  • Manager
  • src

ios und android Ordner sind Ihnen gut bekannt, sie sind native Projektordner.

src ist ein Ordner mit JS-Code, den Sie beliebig organisieren können

manager ist am interessantesten. Hier können wir mehrere native Projektdateien speichern. Wir können mehrere native Projektordner haben, zum Beispiel app1-android app1-ios app2-android app2-ios . Und wenn wir an app1 arbeiten wollen, kopieren wir einfach app1-ios und app1-android in unsere Ordner root ios und android , also ist das eigentliche Projekt app1 . Wenn wir mit app1 fertig sind, können wir die Ordner android und ios in unserem manager speichern und dann einfach app2-ios und app2-android in root ios und android kopieren. Und wir sind alle gut darin, unsere app2 zu entwickeln.

Wir können es manuell machen. Aber wir sind Entwickler und wir können es viel einfacher machen. Ich habe ein PHP-Skript geschrieben, das es so einfach macht, php save.php -a app1 und php set.php -a app1 von manager nach root und zurück zu kopieren. Außerdem kümmert es sich darum, einige unwichtige Mitarbeiter (Pods-Ordner in iOS, Build in Android usw.) nicht zu kopieren und pod install auszuführen, um sicherzustellen, dass wir alle Pods im aktuellen Projekt haben.

Ich bleibe bei einer package.json Datei, um alle npm Module einmal installiert zu haben, also muss ich npm install nicht nach jedem Projektwechsel ausführen.

Schließlich können wir in einem Repo so viele Projekte haben, wie wir möchten, wir können jedes unabhängig anpassen.

PS Wenn Sie möchten, dass ich meine Skripte teile, mache ich es so schnell wie möglich (brauche etwas Zeit, um es auf github vorzubereiten und detailliertere Anweisungen zu schreiben), lass es mich einfach kennt.

    
Roman Osypov 21.11.2017 20:41
quelle
1

Ich habe dies für ungefähr 100 verschiedene native Apps pro Plattform (iOS / Android) getan, die die gleiche Code-Basis teilen. Ich leite dieses Setup seit ungefähr 2 Jahren und bin immer noch glücklich damit.

Hier ist der iOS-Teil:

Ich verwende Ziele mit verschiedenen plist / pch -Dateien.

Speichern Sie Dateien, die sich je nach App unterscheiden, in separaten Verzeichnissen, die nach dem App-Namen benannt sind. Überprüfen Sie das entsprechende Ziel, wenn Sie die Datei zum Projekt hinzufügen:

Wenn Sie denselben Dateinamen verwenden, können Sie die Datei für verschiedene Ziele "überschreiben".

Der Android-Teil:

Ich benutze ein Modul für den gemeinsamen Teil und ein Modul pro App für das Customizing. Ich benutze auch Gradle-Variablen für allgemeine Wertedefinitionen ( minSdkVersion , compileSdkVersion usw.). Nur die folgenden Einstellungen unterscheiden sich pro App: applicationId , versionCode , versionName . Hier ist eine Beispieldatei für eine benutzerdefinierte App:

%Vor%

Sie können die Ressourcen (App-Symbol, Bilder, Zeichenfolgen usw.) im entsprechenden res -Ordner eines App-Moduls überschreiben (verwenden Sie denselben Dateinamen für die gleiche Ressource).

Vergessen Sie nicht, alle Module in settings.gradle einzufügen.

    
artkoenig 24.11.2017 14:15
quelle
0

Ich schrieb über die 1-2-3 von React Native Templates was dich mit deinen Zielen ziemlich weit bringen soll.

Die TLDR; Es gibt Ihnen die Möglichkeit, das Projekt-Muster so einzurichten, dass Sie alle Ihre npm- und nativen Abhängigkeiten wiederverwenden (native Abhängigkeiten werden automatisch für Sie verlinkt). Das würde dir definitiv helfen mit ...

  • App-Name
  • Design
  • Einstellungen
  • Standardcode / Helfer

Ich glaube nicht, dass es dir hilft ...

  • App-Symbole
  • Begrüßungsbildschirm

Im Grunde wird es Ihnen helfen, alles in Ihrem Projektstammordner ( ./ ) und App ( ./app ) zu duplizieren, aber nichts in den Ordnern ./ios oder ./android , es sei denn, sie sind als Abhängigkeiten enthalten. Es kann einen Weg geben, App Icons und Splash Screens als Abhängigkeiten zu machen, aber ich bin mir nicht sicher. Wenn Sie es herausfinden, lassen Sie es mich wissen.

Lesen Sie den Artikel hier ... 1-2-3's von Native Vorlagen reagieren

    
Chris Geirman 19.11.2017 21:12
quelle
0

Wir machen etwas, das dem entspricht, was Sie tun möchten, aber in einem viel eingeschränkteren Bereich. Wir haben verschiedene Builds unserer App, jede mit einem Namen, Logo, Design, API URL ...

Es ist nur für Android gedacht, also sind es im Wesentlichen ein paar Geschmacksrichtungen wie in den obigen Kommentaren erwähnt. (Ich weiß nicht, was das entsprechende System für iOS ist)

Aber wir verwenden auch Ссылка , das eine Möglichkeit bietet, diese spezifischen Variablen / Einstellungen zwischen den nativen ( Android und iOS) und JavaScript-Code. Alles, was Sie brauchen, ist eine .env.myversion -Datei einzurichten, die die von Ihnen benötigten Einstellungen enthält, etwa:

API_URL=https://my.server.com/ LOGO_FILE=/path/to/the/right/logo COLORSET=shades_of_blue

Die korrekte Datei wird zum Zeitpunkt des Erstellens eingezogen, sodass Ihre App über die korrekte Version jeder Einstellung verfügt. Sie können diese Variablen dann innerhalb Ihres Codes aufrufen und basierend auf der von Ihnen verwendeten Version verzweigen. Der Vorteil ist, dass es überall funktioniert. Der Nachteil dabei ist, dass Sie möglicherweise etwas zusätzliches Zeug mit Ihren Apps verschicken, wenn Sie all dies in der JS-Schicht haben, anstatt es im Build-System mit Aromen zu definieren. Ich denke, es ist ein Kompromiss zwischen Komfort und Leistung / Effizienz, den Sie basierend auf Ihrem Anwendungsfall entscheiden müssen.

    
Laurent S 21.11.2017 11:07
quelle
0

In Xcode können Sie Ihr Target einfach duplizieren und ein neues mit einem neuen plist erstellen, was bedeutet, dass Sie den App-Namen, das Icon, das Splash-Bundle und andere Einstellungen nach Bedarf ändern können.

    
dijipiji 21.11.2017 11:11
quelle
0

In XCode können Sie verschiedene Build-Konfigurationen für verschiedene Anwendungen in einem Projekt erstellen (Dev, Alpha, Beta, Prod, Debug, Release). Mit Hilfe dieser Lösung können Sie AppName, AppIcon, BundleId ändern , URLs, SplashScreen usw. für verschiedene Builds.

    
Sumit Dhariwal 22.11.2017 08:32
quelle
0

Sie können mehrere Ziele verwenden.

Sie können das Ziel in den folgenden Schritten erstellen:

Gehe zum Projektnavigator - & gt; Rechtsklick auf den App-Namen unter target - & gt; Wählen Sie Duplizieren - & gt; Wählen Sie im Popup-Menü Duplicate only .

Und du wirst ein doppeltes Ziel finden. Jetzt können Sie ein anderes oder zusätzliches app icon und launch image in Ihren Assets aufnehmen und für dieses Ziel können Sie es setzen.

Siehe unten Screenshots zum besseren Verständnis!

Wählen Sie also das neu festgelegte Ziel aus und nehmen Sie Änderungen vor, indem Sie es aus general tab auswählen.

Sie können sich auf dieses großartige Tutorial von Appcoda beziehen!

    
Lion 23.11.2017 13:45
quelle
0

Ich habe eine Website erstellt, auf der Benutzer ihren Inhalt, ihre Symbole, ihren Namen und ihren Paketnamen sowie viele andere Optionen wie etwa das Advertising SDK in der App angeben können. Nach einer kleinen Zahlung kann der Nutzer APK mit Zertifikat erstellen oder App manuell signieren. Die Generierung von apk dauert ein paar Sekunden. APK ist bereit für den Upload in PlayStore. Dies ist ein Projekt mit hohem Preis, aber mein Kunde ist glücklich.

Wie es gemacht?

  1. Erstellen Sie einige Vorlagen für Code. Sie können es auf einigen Websites kaufen.
  2. Split optionalen Code in separaten Dateien
  3. Wenn Sie den Code nicht in eine separate Datei aufteilen können (z. B. für AndroidManifest.xml), können Sie einen Kommentar mit einigen Schlüsseln (Anweisungen für die Nachbearbeitung)
  4. einfügen
  5. Erzeugt Symbole aus Benutzerinhalten / angegebenen Symbolen.
  6. Kopieren Sie auf Benutzeranforderung alle ausgewählten Dateien in dasselbe Verzeichnis, entfernen Sie mit dem einfachen Textprozessor unnötigen Code (verwenden Sie die Kommentare aus Schritt 3), kompilieren Sie ihn, senden Sie APK an den Benutzer.
bukkojot 24.11.2017 04:27
quelle

Tags und Links