Il modo migliore per generare app "gratuite / demo" e commerciali dallo stesso codice sorgente?

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

  •  07-07-2019
  •  | 
  •  

Domanda

Vorrei fornire due diverse versioni della mia app per iPhone sull'App Store: una gratuita che è limitata dal numero di elementi visualizzati tramite l'applicazione e un'altra completamente illimitata.

Il codice sorgente per entrambe le app sarà esattamente lo stesso, l'unica differenza sarebbe il database SQLite che memorizza gli elementi nell'app.

Comprendo che entrambe le versioni dell'app dovranno avere nomi di bundle diversi e icone diverse. Sto cercando di trovare un modo per evitare di copiare completamente la directory del codice sorgente per poter personalizzare alcune di queste cose: database, icone, stringhe di pennini, ecc.

C'è un buon modo per farlo senza duplicare tutto?

È stato utile?

Soluzione

Crea un secondo target nel tuo progetto. Una può essere l'applicazione completa, che include l'intero database, e il nuovo obiettivo sarà la tua build demo, con il database demo. Lo facciamo con i cruciverba e funziona benissimo. Puoi quindi conservare tutte le tue fonti in un unico posto e non preoccuparti che le cose si sincronizzino.

Altri suggerimenti

Fai un uso giudizioso della compilazione condizionale. Non so in che lingua stai lavorando, ma nella compilazione dei condizionali C / C ++ viene fatta usando il preprocessore macro e ifdefs. Scriveresti un codice simile a:

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

Quando si crea il programma, si forniscono le definizioni di macro dell'appopriate nella riga di comando del compilatore.

gcc program.cc -o program.o -DFULL_APP

È possibile utilizzare la compilazione condizionale e il preprocessore macro in vari modi per attivare o disattivare varie funzionalità nell'eseguibile o modificare altri aspetti del programma.

Vale anche la pena notare che se un utente decide di passare alla versione completa, se non si dispone di un meccanismo per trasferire i dati esistenti, è probabile che si verifichino reazioni negative da parte dei propri utenti. Se il contenuto dei dati è piccolo e può essere rappresentato principalmente da testo, suggerirei di implementare uno schema URL per il passaggio.

Crea un nuovo progetto, quindi fai riferimento (non crea una copia locale) degli stessi file di origine del progetto originale.

Esiste un motivo (specifico per iPhone?) per cui è necessario disporre di database SQLite diversi per entrambe le versioni della tua app?

In caso contrario, è possibile implementare un meccanismo di licenza con chiavi intercambiabili che consente di compilare le singole basi di codice con un solo file modificato. In fase di esecuzione, l'app controlla tale file e consente l'archiviazione ridotta o illimitata. Un ulteriore vantaggio (se iPhone-store supporta queste cose) sarebbe che sarebbe molto semplice sbloccare la versione completa senza perdere dati.

Naturalmente, una soluzione del genere potrebbe danneggiare la tua azienda se i tuoi clienti sono esperti di tecnologia e maligni e il tuo codice è facile da decompilare.

L'ho esplorato e sembra che facendo una "scarica una versione di prova e aggiornala attraverso il web" viola i termini dell'app store. Sembra che avrai davvero bisogno di due versioni separate dell'app nello store. (riferendosi alla voce di Ben Gottlieb). Quindi una fonte, due distro.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top