Ir para conteúdo
  • Cadastre-se

dev botao

Como usar o ACBr em Projetos Android FMX


  • Este tópico foi criado há 1426 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Fundadores

Android GIF

Como alguns já devem saber, estamos fazendo um imenso trabalho nos fontes do ACBr, para compatibilizar o mesmo com os compiladores Delphi para Linux (POSIX), e Android (NEXTGEN).
Essas plataformas, utilizam o Framework, FMX ou FireMonkey.

Estou muito impressionado com a facilidade e capacidade do Delphi Rio, em gerar aplicações, Ricas, bonitas e rápidas, para Android... e creio que a FMX, será o futuro do Delphi.

A compatibilização com esses novos compiladores, não foi algo trivial, pois infelizmente, eles introduziram grandes modificações na base do Object Pascal.
Leia esse artigo, para saber mais sobre essas diferenças...

 

Ok... legal... quero iniciar minhas aplicações em Android com o ACBr... o que devo fazer ?

 

1 - Informar que o seu projeto está usando FMX

Para que o ACBr possa suportar compilação em VCL, FMX, LCL (Lazarus), Windows, Linux, Android... o código do ACBr, recebeu várias modificações com diretivas de compilação (IFDEFs)

Para que essas diretivas sejam utilizadas, precisamos sinalizar para o ACBr, que o Projeto em questão, usa a FMX.

Isso pode ser feito de duas maneiras:

1.1 - Inserindo uma Diretiva nas opções do Projeto (recomendado)

  1. Abra as opções do Projeto, Project -> Options (Shit-Ctrl-F11)
  2. Selecione: Building -> Delphi Compiler
  3. Em Target selecione All Configurations - All Plataforms
  4. Em Conditional Defines, escreva:  FMX

DelphiCompilerOptionsFMX.png

 

1.2 - A segunda forma é modificar o ACBr.inc,  ativando a diretiva FMX..

Porém use essa opção com cuidado, pois ela afetará todos os seus projetos, e você terá que comentar a linha novamente, quando for compilar um projeto VCL

// Para usar FMX (Firemonkey) Windows / Delphi descomente essa linha
{$DEFINE FMX}

 

2 - Informe o "Unit Scope Names"

As novas versões do Delphi, usam notações com Pontos nas Units, como por exemplo: "System.SysUtils" ao invés de apenas "SysUtils". Para que o código fonte do ACBr, permaneça compatível com Delphi 7, não podemos modificar essa nomenclatura...

Informar o Unit Scope Names, instruirá o compilador, a onde encontrar as Units com os novos nomes, mesmo usando a nomenclatura antiga...

Vá em: Project -> Options -> Building -> Delphi Compiler (mesma tela do passo anterior)

e informe os Unit Scopes necessários... exemplo: "System;Xml;Data;Datasnap;Web;Soap"

image.png

 

3 - Certifique-se que o Compilador conhece os Paths dos fontes Projeto ACBr

Atualmente, o instalador do ACBr, adiciona automaticamente todos os diretórios dos Fontes do Projeto ACBr, em sua váriável Global, de LibPath dos Compiladores de Win32 e Win64... isso economiza um grande trabalho...

Porém o instalador ainda não faz o mesmo, para os compiladores Linux e Android... então precisamos fazer isso manualmente...
A maneira mais simples, é copiar os Paths do Compilador Win32 para o Android e Linux... Veja o passo a passo:

3.1 - Acesse: Tools -> Options -> Language -> Delphi -> Library

Observe que a primeira Linha mostra o Library Path para Windos 32 bits... Marque toda a Linha e copie:

image.png

 

3.2 - Agora cole o conteúdo em um Editor (NotePad++), e modifique o texto isolando todos os diretórios do ACBr, Fortes Report, e outros que achar interessante...

3.3 - Mude a Plataforma selecionada, no combo box acima, para Android 32

image.png

3.4 - Vá ao final da Linha, e Cole o conteúdo, com os diretórios do ACBr (lembre-se de separar os diretórios com ; )

3.5 - Repita o mesmo para Android 64 e Linux 64

 

4 - Solicite as permissões que o seu projeto precisará no Android

A tela abaixo, é do Demo do ACBrMail para Android, que já disponível no SVN em: "\ACBr\Exemplos\ACBrTCP\ACBrMail\Android"

Observe que marcamos a opção para ter acesso a internet, pois isso é necessário nessa aplicação

image.png

 

De acordo com as novas políticas de segurança do Android, também será necessário, requisitar essas permissões em tempo de execução...
Você pode ver como isso é feito, nos fontes do Demo do ACBrMail. Use a força, leia os fontes, e procure pelo método: function TACBrMailTestForm.PedirPermissoes: Boolean;

 

5 - Modifique o Deployment, para inserir as bibliotecas necessárias

Vá em: Project -> Deployment, e adicione as Bibliotecas do OpenSSL, e substitua as Imagens que achar necessário

Veja por exemplo, a tela do Deployment do Demo do ACBrMail

image.png

 

Nota sobre as dependências externas do ACBr: OpenSSL e LibXML2

Após algum esforço, conseguimos compilar as bibliotecas do OpenSSL e a LibXML2, para Android em 32 e 64 Bits... e o binário delas já se encontram no SVN, na pasta:
\ACBr\DLLs\Android\

  • Use as versões dinâmicas das bibliotecas, ou seja, os arquivos com extensão .SO
  • Para 32 Bits use a biblioteca com prefixo "ARM"
  • Para 64 Bits use e "AARCH64"
  • Configure o "Remote Path", para ".\assets\internal\", pois é nesse local, que os fontes do ACBr, tentará encontrar as bibliotecas

 

IMPORTANTE: Os arquivos da pasta remota: .\assets\internal\ poderão ser acessados de dentro da aplicação com: TPath.GetDocumentsPath (que na será traduzido para "$(ApplicationPath)\file")

Porém, quem faz a copia dos arquivos da pasta de $(APK)\assets\internal\, para a pasta $(ApplicationPath)\file é a Unit System.StartUpCopy, que por padrão, é adicionada no inicio de Todo novo projeto FMX. Exemplo:

program Project1;

uses
  System.StartUpCopy,    // <-- Olha ela aqui
  FMX.Forms,

Se essa Unit não for adicionada, os arquivos que estão na pasta "assets\internal" do APK, não serão copiados para a pasta "files" de sua aplicação, após a mesma ser iniciada... e como consequencia, você não consegirá acessá-los..

A correção é bem simples.. basta adicionar a System.StartUpCopy, conforme demonstrado acima...

 

Leia também:

 

 

  • Curtir 9
  • Obrigado 1
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

  • Daniel Simoes changed the title to Como usar o ACBr em Projetos Android FMX
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.