Der beste Weg, sowohl „frei / demo“ und kommerzielle Anwendungen aus dem gleichen Quellcode zu generieren?

StackOverflow https://stackoverflow.com/questions/274785

  •  07-07-2019
  •  | 
  •  

Frage

Ich möchte zwei im App Store verschiedene Versionen meiner iPhone-App zur Verfügung zu stellen - eine freie, die durch die Anzahl der angezeigten Elemente durch die Anwendung beschränkt ist, und eine andere völlig unbegrenzt

.

Der Quellcode für beiden Anwendungen wird genau die gleiche, der einzige Unterschied wäre die SQLite-Datenbank sein, die die Elemente in der App gespeichert werden.

Ich verstehe, dass beide Versionen der App verschiedene Bündel Namen haben müssen, und andere Symbole. Ich versuche, einen Weg zu finden, vollständig den Quellcode-Verzeichnis zu kopieren zu vermeiden, einige dieser Dinge in der Lage anpassen. Datenbank, Symbolen, nib Strings, etc

Gibt es einen guten Weg, dies zu tun, ohne alles zu duplizieren?

War es hilfreich?

Lösung

Nur ein zweites Ziel in Ihrem Projekt erstellen. Man kann die voll funktionsfähige Anwendung sein, die die gesamte Datenbank enthält, und das neue Ziel wird Ihre Demo zu bauen, mit der Demo-Datenbank sein. Wir tun dies mit Rätseln, und es funktioniert gut. Sie können dann an einem Ort alle Ihre Quelle halten, und sich keine Sorgen über die Dinge nicht mehr synchron zu bekommen.

Andere Tipps

Machen vernünftige Nutzung bedingter Kompilierung. Ich weiß nicht, welche Sprache in dem Sie arbeiten, aber in C / C ++ conditionals Kompilierung wird mit dem Makro-Präprozessor und ifdefs getan. Sie würden Code so etwas wie schreiben:

#ifdef FULL_APP
  // unlimited size
  #define SIZE -1
#else
  #define SIZE 100
#endif

Wenn Sie das Programm bauen liefern Sie die appopriate Makrodefinitionen auf der Compiler-Befehlszeile.

gcc program.cc -o program.o -DFULL_APP

Sie können die bedingte Kompilierung verwenden und den Makro-Präprozessor in einer Vielzahl von Möglichkeiten, verschiedenen Funktionen in der ausführbaren Datei zu aktivieren oder zu deaktivieren oder andere Aspekte des Programms ändern.

Es ist auch erwähnenswert, dass, wenn ein Benutzer auf die Vollversion aktualisieren entscheidet, wenn Sie über die vorhandenen Daten übertragen nicht einen Mechanismus an Ort und Stelle haben, werden Sie wahrscheinlich eine negative Reaktion von Ihren Benutzern sehen. Wenn der Inhalt der Daten klein ist und hauptsächlich durch Text dargestellt werden, würde ich vorschlagen, es für das Bestehen über ein URL-Schema zu implementieren.

Erstellen Sie ein neues Projekt, dann haben sie Referenz (keine lokale Kopie erstellen) der gleichen Quelldateien wie das ursprüngliche Projekt.

Gibt es eine bestimmte (iPhone-spezifisch?) Grund, dass Sie verschiedene SQLite-Datenbanken für beide Versionen der App haben müssen?

Wenn nicht, könnten Sie einen Lizenzmechanismus mit austauschbaren Tasten implementieren, die Sie Ihren einzelnen Codebases mit nur einer Datei geändert zu kompilieren erlaubt. Zur Laufzeit würde Ihre Anwendung diese Datei überprüfen und entweder die Möglichkeit, reduziert oder unbegrenzten Speicherplatz. Zusätzlicher Vorteil (wenn iPhone-Speicher solche Dinge unterstützt) wäre, dass es sehr einfach sein sollte, die Vollversion ohne den Verlust von Daten zu entsperren.

Natürlich ist eine solche Lösung Ihr Unternehmen schaden könnte, wenn Ihre Kunden sind technisch versierte und verleumden und Ihr Code ist leicht zu dekompilieren.

Ich habe dies erforscht, und es scheint, dass eine „Demoversion herunterladen und es über das Internet aktualisiert“ tun, um die Bedingungen des App Store verstößt. Es scheint Sie wirklich zwei verschiedene Versionen der App im Speicher benötigen. (Referenzierung zurück Eintrag zu Ben Gottlieb). So eine Quelle, zwei distros.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top