segunda-feira, 25 de março de 2013

Como acelerar um emulador Android



Muitos desenvolvedores tem o problema com os emuladores que ficam muito lentos para iniciar e executar algumas tarefas com gráficos em seus computadores, essa lentidão causa um mal estar muito grande, pois temos que esperar um bom tempo para poder rodar uma simples aplicação. Pensando nisso o Google programou formas para se acelerar o emulador.

Existem três formas para se acelerar o emulador:

  • Usando snapshot
  • Usando aceleração de  hardware x86 na imagem do Android
  • Usando aceleração GPU

Usando snapshot

Sendo a inicialização do emulador do Android muito lenda, foi criado um meio de se trabalhar com snapshot das imagens do emulador que funciona da seguinte maneira após o primeiro boot o estado do emulador é gravado no disco rígido e na próxima inicialização o estado é lido para a memória sem passar pelos demorados procedimentos de inicialização do Android reduzindo o tempo de inicialização.

Utilizando o snapshot do Android

Primeiro você tem que habilitar o Snapshot na criação do AVD conforme se ver na imagem abaixo:

Criação de AVD com Snapshot
Criação de AVD com Snapshot

Após a criação do AVD inicialize-o e verifique se está ativada a opção de Salvar para snapshot conforme a imagem abaixo:

Habilitar Salvamento para Snapshot
Habilitar Salvamento para Snapshot

Depois da primeira inicializada do AVD as próximas serão significantemente mais rápidas.


Aceleração de Hardware x86

Para a aceleração de hardware x86 é necessário ser usada uma imagem x86 do Android pois o Emulador Android usa por padrão uma imagem ARM. E como essa arquitetura é muito diferente da x86 o emulador precisa fazer uma conversão de todas as instruções de ARM para o x86 e isso causa uma perca de performance.

Primeiro passo para se ter a aceleração de hardware x86 é baixar no Android SDK Manager os seguintes itens:

  • Intel x86 Emulador Accelerator (HAXM) e
  • Intel x86 Atom System Image (Para cada versão de API do Android que se usar para o desenvolvimento)


Conforme imagem abaixo:


Download dos componentes de Intel x86
Download de Intel x86

Para instalação do HAXM é necessário ir ao diretório extra  do SDK do Android e executar o seguinte arquivo: haxm-windows_r02.exe.

Agora é só criar um AVD usando uma imagem Intel Atom (x86) conforme imagem abaixo:



O desempenho da imagem do emulador  fica sensivelmente visível, mas esse recurso só funciona se seu computador possui  um processador Intel com suporte a VT-x.  Para mais informações sobre HAXM, acesse http://www.intel.com/software/android.


 Usando aceleração GPU OpenGL

O Emulador Android por padrão vem com a aceleração de GPU desabilitada e pode ser habilitada na criação do AVD, clicando na opção Use Host GPU, conforme imagem abaixo:

Aceleração por GPU
Aceleração por GPU


A aceleração GPU não é compatível com snapshot.

A aceleração GPU torna seu AVD bastante rápido para os testes de seus aplicativos, mais não tendo o snapshot o torna lento na inicialização.

Nos meus testes foi a melhor opção, pois a execução dos aplicativos ficou mais rápido mesmo tendo a inicialização se tornado mais lenta, é só inicializar a AVD antes dos testes e só desligar depois que terminar os trabalhos, assim se economizar um bom tempo durante os vários testes após cada mudança de código e compilação.

Espero ter ajudado com mais esse post.




















quinta-feira, 21 de março de 2013

Decompilação de Programas Android




Procurando na internet um meio de vê como extrai o código fonte de uma aplicação Android,  achei os links acima, o primeiro ensina como descompactar o apk extraindo os códigos fontes e também os XML de layout, o segundo é uma ferramenta disponibilizada no fórum da XDA que faz todo o trabalho de decompilação dos apks e pode fazer também a alteração dos fontes e posterior compilação novamente.

Com base nestes dois links fiz um BAT para decompilar um APK mais adequado e simples para minha utilização. Disponibilizo aqui para quem queira dá uma estudada.

Aviso: Respeite os direitos autorais.

Faça o Download nestes links: 

Depois de descompactado ele fica com a seguinte estrutura:

Estrutura de diretório BAT de decompilação
Estrutura do Diretório

A estrutura de diretórios tem os seguintes pastas:
  • apks – Onde se coloca os arquivos apk que se quer decompilar.
  • apktool – Arquivos do apktool.
  • Decompilados – Onde um BAT descompacta os arquivos.
  • dex2jar – Utilitário para gerar o jar com o código fonte do apk.
  • Other – Outros arquivos necessários para descompactar o apk.
  • decompila.bat – Arquivo de lote que executar as tarefas necessárias para a decompilação do apk.

É só executar o arquivo decompila.bat e será apresentado a tela de comando do DOS.

Execução do BAT decomplica.bat
Execução do BAT decompila.bat

Escolha a opção 1 para se escolher um APK para  decompilar e será lidos os arquivos do diretório apks e será criado uma lista para escolha do apk para decompilar.


Tela de escolha do APK
Escolha do APK 

Após a escolha do apk para decompilar execute as opções 2,3,4 para gerar os arquivos descompactados e a opção número 5 para sair do BAT. Será criado no diretório Decompilados a seguinte estrutura:

Estrutura criada pela decompilação
Estrutura criada pela decompilação

Onde:
  • MinhaAplicacao – É o nome do programa selecionado para decompilação.
  • MinhaAplicacao.apk  - É o diretório onde se encontra os fontes do apk no arquivo jar criado.
  • Xml – É o diretório com os arquivos  xml dos layouts do apk.


A visualização do fonte do apk é feita com o programa Java Decompiler do site: http://java.decompiler.free.fr.


Para visualizar o fonte descompacte o arquivo jd-gui.rar  e abri o programa Java Decompiler e navegar até o diretório MinhaAplicacao.apk e escolher o arquivo classes_dex2jar.jar, será apresentado a tela seguinte:

Visualização do código fonte
Visualização do código fonte

Logo abaixo tem a comparação dos código originais e os gerados pela decompilação:

Comparação dos códigos fontes originais e decompilados
Comparação dos códigos fontes originais e decompilados


Espero que este tutorial seja de ajuda para alguém. 




Android – Como começar a programar



O Android foi inicialmente desenvolvido pela Google e é um sistema baseado em kernel Linux.  A Google disponibiliza várias bibliotecas e um SDK para estimular os desenvolvedores à criação e popularização do sistema Android.

Requisitos para desenvolvimento com android
  • Java development Kit (SDK)
  • ADT Bundle

Java development Kit (SDK)
        
        O java development Kit é necessário para a compilação dos programas. O link para downloads é: 
                  www.oracle.com/technetwork/java/javase/downloads/index.html.

ADT Bundle

   O ADT Bundle é disponibilizado no site do developer.android.com e tem todos os componentes necessários para começar  rapidamente o desenvolvimento de aplicativos Android.
       O pacote ADT Bundle contém os seguintes componentes:   


  • Eclipse + ADT Plugin
  • Android SDK Tools
  • Android Platform-tools
  • A mais recente plataforma Android
  • A imagem mais recente do sistema Android para o emulador
O download pode ser feito em: http://developer.android.com/sdk/índex.html#download.

É só fazer o download e descompactar em uma pasta e ficará a seguinte estrutura de diretórios:

Estrutura do diretório do ADT Bundle
Estrutura do diretório do ADT Bundle

Depois é só executar o SDK Manager.exe e será apresentado a imagem abaixo com a última API do Android instalada e onde se pode marcar qualquer outras que se queira trabalhar e fazer a instalação.

Execução do Android SDK Manager
Execução do Android SDK Manager

Agora depois que se executa as instalações dos pacotes necessários vamos criar um novo dispositivo virtual para os teste das aplicações. 


Criação de Máquinas virtuais para os testes das aplicações.

Após a instalação se faz necessário que se crie um dispositivo virtual para a realização dos testes das aplicações, então vamos lá primeiro clique no menu em Tools e escolha a opção Manage AVDs, será apresentada a tela abaixo:

Execução do AVD Manager
Execução do AVD Manager


Nesta tela clique em New e será apresentada a tela de criação de nova AVD com os seguintes campos para serem completados:
  • AVD Name: Nome que sera dado ao AVD.
  • Device: Tipo de dispositivo predefinido.
  • Target: Qual API sera usuada.
  • CPU/ABI: Tipo de CPU utilizada.
  • Keyboard:  Escolhe se um teclado será visível.
  • Skin: Mostra um skin com controle de hardware.
  • Front Camera: Escolhe uma camera frontal.
  • Back Camera: Escolhe uma camera traseira.
  • Memory Options: Opções de memória.
  • Internal Storage: O tamanho do armazenamento interno do dispositivo.
  • SD Card: O tamanho do armazenamento externo do dispositivo.
  • Emulation Options: Opções de emulation que podem ser Snapshot ou Host GPU.
Criação de nova AVD
Criação de nova AVD

Após completar e escolher todos os valores para os campos clique em OK e depois de alguns instantes será criado um novo AVD.

Podemos agora executar o AVD selecionando o recém criado AVD e clicando em Start.

AVD sendo executada
AVD sendo executada


Criação de um projeto de teste

Agora o próximo passo vai ser criar um projeto para testes no eclipse que já veio junto com o ADT Bundle.
  • Execute o eclipse
  • Clique no menu File à New à Android Project Application
  • Na tela  que aparece informe as informações seguintes:
    • Application Name
    • Project  Name
    • Package Name
    • Minimum Required SDK
    • Target SDK
    • Compile With
    • Theme

Criação de nova aplicação
Criação de nova aplicação


  • Clique em Next e na tela Configure Project complete as informações requeridas
    • Create custom launcher icon
    • Create activity
    • Mark this Project as a library
    • Create Project in Workspace
    • Working sets
Tela de configuração do projeto
Tela de configuração do projeto

  • Clique em Next novamente e na tela seguinte configure os ícones.


Tela de configuração dos icones
Tela de configuração dos icones

  • Clique em Next novamente e selecione o tipo de Active inicial.
  • Clique em Next novamente e complete os campos seguintes:
    • Activity Name
    • Layout Name
    • Navigaton Type
Tela de criação de Activity principal
Tela de criação de Activity principal

  • Clique em Finish para finalizar a criação do projeto.


    Execução do aplicativo em um AVD

    Para executar a aplicação clique com o botão direito em cima do projeto e no menu de contexto que aparece clique em Run as à Android Application.

    O Eclipse vai executar todo o  processo de compilação para gerar o APK e depois será instalado e executado o aplicativo em um AVD aberto ou se não tiver um AVD executando no momento será executado um AVD.


    Execução do aplicativo em um dispositivo Android

    Também é possível executar o aplicativo em um dispositivo Android,  para o isso é necessário conectar o seu dispositivo em uma porta USB e ter instalado os drives para usar a USB com o dispositivo Android e também ativar os recursos de depuração USB em seu dispositivo Android.


    Ex:  Configuração à Aplicações à Desenvolvimento à Depuração de USB

    Conforme imagem abaixo:


    Configuração de Depuração de USB
    Configuração de Depuração de USB


    Com isso foi mostrado como se prepara um ambiente de desenvolvimento para aplicativos Android.  Bons programas.








Códigos secretos do android



Os códigos secretos do android servem para temos acesso a várias propriedades do telefones e podemos com isso também alterar algumas delas.

 1.       Informação sobre o telefone.
a.       *#*#4636#*#* -  Esse código mostra informações sobre seu telefone e bateria. Quando é executado mostra 4 menus que são os seguintes:
                                                               i.      Informações do telefone
                                                             ii.      Informações da bateria
                                                            iii.      Estatistica de utilização
                                                           iv.      Informação de Wifi
b.      *#*#34971539#*#* - Informações sobre a câmera do telefone. Mostra 4 opções:
                                                               i.      Update camera firmware in image
                                                             ii.      Update camera firmware in SD card
                                                            iii.      Get camera firmware version
                                                           iv.      Get firmware updade count
c.       Informações sobre a versão do Firmware
                                                               i.      *#*#4986*2650468#*#* - PDA, Phone, WH, RFCallDate
                                                             ii.      *#*#1234#*#* - Informações sobre o PDA e telefone.
                                                            iii.      *#*#1111#*#* - Informações sobre a versão da FTA SW
                                                           iv.      *#*#2222#*#* - Informações sobre a versão da FTA HW
                                                             v.      *#*#44336#*#* - informações sobre PDA, Telefone, CSC, Built Time e ChangeList.
                                                           vi.      *#*#3264#*#*  - Versão da RAM
                                                          vii.      *#*#2663#*#* - Versão screen Touch

 2.       Reset de informações e configurações
a.       *#*#7780#*#* - Usado para voltar as configurações de fabrica.
                                                               i.      Esse código remove:
1.       Contas Google
2.       Dados e configurações de aplicações
3.       Aplicações baixadas
                                                             ii.      Não remove:
1.        O Sistema e programas internos.
2.       Arquivos no SD card.
b.      *#*#2767*3855# - Formatação do telefone – reinstala a firware, esse código apaga todos os arquivos e configurações inclusive a memory interna de armazanamento.
c.       *#*#7594#*#* - Esse código altera o modo como o pressionamento longo do botão de ligar o telefone funciona.  Por padrão um pressionamento longo no botão de ligar/desligar apresenta um menu com as opções: Silent mode, Airplane mode and Power off. Executando esse código um pressionamento longo vai  fazer o telefone desligar imediatamente.
d.      *#*#1973286640#*#* - Entre no modo de serviço. Serve para executar vários testes e mudar configurações no modo de serviço.

 3.       Backup de arquivos
a.       *#*#273283*255*663282*#*#* - Faz um backup de arquivos para a área do sistema ou para a área de usuário.

 4.       Testes de WLAN, GPS e Bluetooth
a.       *#*#232339#*#*, *#*#526#*#*, *#*#528#*#* - Esses códigos fazem vários testes de WLAN.
b.      *#*#232338#*#* - Mostra o endereço MAC  do WIFI.
c.       *#*#1472365#*#* e *#*#1575#*#* -  Teste de GPS
d.      *#*#232331*#*# - Teste de Bluetooth
e.      *#*#232337*#*# - Mostra o endereço do device do Bluetooth.

 5.       Testes de Fabrica
a.       *#*#0283#*#* - Teste de Loopback
b.      *#*#2664#*#* - Teste do Touch da tela
c.       *#*#0673#*#* e *#*#0289#*#* - Teste de som dos componentes do telefone.
d.      *#*#0*#*#* - Teste do LCD
e.      *#*#0588#*#* - Teste do sensor de Proximidade
f.        *#*#0842#*#* - Teste de devices -  Vibraçao e BackLight.