Melhor maneira de gerar tanto “livre / de demonstração” e aplicativos comerciais a partir do mesmo código fonte?

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

  •  07-07-2019
  •  | 
  •  

Pergunta

Eu gostaria de oferecer duas versões diferentes do meu iPhone app na App Store -. Um livre que é limitado pelo número de itens exibidos por meio do aplicativo, e outra completamente ilimitada

O código fonte para ambos os aplicativos será exatamente o mesmo, a única diferença seria o banco de dados SQLite que armazena os itens no aplicativo.

Eu entendo que as duas versões do aplicativo precisará ter diferentes nomes de pacote e ícones diferentes. Estou tentando encontrar uma maneira de evitar completamente copiar o diretório do código fonte para ser capaz de personalizar algumas dessas coisas:. De banco de dados, ícones, cordas de bico, etc

Existe uma boa maneira de fazer isso sem duplicar tudo?

Foi útil?

Solução

Basta criar um segundo alvo em seu projeto. Uma pode ser a aplicação completa, que inclui o banco de dados completo, eo novo alvo será a sua construção demo, com o banco de dados de demonstração. Fazemos isso com Cruzadas, e funciona bem. Você pode, então, manter todas as suas fontes em um só lugar, e não se preocupar com as coisas ficando fora de sincronia.

Outras dicas

Faça uso criterioso de compilação condicional. Eu não sei o idioma que você está trabalhando, mas em C / C ++ condicionais compilação é feito usando o pré-processador macro e IFDEFs. Você poderia escrever um código algo como:

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

Quando você constrói o programa que você fornecer os appopriate definições de macro na linha de comando do compilador.

gcc program.cc -o program.o -DFULL_APP

Você pode usar compilação condicional e o pré-processador macro em uma variedade de maneiras de ativar ou desativar várias funções no executável ou modificar outros aspectos do seu programa.

Também é importante notar que, se um usuário decide fazer o upgrade para a versão completa, se você não tiver algum mecanismo para transferir sobre os dados existentes você provavelmente vai ver uma reação negativa de seus usuários. Se o conteúdo dos dados são pequenos e podem ser representadas principalmente por texto, gostaria de sugerir a implementação de um esquema de URL para passar sobre isso.

Crie um novo projeto, então tê-lo de referência (não criar uma cópia local) dos mesmos arquivos de origem como o projeto original.

Existe um certo (específico iPhone?) Razão que você precisa ter diferentes bases de dados SQLite para ambas as versões do seu aplicativo?

Se não, você poderia implementar um mecanismo de licenciamento com as chaves permutáveis ??que lhe permitiu compilar seus codebases individuais com apenas um arquivo alterado. Em tempo de execução, o aplicativo iria verificar que arquivo e quer permitir o armazenamento reduzida ou ilimitado. benefício adicional (caso do iPhone loja suporta essas coisas) seria a de que ele deve ser muito simples para desbloquear a versão completa, sem perda de dados.

É claro que tal solução poderia prejudicar o seu negócio se seus clientes são tech-savvy e maligna e seu código é fácil de decompor.

Eu ter explorado isso e parece que fazer um "download uma experimentação e atualizá-lo através da web" viola os termos da App Store. Ele parece que você realmente precisa de duas versões separadas do aplicativo na loja. (Referência de volta para a entrada de Ben Gottlieb). Então uma fonte, duas distros.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top