Desenvolvimento e publicação de aplicativos para Android – Parte 1

E ai pessoal, tudo certo? Em primeiro lugar gostaria de me desculpar pela ausência excessiva. Foram semanas de muito trabalho e aprendizado em projetos pessoais e claro alguns momentos de descanso e lazer. Nada como curtir bons shows de Rock para recarregar as energias, e ao final de todo esse período nada melhor que ver seu trabalho sendo reconhecido como tenho visto ultimamente.

Com base em todo esse esforço quero começar hoje uma serie de posts trazendo um pouco dos desafios que tenho encontrado na publicação deste projeto, focando principalmente em dois seguimentos: desenvolvimento e métricas. Acredito que toda essa experiência acumulada nas últimas semanas, tanto na construção do sistema quanto em palestras e materiais de leitura ajudaram a construir uma bagagem sólida, a qual vou dividir com todos nessa sequência de posts. Contudo, não pretendo apresentar um passo a passo de como construir aplicativos com códigos e outros materiais dessa natureza, e sim colocar e discutir situações que acredito serem comuns para todos que desenvolvem na plataforma Android, mostrando soluções adotadas para tratar os problemas encontrados.

Para começar vou expor um dos primeiros problemas que enfrentei durante a criação de aplicativos para Android que fazem acesso a banco de dados SQLite: Como manter a compatibilidade entre versões durante a evolução da base de dados. Sempre que lançamos uma atualização de aplicativo temos que gastar uma parcela de tempo com testes de compatibilidade entre as versões mais antigas e a versão atualizada, de modo a garantir que as correções ou novas funcionalidades não gerem erros  ao serem utilizadas com dados armazenados em versões anteriores.

Apenas para demonstrar o problema, imagine uma aplicação versão 1 que contem uma simples tabela com dois campos. Em uma atualização para a versão 2, o desenvolvedor necessita acrescentar um campo na mesma tabela.  É ai que vem a dúvida: Como efetuar a alteração de modo que afete tanto pessoas que não possuem o aplicativo quanto as que já possuem o aplicativo instalado?

A resposta para essa pergunta esta na classe SQLiteOpenHelper, que além de fornecer todo o contexto necessário para o acesso a base de dados, fornece dois métodos muito úteis para o controle de alterações de banco, os quais devem ser sobre escritos para implementar a lógica adequada a nossa realidade:

  • onCreate: Método chamado quando a base de dados é criada pela primeira vez.
  • onUpgrade: Método chamado quando a base de dados precisa ser atualizada.

Para entendermos ainda o processo de atualização da base, é interessante conhecermos, também, o construtor utilizado pela classe SQLiteOpenHelper. Em sua versão simplicada ele recebe 4 parametros: (Context context, String name, SQLiteDatabase.CursorFactory factory, int version). Para efeitos de atualização da base devemos nos atentar para o quarto parâmetro “version”. Ele informa qual é a versão do banco de dados que desejamos abrir e é através deste número que o sistema controla quando a base necessita ser atualizada ou não. Vamos imaginar o seguinte fluxo para entender melhor o processo:

Sabemos que um aplicativo pode sofrer diversas alterações ao longo de sua vida e, além disso, sabemos que atualizações  subseqüentes podem ser lançadas antes mesmo de o usuário efetuar a primeira atualização, o que gera diversos cenários a serem tratados (versões X, Z, W para Y), o que dificulta a definição de um único código que atenda a  todos os usuários de sua aplicação. Felizmente, com base no fluxo apresentado e o auxílio do número da versão da base, podemos desenvolver um comportamento que facilite o controle de todas as alterações independente da versão atual do usuário como podemos ver abaixo:

Desta forma não importa a versão do usuário garantimos a aplicação de todas as atualizações na base do usuário. Por outro lado, temos um código que pode virar um imenso bloco caso as atualizações de banco sejam realizadas de maneira inconseqüente pelo desenvolvedor, o que não chega a ser um problema desde que tomadas devidas precauções com a inclusão dessas atualizações.

Bom por hora é isso, espero ter ajudado. Até breve!

This entry was posted in Tecnologia and tagged , , , , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *