Le meilleur moyen de générer des applications «gratuites / de démonstration» et commerciales à partir du même code source?

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

  •  07-07-2019
  •  | 
  •  

Question

Je souhaite proposer deux versions de mon application iPhone sur l'App Store: une version gratuite, limitée par le nombre d'éléments affichés dans l'application, et une autre totalement illimitée.

Le code source des deux applications sera exactement le même, la seule différence serait la base de données SQLite qui stocke les éléments dans l'application.

Je comprends que les deux versions de l'application devront avoir des noms de bundles différents et des icônes différentes. J'essaie de trouver un moyen d'éviter de copier complètement le répertoire du code source afin de pouvoir personnaliser certaines choses: base de données, icônes, chaînes de caractères, etc.

Existe-t-il un bon moyen de faire cela sans tout dupliquer?

Était-ce utile?

La solution

Créez simplement une deuxième cible dans votre projet. L'une d'entre elles peut être l'application complète, qui comprend la base de données complète, et la nouvelle cible sera votre version de démonstration, avec la base de données de démonstration. Nous faisons cela avec Crosswords, et cela fonctionne bien. Vous pouvez alors conserver toutes vos sources au même endroit et ne pas vous inquiéter des problèmes de synchronisation.

Autres conseils

Faites un usage judicieux de la compilation conditionnelle. Je ne sais pas dans quelle langue vous travaillez, mais en C / C ++, la compilation des conditions est effectuée à l'aide du préprocesseur de macros et de ifdefs. Vous écririez du code comme:

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

Lorsque vous générez le programme, vous fournissez les définitions de macro appropriées sur la ligne de commande du compilateur.

gcc program.cc -o program.o -DFULL_APP

Vous pouvez utiliser la compilation conditionnelle et le préprocesseur de macro de différentes façons pour activer ou désactiver diverses fonctionnalités de l'exécutable ou modifier d'autres aspects de votre programme.

Il convient également de noter que si un utilisateur décide de passer à la version complète, si vous ne disposez pas d’un mécanisme pour transférer les données existantes, vous obtiendrez probablement une réaction négative de vos utilisateurs. Si le contenu des données est petit et peut être principalement représenté par du texte, je suggérerais de mettre en place un schéma d'URL pour le transférer.

Créez un nouveau projet, puis faites-le référencer (et non pas créer une copie locale) des mêmes fichiers source que le projet d'origine.

Existe-t-il une raison (spécifique à l'iPhone?) pour laquelle vous devez disposer de bases de données SQLite différentes pour les deux versions de votre application?

Sinon, vous pouvez implémenter un mécanisme de licence avec des clés échangeables vous permettant de compiler vos bases de code uniques avec un seul fichier modifié. Au moment de l'exécution, votre application vérifierait ce fichier et autoriserait un stockage réduit ou illimité. Un avantage supplémentaire (si iPhone-store prend en charge de telles choses) serait qu’il devrait être très simple de déverrouiller la version complète sans perdre de données.

Bien sûr, une telle solution pourrait nuire à votre activité si vos clients sont férus de technologie et malins et si votre code est facile à décompiler.

J'ai exploré ce problème et il semble que vous fassiez "télécharger une version d'évaluation et la mettre à niveau via le Web". viole les termes de l'app store. Il semble que vous aurez vraiment besoin de deux versions distinctes de l'application dans le magasin. (renvoyant à l'entrée de Ben Gottlieb). Donc, une source, deux distributions.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top