Please note, this is a STATIC archive of website developer.mozilla.org from November 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

Sistema de Compilação Primário

Este artigo necessita de uma revisão editorial. Como posso ajudar.

Esse artigo explica como o sistema de compilação do Gaia funciona, incluindo o makefile, o processo de compilação, as variáveis de ambiente e potenciais customizações.

A maioria do trabalho significativo das etapas de uma compilação é executado por scripts que estão no subdiretório build/ do Gaia, que são executados usando make, node.js e XPCShell (também conhecido como JS Shell), um ambiente de execução do XULRunner. O sistema de compilação do Gaia contem mutas ferramentas de ajuda que o auxiliam para instalar, testar, localizar e empacotar aplicativos web em um dispositivo real. Também possibilita os desenvolvedores customizar o Gaia, por exemplo, trocando o papel de parede padrão, toques do telefone e configurações.

Nota: XPCShell e similar ao node.js, mas com a capacidade adicional de executar alguns scripts de JavaScript "Mozilla-flavored". Possibilitando do Gaia compilar scripts para ser executado dentro de uma extensão Firefox.

O Makefile

O make file é composto por um grupo de objetivos. Essa seção explica os mais úteis.

install-gaia

Instalar todos os aplicativos Gaia para seu dispositivo. Se você quiser trazer somente um aplicativo específico, você pode utilizar o parâmetro APP como descrito a seguir:

APP=calendar make install-gaia

Esse diretório deve existir dentro do diretório de aplicativos Gaia (por exemplo., apps).

reset-gaia

Funciona da mesma forma que install-gaia mas, primeiro apaga tudo e configura para as permissões padrão depois de instalar todos os aplicativos. Os aplicativos ficarão em /data/local da mesma forma como ocorre nas compilações da engenharia. Isso também traz as aplicações de teste e depuração.

Cuidado: Utilizando a variável de ambiente APP com reset-gaia aparementemente funciona, mas colocará seu telefone em um estado no qual fica inutilizado (que pode ser recupardo executando esse objetivo novamente sem a variável APP). Assim não faça isso.

production

O mesmo que reset-gaia mas instala os aplicativos web em webapps /system/b2g ao invés de /data/local. Esse objetivo basicamente possibilita você emular compilações de usuário. Também traz o mesmo conjunto de de aplicativos instalados na compilação do usuário.

Cuidado: Utilizando a variável de ambiente APP com production aparementemente funciona, mas colocará seu telefone em um estado no qual fica inutilizado (que pode ser recupardo executando esse objetivo novamente sem a variável APP). Assim não faça isso.

reference workloads

Esses objetivos trazem tamanhos variáveis de carga de trabalho para o dispositivo, nos ajudando a corrigir problemas de performance e escalabilidade. Esses objetivos aceitam a variável de ambiente APP, ou APPS que pode conter nomes dos aplicativos separados por espaço, por exemplo:

APP=sms make reference-workload-light
APPS="sms communications/contacts" make reference-workload-heavy

Nota: Para maiores informações, leia Modificando o Gaia: Reference workloads.

Variáveis de ambiente

Algumas variáveis de ambiente permitem você controlar alguns aspectios da compilação e instalação em seu dispositivo, por exemplo:

B2G_SYSTEM_APPS=1

Essa variável de ambiente permite você enviar um aplicativo para /system/b2g ao invés de /data/local. Você pode usar isso quando você trabalhar com uma compilação de usuário. Essa variável é automaticamente ajustada ao executar make production. Isso pode ser usado para install-gaia ou reset-gaia.

GAIA_OPTIMIZE=1

Isso dispara um passo de otimização nos arquivos JavaScript. É automaticamente ajustada ao executar make production. Pode ser utilizada para install-gaia ou reset-gaia.

PRODUCTION=1

Basicamente é um alias para make production.

DEBUG=1

Gera um perfil de depuaração para ser usado com testes unitários do Gaia ou quando for desenvolver seu aplicativo Firefox OS no Firefox. Você deve apagar o diretório de perfil existente antes de gerar um outro.

DEVICE_DEBUG=1

Desabilitar o bloqueio de tela no dispositivo.

GAIA_DEVICE_TYPE=phone

Essa variável permite você compilar para um dispositivo específico de uma diferente 'app.list'. Todos os arquivos 'app.list' estão armazenados em subdiretórios de /build/config/$(GAIA_DEVICE_TYPE)/.

O valor padrão de GAIA_DEVICE_TYPE é phone.

Nota: para maiores detalhes e mais opções consulte nosso guia de Opções do Make.

Processo de compilação

Esse é o processo de compilação quando o make é executado no diretório do Gaia. As regras são executadas na seguinte ordem:

  1. xulrunner-sdk-30: Xulrunner é usado para executar os scripts xpcshell no diretório GAIA_DIR/build/.
  2. preferences: Gera as preferências padrões para o Firefox OS; gera o arquivo user.js e o coloca no dispositivo, onde possa ser lido pelo Gecko. Observer que os valores devem ser alterados com variáveis de ambiente diferentes como DEBUG=1.
  3. webapp-manifests: Gera metadados dos aplicativos web para o process de compilação
  4. keyboard-layouts: Gera a configuração de layout padrão do teclado
  5. svoperapps: Baixa os aplicativos e gera os arquivos de configuração para a instalação dos aplicativos dependendo do país e operadora
  6. webapp-shared: Pega os arquivos que são usados em cada aplicativo do diretório compartilhado para o diretório build_stage.
  7. app-makefiles: Makefiles no diretório app: São executados se existirem. Para os aplicativos que não possuírem um Makefile associado, o Makefile do Gaia copia o diretório do aplicativo para build_stage, e executa [app-directory]/build/build.js. Caso exista veja Build script for apps para detalhes.
  8. test-agent-bootstrap & test-agent-config: inclui duas regras de make, test-agent-config e test-agent-bootstrap-apps, que são usadas para configurar ambientes de teste para os aplicativos.
  9. webapp-optimize: Esse script contém vários procedimentos de otimização incluindo minificação de JavaScript, concatenação de localização de arquivos de recursos em arquivos JSON e geração de arquivos HTML para o idioma padrão se necessário.
  10. webapp-zip: Comprime cada aplicativo em arquivos zip separados e os coloca no diretório profile/. Arquivos no diretório shared/ declarados nos arquivos HTML dos aplicativos web são incluídos nessa etapa.
  11. optimize-clean: optimize-clean apaga os arquivos HTML para o idioma padrão
  12. settings.json (settings.js): Esse JavaScript gera as configurações padrão para o Firefox OS, que serão lidos pelo Gaia.
  13. contacts: Copia um arquivo de contatos pré-carregado para o seu perfil, se existir em GAIA_DISTRIBUTION_DIR.
  14. extensions: Copia as extensões de GAIA_DIR/tools/extensions para o seu diretório do perfil, configurações diferentes permitem especificar a cópia de extensões diferentes.
  15. create-default-data: Copia os dados padrão para o seu diretório de perfil.
  16. installed-extensions.json (additional-extensions.js): Finalmente, esse script baixa algumas extensões adicionais para o seu perfil.

Diagrama de dependência do makefile do Gaia:

Build Script para os aplicativos

Por padrão, o Makefile do Gaia copiará todos os aplicativos para o diretório build_stage e executará [app directory]/build/build.js se existir. Se o aplicativo possuir um Makefile para compilá-lo, você precisa publicar um comando no Makefile para copiar os arquivos do aplicativo para o diretório build_stage e executar build/build.js caso necessário.

Por exemplo, o aplicativo Camera precisa do arquivo r.js para require.js e também executar um script de compilação JavaScript para customizar a máxima resolução, assim existe um Makefile e um arquivo build/build.js no diretório do aplicativo Camera para customizar o processo de compilação:

Abaixo um fluxograma para ilustrar como o app-makefiles funciona:

Customizando as preferências

Se você tiver um conjunto de preferências customizadas e precisar configurá-las toda vez que fazer um flash para seu dispositivo, você pode criar um arquivo chamado custom-prefs.js dentro do diretório build/config. Isso o protege de ser sobrescrito.

Abaixo algumas preferências úteis:

// this enables marionette which lets you run performance tests
// see https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Platform/Testing/Gaia_performance_tests
user_pref("marionette.defaultPrefs.enabled", true);

// this sets the port for remote debugging your application on the device
user_pref("devtools.debugger.remote-port", 60000);

// this enables the remote debugger
user_pref("devtools.debugger.remote-enabled", true);

// this outputs debug information about the Radio Interface Layer in logcat
user_pref("ril.debugging.enabled", true);

Esse arquivo é lido a cada vez que um perfil é gerado. A maneira mais segura de garantir que tudo será gerado é apagar o seu perfil antes de iniciar o processo:

rm -rf profile && make profile

Então você pode usar o objetivo install-gaia.

Perguntas frequentes

O dispositivo permanece preto depois de um flash

Isso pode acontecer se você fizer um flash no seu dispositivo enquanto ele estiver no modo "idle". Para consertar isso apenas reinice o B2G usando o seguinte comando a partir do terminal:

adb shell stop b2g && adb shell start b2g

 

 

Etiquetas do documento e colaboradores

 Colaboradores desta página: jwhitlock, rbrandao
 Última atualização por: jwhitlock,