Bem muito se falou mas pouco foi publicado, principalmente em Português sobre aplicação Delphi Mobile rodando em dispositivos Android com processador Intel. Vamos tentar documentar algo aqui.

Em 2013, um amigo visitando a empresa onde trabalho me mostrou um ZEN Fone da Asus, achei o celular muito legal, e como estava no auge da minha empolgação com a versão XE5 do Delphi, contemplando o desenvolvimento para Android pedi a ele para tentar colocar um programa feito por mim no aparelho. A minha tentativa deparava-se com a mensagem “Application does not support this device”.

Aquela tela preta enorme era a comprovação do descrito pelo documento de compatibilidade das aplicações desenvolvidas em Delphi na  Embarcadero Docwki:

Delphi Android não suportado em processador Intel

Nota: Confira a listagem de dispositivos Android suportados pelo desenvolvimento de aplicações Delphi no link abaixo:
 http://docwiki.embarcadero.com/RADStudio/XE8/en/Android_Devices_Supported_for_Application_Development

Tempo e compatibilização

Pois bem, com o passar do tempo o alguns desenvolvedores publicaram seu sucesso em compilar e distribuir aplicações Delphi Android nos dispositivos com processador Intel, como pode ser visto neste post de Marco Cantù, já em 2015.

LibHoudini: como, quem, onde?

Essa compatibilidade tem nome e reponde por LibHoudini, com o passar do tempo a Intel passou a incluir a biblioteca em seus processadores provendo essa compatibilização com os Androids de versão 4.4.2 ou superiores .

Nota: Cheguei a tentar em aparelhos  Fonepad 7 da Asus, equipados com Android 4.2 e não obtive sucesso.

A LibHoudini é uma camada intermediária que prover a tradução de instruções ARM para dispositivos Android x86. Ela permite que um aplicativo que tenha binários NDK para ARM, mas não x86, sejam executados em hardware x86, vale ressaltar que não tão rapidamente como faria com binários x86 nativos.

E eu com isso? Só curioso…

Na correria do meu dia de hoje, logo nos primeiros 10 minutos que cheguei ao trabalho, me encontrei com o amigo citado acima no corredor, e para minha sorte Edil é um aficionado por tecnologia e que gostou demais do Zen Fone, gostou tanto que acabou comprando um Zen Fone 2, claro que sabendo disso pedi a ele novamente o aparelho para testar… corri até a minha sala, um formulário, uma imagem, conecta o dispositivo e vamos de expectativa.

Como ver a mágica de Houdini no Delphi?

Até então está normal,  então é hora de ver como a mágica acontece! Vá em Project -> Deployment e a janela abaixo será exibida:

Desmarcada Opção de checar Lib Nativa x86

Repare que apenas demarcamos a opção responsável por fazer a verificação de bibliotecas nativas x86, é esse o grande truque de Houdini no Delphi.

Agora sim eu vi

Sempre que fui perguntado da questão, respondi com “há relatos”, sem jamais ter visto o resultado até hoje, então fica o agradecimento ao amigo Edil, que me emprestou seu telefone e em 5 minutos saciou mim curiosidade.

Já ia me esquecendo, rode a aplicação…

Zen Fone 2 - Rodando Delphi Android

Até a próxima!

27 Replies to “Delphi em Android com processador Intel”

  1. ae Landerson, já tinhamos falado sobre isso a uns meses atrás, na época não sabiamos o que fazer. Quando vi este tópico agora vibrei, mas por pouco tempo… infelizmente não deu certo no Zen Fone que tenho para testar. Você teria alguma dica a mais?
    Parabéns pelo ótimo trabalho como sempre. Abraços.

    1. Grande Vinícius… (conta premium aqui no blog)
      Já ví aí que vc trocou ideia aí com o KM, cara então no Zen 1 eu também não consegui… a sorte foi o Edil ter trocado de telefone e ele ser mais louco que eu e aceitar testar tudo o que eu falo com ele… (quero ver o dia que não der certo rsrsr)

      Cara acho que realmente não tem muito o que fazer não, o que tive olhando é que a libHoudini está há muito sem atualização o que me leva a crer que a Intel deve ter algo mais na manga para nos mandar… Falando de loucura e teste… olha esse link: https://01.org/android-ia/, achei durante a pesquisa… já adianto que não li, não testei… mas achei interessante para olhar num futuro.

      Grande abraço e a luta continua kkk
      t+

    2. Só para constar. Tenho um ZENFONE 2, aqui INFELIZMENTE também não deu certo. PIOR que estou no desenvolvimento de um APLICATIVO para colocar na PLAYSTORE, mas COMO eu colocaria um aplicativo que NÃO funciona em todo periférico com processador INTEL… Ainda mais com o ZENFONE fazendo tanto sucesso… Caso tenha alguma resposta… por favor me auxilie… agraceço muito ! carlosmuzambinho@gmail.com

    1. Olá Graziani bem vindo!
      Qual é o Android do dispositivo em questão? Chegou a verificar a linha em que sinalizo que apenas nos aparelhos com Android de versão superior à 4.4.2, vou tentar incluir esse APK resultante na Google Play e posto aqui no blog avisando a disponibilidade.

      Obrigado por sua contribuição.
      Até a próxima.

  2. Para quem não conseguiu fazer funcionar, verifique se desmarcou o libnative-activity.so correto… tem que ser o do diretório que termina com “…android/debug/x86”.

    []’s,
    KM

  3. Olá Kelver, para garanti fiz de novo, mas infelizmente nao deu certo de novo. Obs.: neste Zen Fone que eu testo se eu gerar em modo debug e instalar no celular, funciona normalmente, o meu problema é com a Google, Play Store, ao instalar meu app pela loja, o aplicativo nao roda por incompatibilidade.
    Você teria alguma dica?
    Eu ja procurei a google q disse para procurar a Asus, já Asus achou curioso rodar em debug normalmente e nao rodar baixando pela loja, mas nao conseguiram me ajudar em mais nada.
    Valeu ai pela ajuda.
    Abraços.

    1. Vinicius, eu não tenho ideia do que pode ser não, mas outra forma de você testar é usar um simulador Android Intel. Eu testei com o BlueStack e funcionou legal: http://www.bluestacks.com/.

      Se funcionar no simulador, acredito que provavelmente seja alguma incompatibilidade do aparelho ou da versão do Android…

      Abraços!

  4. Ae Landerson, blz? Cara se possivel teste o seguinte, se é que você ainda não o fez, coloque qualquer componente alinhado pelo topo do form, como um button, de preferência com pouca altura e rode o app num Zen Fone. A barra de status do dispositivo (com informações de rede bateria e tudo mais) fica por cima deste componente, até agora ainda não consegui resolver este problema. Se você souber o que eu posso fazer me ajude. Se eu tiver sucesso coloco essa info aqui. Grande abraço.

    1. Oi Vinícius! Eu resolvi criando essa procedure…

      procedure SetFormPaddingAccordingToDeviceStatusBar(const aForm: TForm);
      begin
      {$IFDEF ANDROID}
      //For a “better” solution, look:
      //https://plus.google.com/+MagnoLima/posts/gU8BNuCNkmP
      //or http://goo.gl/mFCtIl
      if aForm.Top < 1 then
      aForm.Padding.Top := 25
      else
      aForm.Padding.Top := 0;
      {$ENDIF}
      end;

      … que chamo no onShow de cada form:

      SetFormPaddingAccordingToDeviceStatusBar(Self);

      Longe de ser a solução ideal, mas funcionou 🙂
      Abraços!

  5. Srs,
    Veja se pode me ajudar, estou desenvolvendo um app via Delphi xe8 e estou testando no meu Moto G1 (Android 5.1) e até então está rodando normalmente ai peguei um tablet para fazer uma apresentação (Prévia), um Tablet Motorola XOOM 10.1 (Android 4.0.3), rodei antes o syscheck e deu tudo ‘yes’ e ao abrir o app aparece (‘A aplicação XXX parou’, ‘Ok’).

    Já olhei em tudo, mas não consegui fazer rodar. Alguma sugestão?
    Será incompatibilidade de processador ? fiz teste deste post e deu o mesmo erro.

    Não aparece mensagem de incompatibilidade, mostra a mensagem (‘A aplicação XXXX parou’, ‘Ok’)

    Vlw

    1. Carlos, primeiro seja bem vindo e obrigado por sua participação!
      Em relação ao exposto, tente me enviar o arquivo manifesto de sua aplicação para eu dar uma olhada.
      Outro ponto, tente verificar a min version de sua compilação.

      * peço desculpas por respondê-lo do celular não consigo no momento adicionar recursos visuais para exibir onde checar a min version.

  6. Olá Landerson, obrg pelo retorno.

    Só para completar, na verdade não roda nenhum app feito via delphi, todos dão a mesma mensagem.

    Para facilitar, criei um app, bem simples, coloquei um speedbutton e um showmessage, no celular funciona normal, mas no tablet não, idem ao APP que fiz.
    Segue o link do Androidmanifest.xml e o print do SYSCHECk do tablet.

    Obrigado novamente.

  7. O meu também fiz EXATAMENTE o que o CARLOS JR fez, e não funciona. Ou seja, coloquei um BUTTON, um SHOWMESSAGE “OLÁ MUNDO”, desmarquei a opção supracitada … Compilei e dá mensagem “APLICAÇÃO NÃO SUPORTADA NESTE PERIFÉRICO” ( em inglês) , no meu Zenfone 2. MUITO PREOCUPADO agora… será que terei que REFAZER meu projeto, através do ANDROID STUDIO… Infelizmente não estou enxergando a “tal luz no fim do túnel”… Testarei instalar um DELPHI XE10 “versão para pobres” apenas para testar… Funcionando, compro esta versão … Muitíssimo obrigado a todos !!!

  8. Pessoal, em um outro projeto aqui eu tive que desmarcar as duas opções, tanto para debug (…android/debug/x86) quanto para release (…android/release/x86). Só depois disso que funcionou.. fica a dica aí pra testarem!

    Lembrando também que é mais fácil/prático testar em um simulador intel do que no device em si. Se funcionar no simulador, funciona no celular. Eu uso e recomendo o http://www.bluestacks.com

    []’s,
    KM

  9. Boa noite,

    Após desmarcar essa opção, realizei um teste no meu celular Android 4.4.2 KitKat e parou de exibir a mensagem informando que não é suportado pelo dispositivo. Agora quando clico no APP ele fecha.
    O que pode ser?

    Obrigado.

  10. Tive uma palestra com um dos representantes da Embarcadeiro no Brasil, fiz perguntas a reapeito e ele me respondeu que a Embarcadeiro esta cientes disso, porém infelizmente não tem planos para investir nos dispositivos Intel no momento, talvez quando a plataforma tiver mais mercado. Há dois problemas em utilizar esse método descrito no post que também foi respondido nessa questão, o primeiro é que o aplicativo ignora a statusbar e começa a renderizar a tela do ponto xy:0 do display. O segundo é que a biblioteca citada na postagem é muito mais lenta do que o normal, e a Google não pretende mantê-la.

    1. Olá Renan! Seja bem vindo! Na verdade a própria Intel se retirou do mercado para mobile. Enfim, é algo que podemos considerar inapropriado ou sendo mais extremo, “morto”.

Deixe um comentário