Necessitas QT Suite: aplicativos em C++/QT para Android

Necessitas QT Suite: aplicativos em C++/QT para Android

Você que desenvolveu aquela aplicação super bacana para Symbian, ou mesmo pra Linux, usando Qt e agora gostaria que esta aplicação pudesse ser executada no Android, saiba que você pode fazer isso. Para isso você utilizará o Necessitas, um framework que faz a ponte JAVA/C++/Qt, tornando possível executar seus aplicativos no Android.

Mas como o Necessitas faz apps em C++/Qt funcionarem no Android?

A partir do código C++/Qt compilado pelo Necessitas Qt Creator, é gerado um arquivo .so (velho conhecido dos desenvolvedores de bibliotecas para Linux), que é empacotado pelo Apache Ant juntamente com chamadas feitas via JNI por código Java (já incluso no Necessitas).

Por meio do Ministro (mais tarde falaremos dele, agora você apenas precisa saber que ele existe), são baixadas as bibliotecas necessárias para os aplicativos funcionarem no aparelho, dando suporte aos componentes utilizados na aplicação. As bibliotecas sempre serão baixadas na primeira execução do programa ou quando houver alguma modificação nas bibliotecas necessárias.

História e instalação

Em 2011, o romeno BogDan Vatra disponibilizou a primeira versão do Necessitas, framework baseado em Qt para Android. Atualmente o framework encontra-se na versão alpha 3 release 4, onde desde o projeto inicial já sofreu muitas modificações, melhorias e adicionou novas funcionalidades, como suporte a algumas API’s do Qt Mobility e gerenciamento eficiente do Teclado Virtual.

Atualmente com um instalador no estilo Next, Next, Finish (instalador somente on-line por enquanto, certifique-se de não ficar sem café durante a instalação). Durante a instalação são baixados as versões do SDK/NDK necessários para o desenvolvimento.

Antes de iniciar a instalação, esteja certo de que você possui o JDK instalado em seu computador, pois como é efetuada a compilação de código Java para geração do arquivo .apk (formato do instalador dos aplicativos para Android), você irá precisar dele.

Após instalar o JDK, e ter certeza que os comandos java e javac estão sendo executados com sucesso, hora de iniciar a instalação.

Baixe o instalador, disponível em http://sourceforge.net/projects/necessitas/files/, de acordo com o seu sistema operacional (particularmente já testei os 3 instaladores, só encontrei alguns problemas na versão para MacOS X, o restante funcionou 100%).

Após o download, execute o instalador. A primeira tela que surgirá será apenas as boas vindas, então basta continuar.

Aviso: devido a ter utilizado o instalador do Mac, talvez algumas coisas estejam um pouco diferente daqui em diante.

Após isto, é apresentada a tela para escolher o caminho da instalação (recomendo fortemente que seja deixado o caminho original, para que não ocorram quaisquer problemas).

Após escolherem o caminho, continuaremos nossa instalação para a seleção dos pacotes a serem instalados.

Nesta etapa, selecionaremos quais APIs e versões do Android serão suportadas. Segue abaixo imagem da instalação ideal, sendo que vocês podem selecionar outras versões do Android sem quaisquer problemas.

Depois de selecionar as opções, clique em Continue. Então é apresentada uma tela de resumo, bastando clicar em Install.

Pois é, agora entra a hora do café… Aguarde entre 30 minutos e 24 horas (dependendo da velocidade da sua internet).

Bom, após o término da instalação, basta continuar e clicar em Finish e pronto, você já poderá partir para a próxima etapa.

Criando e configurando o primeiro projeto

Ao iniciar o Qt Creator, temos a já conhecida tela inicial do Qt.

Agora vamos a parte divertida: a criação e configuração do primeiro projeto. Para isso, vamos em File >New File or Project. Escolheremos a opção Qt Widget Project -> Qt Gui Application nos templates. Feito isso, clique em Choose….

Agora, daremos um nome ao projeto e definiremos o caminho onde vamos criá-lo:

Clicando em Continue, vamos selecionar a plataforma Android (que por sinal é a única disponível…):

Aqui deixaremos a opção padrão, pois nosso interesse é a configuração do projeto para funcionar corretamente no Android. O restante com um pouco de experiência ficará muito mais fácil.

Na próxima tela basta clicar em Done.

Agora as configurações propriamente ditas. Na barra lateral do Qt Creator, clique em Projects. Em Edit Build Configuration, selecionaremos a opção referente ao processador do nosso aparelho Android. Neste momento, com uma pequena ajuda do Google você consegue descobrir a versão do ARM que é executado no processador do seu aparelho.

Neste caso usarei ARMv5.

Na aba Run Settings, temos as principais configurações. Aqui configuraremos para qual versão do Android estamos compilando e quais as bibliotecas serão necessárias.

Em Package Configurations, efetuaremos as configurações do pacote.

Em Android target SDK, selecionaremos a versão da API de destino (pode ser consultada em http://developer.android.com/guide/appendix/api-levels.html). Em Package Name daremos o “nome científico” do nosso aplicativo, e abaixo temos duas opções referentes a versão.

Na aba Application, teremos as configurações referentes ao nome e ícones da aplicação.

Na aba permissions são configuradas as permissões que nosso aplicativo terá perante o Android. Isso deve ser alterado conforme as necessidades do aplicativo.

Bom, e agora a última aba que nos interessa (já que Sign Package ainda não está funcionando direito, hehehe), a Libraries. Aqui serão configurados os pacotes que nosso aplicativo irá utilizar no Android. Porém para o aplicativo conseguir baixar as bibliotecas necessárias, é utilizado o Ministro (lembram que citei ele anteriormente?). Ele é instalado pelo Android Market e sua instalação é solicitada ao tentar executar o aplicativo desenvolvido via Necessitas pela primeira vez no aparelho. Uma vez instalado ele verifica as bibliotecas necessárias para a aplicação e efetua o download delas. O Ministro também é responsável por carregar as bibliotecas e gerenciá-las durante a execução da aplicação, sendo muito importante. Após compilar a aplicação, basta vir nesta aba e clicar em Read Information from application, assim ele irá selecionar as bibliotecas necessárias.

Após estas configurações, basta codificar, compilar e executar a seu aplicativo.

O exemplo é tosco, mas demonstra que funciona =)

O exemplo é tosco, mas demonstra que funciona =)

Lembrando que para fazer deploy diretamente no aparelho, deve ser habilitada a Depuração USB no Android em Configurações > Aplicativos > Desenvolvimento > Depuração USB e instalados os drivers necessários caso se esteja executando no Windows.

Update 1:

Para utilizar o simulador, você deve baixar o arquivo .apk do ministro deste link e nas configurações do projeto, Run Settings->Deploy Configurations marque a opção Install Ministro system wide qt shared libraries installer e escolha o .apk do Ministro em choose apk.

Links úteis

Toda a documentação referente ao Qt pode ser encontrada em http://doc.qt.nokia.com/lastest/classes.html.

Novidades sobre o Necessitas podem ser vistas em http://necessitas.sourceforge.net e em http://groups.google.com/group/android-qt.

E por hoje é isso. Bom desenvolvimento a todos e não esqueça: siga o Ubuntu-BR-SC no Twittercurta nossa página no Facebook e assine nosso feed RSS. Abraço!

Assine nossa newsletter!

Quer receber as novidades mais recentes do Ubuntu na sua caixa de entrada? Informe seu e-mail e clique em Assinar.

  • Assine o feed RSS
  • Siga o Ubuntu-BR-SC no Twitter
  • Curta o Ubuntu-BR-SC no Facebook
  • Ubuntu-BR-SC no Google+
  • Canal do Ubuntu-BR-SC no YouTube


  • http://www.nullonerror.org/ Rodrigo Delduca

    Muito bom! Eu cheguei a usar o Necessitas no meio do ano passado ou antes, e era bem instável, mas pelo visto o projeto só ganhou gás :)
    Detalhe: É Qt e não QT.

  • http://diegorubin.com/ Diego Rubin

    Andrei, o que você achou da performance dele? Da para concorrer com aplicações feitas diretamente com o Java?

    Estou perguntando isso porque cheguei a testar o Ruboto(desenvolvimento para android utilizando Ruby) e achei extremamente lento se comparado a aplicações escritas diretamente em Java.

    []‘s

    • Julio Cesar Ferranti

      Eu segui seu roteiro inteiro, mas no momento de  executar, ele não o faz, o emulador não consegue baixar o ministro do android market. como faço?

      • ajzuse

        Opa, Desculpe a demora na resposta.

        Para utilizar o simulador, você deve baixar o arquivo .apk do ministro deste link e nas configurações do projeto, Run Settings->Deploy Configurations marque a opção Install Ministro system wide qt shared libraries installer e escolha o .apk do Ministro em choose apk.

        Vou adicionar isto ao tutorial.

        Obrigado pelo comentário.

        • David Had

          Isto quer dizer que posso programa em C++ para Android ??. Eu uso o Qt normal, preciso desinstalar primeiro o Qt normal e depois este aqui ou posso instalar “por cima” ?

    • ajzuse

      Opa, desculpa a demora na resposta. 

      Olha, eu particularmente me surpreendi com o desempenho das aplicações, principalmente no processamento de grandes massas de dados. Portei uma base de dados para usar nas aplicações q a empresa q eu trabalho, e o desempenho ficou fenomenal, muito rápido comparado com o Windows Mobile. Fiz alguns testes de desempenho de algumas operações entre o Java e o Necessitas, e o Necessitas apresentou um desempenho levemente superior as mesmas operações em Java, pois como é utilizado JNI, isso é executado direto no SO, não passa por diversas camadas.

      • Davidson

        Desanimei viu, o necessitas é grande demais, mesmo retirando algumas opções, totalizou 5GB, em net de 1mb isso demora 12horas (em velocidade maxima). :(

    • Jerônimo Mozer

      Acabei de fazer um teste e achei que o único problema são as libs que precisam ser baixadas para que o apk gerado possa ser executado, no meu caso o apk (tem 1 tela com 1 campo de texto e 1 botão) ficou com 440kb mas teve que baixar quase 9Mb de libs do Qt… Não sei se fiz alguma coisa errada ou é assim mesmo, se for assim o normal, é melhor fazer no Eclipse/Netbeans/etc…

      • ajzuse

        Opa, é assim mesmo. Mas ele baixa apenas uma vez, depois ele não vai mais solicitar o download exceto em caso de atualização das bibliotecas.

        Obrigado pelo comentário.

  • http://diegorubin.com/ Diego Rubin

    Andrei, o que você achou da performance dele? Da para concorrer com aplicações feitas diretamente com o Java?

    Estou perguntando isso porque cheguei a testar o Ruboto(desenvolvimento para android utilizando Ruby) e achei extremamente lento se comparado a aplicações escritas diretamente em Java.

    []‘s

    • ajzuse

      Opa, desculpa a demora na resposta. 

      Olha, eu particularmente me surpreendi com o desempenho das aplicações, principalmente no processamento de grandes massas de dados. Portei uma base de dados para usar nas aplicações q a empresa q eu trabalho, e o desempenho ficou fenomenal, muito rápido comparado com o Windows Mobile. Fiz alguns testes de desempenho de algumas operações entre o Java e o Necessitas, e o Necessitas apresentou um desempenho levemente superior as mesmas operações em Java, pois como é utilizado JNI, isso é executado direto no SO, não passa por diversas camadas.

  • Julio Cesar Ferranti

    Eu segui seu roteiro inteiro, mas no momento de  executar, ele não o faz, o emulador não consegue baixar o ministro do android market. como faço?

    • ajzuse

      Opa, Desculpe a demora na resposta.

      Para utilizar o simulador, você deve baixar o arquivo .apk do ministro deste link e nas configurações do projeto, Run Settings->Deploy Configurations marque a opção Install Ministro system wide qt shared libraries installer e escolha o .apk do Ministro em choose apk.

      Vou adicionar isto ao tutorial.

      Obrigado pelo comentário.

  • Jerônimo Mozer

    Acabei de fazer um teste e achei que o único problema são as libs que precisam ser baixadas para que o apk gerado possa ser executado, no meu caso o apk (tem 1 tela com 1 campo de texto e 1 botão) ficou com 440kb mas teve que baixar quase 9Mb de libs do Qt… Não sei se fiz alguma coisa errada ou é assim mesmo, se for assim o normal, é melhor fazer no Eclipse/Netbeans/etc…

    • ajzuse

      Opa, é assim mesmo. Mas ele baixa apenas uma vez, depois ele não vai mais solicitar o download exceto em caso de atualização das bibliotecas.

      Obrigado pelo comentário.

  • David Had

    Isto quer dizer que posso programa em C++ para Android ??. Eu uso o Qt normal, preciso desinstalar primeiro o Qt normal e depois este aqui ou posso instalar “por cima” ?

  • Davidson

    Desanimei viu, o necessitas é grande demais, mesmo retirando algumas opções, totalizou 5GB, em net de 1mb isso demora 12horas (em velocidade maxima). :(

  • Pingback: Necessitas QT Suite: aplicativos em C++/QT para Android | Linux Ajuda

  • http://nullonerror.appspot.com/ Rodrigo Delduca Batista

    Muito bom! Eu cheguei a usar o Necessitas no meio do ano passado ou antes, e era bem instável, mas pelo visto o projeto só ganhou gás :)
    Detalhe: É Qt e não QT.

  • http://nullonerror.appspot.com/ Rodrigo Delduca Batista

    Muito bom! Eu cheguei a usar o Necessitas no meio do ano passado ou antes, e era bem instável, mas pelo visto o projeto só ganhou gás :)
    Detalhe: É Qt e não QT.

  • http://twitter.com/ajzuse Andrei Jiácomo

    Opa Valeu pelo Feedback Rodrigo, nem me liguei do detalhe quando eu tava escrevendo.

  • http://diegorubin.com/ Diego Rubin

    Andrei, o que você achou da performance dele? Da para concorrer com aplicações feitas diretamente com o Java?

    Estou perguntando isso porque cheguei a testar o Ruboto(desenvolvimento para android utilizando Ruby) e achei extremamente lento se comparado a aplicações escritas diretamente em Java.

    []‘s

  • Julio Cesar Ferranti

    Eu segui seu roteiro inteiro, mas no momento de  executar, ele não o faz, o emulador não consegue baixar o ministro do android market. como faço?

  • ajzuse

    Opa, desculpa a demora na resposta. 

    Olha, eu particularmente me surpreendi com o desempenho das aplicações, principalmente no processamento de grandes massas de dados. Portei uma base de dados para usar nas aplicações q a empresa q eu trabalho, e o desempenho ficou fenomenal, muito rápido comparado com o Windows Mobile. Fiz alguns testes de desempenho de algumas operações entre o Java e o Necessitas, e o Necessitas apresentou um desempenho levemente superior as mesmas operações em Java, pois como é utilizado JNI, isso é executado direto no SO, não passa por diversas camadas.

  • ajzuse

    Opa, Desculpe a demora na resposta.

    Para utilizar o simulador, você deve baixar o arquivo .apk do ministro deste link e nas configurações do projeto, Run Settings->Deploy Configurations marque a opção Install Ministro system wide qt shared libraries installer e escolha o .apk do Ministro em choose apk.

    Vou adicionar isto ao tutorial.

    Obrigado pelo comentário.

  • Jerônimo Mozer

    Acabei de fazer um teste e achei que o único problema são as libs que precisam ser baixadas para que o apk gerado possa ser executado, no meu caso o apk (tem 1 tela com 1 campo de texto e 1 botão) ficou com 440kb mas teve que baixar quase 9Mb de libs do Qt… Não sei se fiz alguma coisa errada ou é assim mesmo, se for assim o normal, é melhor fazer no Eclipse/Netbeans/etc…

  • ajzuse

    Opa, é assim mesmo. Mas ele baixa apenas uma vez, depois ele não vai mais solicitar o download exceto em caso de atualização das bibliotecas.

    Obrigado pelo comentário.

  • Pingback: Instalando o MOTODEV Studio for Android na sua distro Linux favorita

Assine!

Quer receber as novidades mais recentes do Ubuntu na sua caixa de entrada? Informe seu e-mail e clique em Assinar.

  • Assine o feed RSS
  • Siga o Ubuntu-BR-SC no Twitter
  • Curta o Ubuntu-BR-SC no Facebook
  • Ubuntu-BR-SC no Google+
  • Canal do Ubuntu-BR-SC no YouTube

Mais comentados da semana

Posts recomendados