Instalação CEF no Linux

CEF é o anacrônico de Chromium Embedded Framework, é uma interface para o Chromium em outras aplicações.

Estaremos tratando aqui, como realizar a instalação deste frame work.

Existem dois caminhos para realizar tal feito, o primeiro e mais complicado é através do procedimento de compilação total, o segundo é através da baixa dos binários já montados.

Compilação total

O Passo a passo que se segue foi tirado em pesquisa da web e consta entre outros links:

https://bitbucket.org/chromiumembedded/cef/wiki/MasterBuildQuickStart#markdown-header-mac-os-x-setup

Baixe os repositórios dos projetos no seguinte repositório GIT:

https://bitbucket.org/%7Bdc443723-7652-4c63-b340-033e522146db%7D/

Para tanto, existem 3 repositórios:

  • CEF
  • CEF-PROJECT
  • Java-cef

Conforme imagem abaixo:

Repositórios do Projeto CEF

Como o projeto Java, não esta em nosso alvo, ignoraremos este ultimo.

Baixando do CEF

Primeiramente precisamos baixar o projeto

git clone https://bitbucket.org/chromiumembedded/cef.git

Digite o comando acima no seu console.

Instalação do projeto CEF

No site do desenvolvedor este recomenda uma super máquina, com 16 núcleos de processador, e conexão de internet de 100mbits.

Este procedimento deve ser realizado em um Ubuntu 18.04, pois tive problemas em ambientes diferentes.

Realmente o processo é um pouco demorado, e recomendo fortemente que pelo menos a conexão seja de boa qualidade, para que não sofram com o processo.

Siga os passos abaixo para realizar a instalação do CEF:

Passo 1

Entre na pasta cef, e crie os diretórios:

mkdir ./code

mkdir ./code/automate

mkdir ./code/chromium_git

criação das pastas

Passo 2

Baixe e execute o arquivo install0buuild-deps.sh

Este arquivo irá instalar todas as dependências do cef.

cd ./code

sudo apt install curl

curl ‘https://chromium.googlesource.com/chromium/src/+/master/build/install-build-deps.sh?format=TEXT’ | base64 -d > install-build-deps.sh

chmod 755 install-build-deps.sh

sudo ./install-build-deps.sh –no-arm –no-chromeos-fontes –no-nacl

Dependências para instalação do CEF




Passo 3

Baixe os repositórios de ferramentas

cd ./code

git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git

Passo 4

Agora voce precisa incluir o caminho absoluto da sua pasta.

Para isso primeiro vá a pasta do cef, indo e digite o comando

export PATH=`dirs | cut -d' ' -f2`/code/depot_tools:$PATH

Pega o caminho da pasta atual e inclui no repositório

Passo 5

Agora é necessário baixar o automate.

cd ~/code/automate
wget https://bitbucket.org/chromiumembedded/cef/raw/master/tools/automate/automate-git.py

Passo 6

Agora vamos baixar o chromium_git, para isso vamos seguir o seguinte passo.

Crie o arquivo update.sh, na pasta ./code/chromium_git

cd ..

cd ./chromium_git

vim update.sh

Edite o seguinte fragmento:

#!/bin/bash
CAMINHO=`dirs | cut -d' ' -f2`
echo $CAMINHO
python ../automate/automate-git.py --download-dir=$CAMINHO/../chromium_git --depot-tools-dir=$CAMINHO/../depot_tools --no-distrib --no-build

Agora dê permissão ao script:

chmod +755 update.sh

Agora rode o script e aguarde.

./update.sh

Passo 7

Neste passo, iremos gerar os defines para configurar o ambiente.

O Chromium usa o usuário root para build da aplicação, porem temos a opção de usuários não root.

GN_DEFINE ROOT

export GN_DEFINES="use_sysroot=true use_allocator=none symbol_level=1 is_cfi=false use_thin_lto=false"

GN_DEFINE NOROOT

export GN_DEFINES="use_sysroot=false use_allocator=none symbol_level=1 is_cfi=false use_thin_lto=false use_vaapi=false"

Passo 8

Rode o script, em ./code/chromium_git/chromium/src/cef/

cd ./code/chromium_git/chromium/src/cef/
./cef_create_projects.sh

Passo 9

Gera o binario com Debug usando Ninja

cd ~/code/chromium_git/chromium/src
ninja -C out/Debug_GN_x64 cefclient cefsimple ceftests chrome_sandbox

Caso queira versão final, substitua a palavra Debug por Release.

Passo 10

Configure o Linux SUID Caixa de areia, se voce esta usando um kernel antigo, versão inferior a 3.8.

# This environment variable should be set at all times.
export CHROME_DEVEL_SANDBOX=/usr/local/sbin/chrome-devel-sandbox

# This command only needs to be run a single time.
cd ~/code/chromium_git/chromium/src
sudo BUILDTYPE=Debug_GN_x64 ./build/update-linux-sandbox.sh

Passo 11

Rode o cefclient, cefsimple e ou ceftests. Note que o cefclient somente compilará se voce estiver usando um parametro nao root, no passo 7.

cd ~/code/chromium_git/chromium/src
./out/Debug_GN_x64/cefclient

Instalação através de Baixa de Binários

Neste processo não há de fato a compilação, apenas a etapa de linkagem dos binários.

Este é o processo que recomendo, pois além de ser mais rápido é mais fácil e dá menos problema na hora da instalação.

Passo 1 – Baixa dos Binários

O primeiro passo é baixar os binários através do site abaixo:

https://cef-builds.spotifycdn.com/index.html

Nele existem diversas distribuições que podem ser vistas, é importante observar qual será o alvo da sua instalação. Para não baixar a distribuição errada, e eventualmente ter problemas com isso.

Lembrando que não é possível compilar um linux 32 com uma distribuição 64, pois a lib terá problemas na linkagem do mesmo. Então sempre escolha a versão que coincide com seu sistema operacional.

Caso não saiba qual é sua distribuição, recomendo, que use o comando,

uname -a

Conforme figura abaixo, podemos ver que meu linux é 64 bits, desta forma recomenda-se o uso da lib 64 bits.

Mostrando que é 64 bits

Desta forma seguiremos, com o padrão, conforme passado:

Agora baixe o binário, e instale na sua maquina linux descompactado.

Renomeie o arquivo para apenas cef, conforme figura abaixo.

Pasta montada no linux

Apenas para elucidar, estou usando o samba, que permite eu acessar as pastas do linux na minha maquina windows. Isso facilita a edição dos fontes.

Passo 2 – Preparação e Dependências.

Entre no linux pela console, entrando na pasta do cef. Digite o seguinte comando:

cmake .

Preparação para o make, onde irá peparar o makefile

Se não houver problemas de dependências, ele irá estar pronto para linkagem.

Caso dê problema, consulte a documentação, no link abaixo:

https://bitbucket.org/chromiumembedded/cef/wiki/MasterBuildQuickStart#markdown-header-ma

Passo 3 – Linkagem dos binários

Nesta etapa iremos montar a lib, pegando os binários pré compilados e juntando na .so

Para concluir esta etapa, basta digitar na console

make

Monta a lib

Ao fim, será mostrado, o resultado, como segue:

build concluído

A lib estará disponivel, no caminho .\cef\Release, conforme figura abaixo:

local de destino da lib

Includes de distribuição,

Ficam em .\cef\include conforme figura abaixo: