Eu tenho um aplicativo pago no Android Market, no entanto, quero lançar uma versão gratuita suportada por anúncios.
A maneira mais fácil de fazer isso foi configurar uma ramificação no meu repositório do subversion que possua o código adicional para adicionar os anúncios. No entanto, quando fui enviar isso ao mercado Android, eles exigem nomes de pacotes exclusivos. Essa solução não funciona mais para mim porque eu teria que alterar o pacote de todos os arquivos de classe, o que tornaria muito doloroso a fusão do tronco e da ramificação.
Qual é a melhor maneira de manter esses dois projetos juntos, compartilhando patches, mas com um pacote diferente?
version-control
android
svn
Malfist
fonte
fonte
Respostas:
Você já considerou as diretivas do compilador ?
Exemplo:
Você pode manter exatamente a mesma base de código e direcionar as duas compilações usando dois scripts de compilação separados ou um parametrável.
Para fazer isso com Java, leia isto e isto . E talvez isso .
fonte
Somente seu pacote de aplicativos deve ser exclusivo. Veja aqui . Esse é o pacote declarado no seu arquivo de manifesto. Você pode ter a maior parte do seu código
com.mydomain.myapp
e apenas ter uma atividade principal diferentecom.mydomain.myapp.free
.fonte
Se você realmente deseja fazer a separação, a melhor maneira é configurá-la como duas partes do mesmo repositório. Dessa forma, você pode pelo menos mesclar alterações entre os diferentes ramos. Se você quiser manter as coisas completamente separadas, estará executando muitos arquivos de correção esquecidos.
Eu fiz isso e, francamente, não é uma ótima estratégia na prática. Muito melhor, especialmente em ambientes compilados, é ter um processo de compilação separado, gratuito e pago, para que haja uma base de código em vez de duas. Se houver duas bases de código, as coisas irão divergir.
fonte
O controle de versão é uma maneira ruim de gerenciar coisas como esta. Você acabará com um pesadelo de manutenção - dois aplicativos separados que precisam ser quase idênticos.
Você já considerou uma solução de múltiplos projetos? (caveot: na verdade, eu não fiz isso, mas parece viável, e acho que o Android permitirá. Vou tentar mais tarde e ter certeza.) Compile todo o código do seu aplicativo em uma jarra de projeto principal . Em seguida, crie dois aplicativos Android separados, um para a versão paga e outro para a versão gratuita. Isso resolverá o problema de nomeação de pacotes. Esses aplicativos delegam apenas o jar principal para praticamente tudo, exceto que a versão do seu anúncio incluirá o código para dar suporte aos anúncios.
Você também pode achar interessante essa discussão sobre um tópico semelhante .
fonte
A criação de seu aplicativo usando a
feature toggle
permite atingir seu objetivo, mas pode ser necessário refazer muito código.Ao definir 2 (eu recomendaria 3) o ambiente de contêiner de recursos em um arquivo .ini, como:
Dessa forma, você possui uma versão uniforme e requer apenas uma ramificação na fonte de controle de versão
Em seus scripts específicos, é necessário verificar se o recurso está autorizado; caso contrário, você não o exibe.
fonte