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:
Dinge, die je nach App anders sein können:
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?
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
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.
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:
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.
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 ...
Ich glaube nicht, dass es dir hilft ...
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.
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.
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.
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!
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?
Tags und Links android ios react-native