Pesquisar na Comunidade
Showing results for tags 'posix'.
Encontrado 1 registro
-
Como usar o ACBr em Projetos Android FMX
um tópico no fórum postou Daniel Simoes Base de Conhecimento
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) Abra as opções do Projeto, Project -> Options (Shit-Ctrl-F11) Selecione: Building -> Delphi Compiler Em Target selecione All Configurations - All Plataforms Em Conditional Defines, escreva: FMX 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" 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: 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 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 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 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: