Brew Fernando Brayner Gustavo Gallindo Marcellus Tavares.
Transcript of Brew Fernando Brayner Gustavo Gallindo Marcellus Tavares.
brew
Fernando BraynerGustavo GallindoMarcellus Tavares
Surgimento
• Qualcomm– Fundada em 1985– San Diego, Califórnia– OmniTRACS– CDMA, 1989
Surgimento - brew
Janeiro 2001
Necessidadede uma plataformade desenvolvimento
Integração com os elemetos da cadeiade negócios
O que é BREW ? (1/2)
• Binary Runtime Enviroment for Wireless
• Solução para– Desenvolvimento de aplicações wireless– Distribuição de aplicações– Cobrança e pagamento de aplicações
BREW Tecnologia + Modelo de negócios
O que é BREW ? (2/2)Para o desenvolvedor
– Conjunto de APIs– Um meio de vender e distribuir aplicações para
usuários finais• Para o dispositivo
– BREW é uma camada (150k) entre a aplicação e a ASIC (Application Specific Integrated Circuit)
BREW no celular
• Desenvolvimento independente de chipset dos dispositivos– Portabilidade
• Aplicativos podem ser escritos em JAVA, C ou C++
BREW X J2ME
• Vantagens– Não há limite para tamanho da aplicação– Pode-se utilizar OO sem medo– BREW 2.0 – acesso direto ao buffer de tela– Distribuição, gerenciamento e vendas
BREW X J2ME
• Desvantagens– Solução de compressão deve ser escrita
pelos desenvolvedores– Inexistência de perfis
Motivação
BREW Hoje
• 44 fabricantes de dispositivos
• 31 países• $700M+ Publicadoras/Desenvolvedores
Módulo• Engloba os componentes de uma aplicação• Encapsula um numero qualquer de applets• Desenvolvidos como DLLs no Windows
– Assumem outro formato quando compilados para o dispositivo (.mod)
• Sempre possuem um arquivo MIF associado
Applets
• Similares a “aplicações”• Toda aplicação BREW deve possuir pelo
menos um applet• Classes que permitem ser gerenciadas pelo
ambiente– Criação, destruição e manipulação de eventos
• Implementam uma interface comum
Interfaces
• Serviços na plataforma BREW são disponibilizados através de interfaces (APIs)
• Interfaces em BREW possuem um ID único e o acesso é gerenciado pela plataforma
• Cada interface encapsula um conjunto de serviços como– Acesso ao display– Controle de som– Serviços de rede– Etc...
ClassIDs
• Applets e interfaces públicas possuem identificadores únicos em BREW
• Identificadores possuem 32 bits e são chamados de ClassIDs
• São gerenciados pela Qualcomm para garantir sua unicidade
• “Authentic Developer”• Dummy Ids para testar aplicações• São utilizados para carregar os serviços da plataforma• São mantidos em arquivos de texto com extensão .bid
Partes de uma aplicação Brew
Module Information File
• Cada módulo BREW possui um arquivo MIF associado
• MIFs mantêm informações sobre o conteúdo do módulo– Applets– Privilégios– Títulos de applets e ícones– ClassIDs– Autor
• Plataforma lê as informações do aplicativo instalado do .mif– Similar ao .jad de J2ME
Resource File
• Mantêm os recursos usados pela aplicação– Textos– Imagens– Sons– Você também pode criar controles para suas aplicações
•Menus, lists, date selectors, and timersResource
• Vantagens– Organização
• No Hard-Coded• Recursos para dispositivos específicos
– Portabilidade• Mudar o resource
– Eficiência na mudança dos recursos
Em resumo...
Tudo pronto pra rodar no emulador...
• Disponibilizará lista de aplicações descritas no MIF
• Aplicação selecionada tem seu .dll carregado na memória
• Os recursos são carregados a medida que são solicitados pelas aplicações
Aplicação no Emulador
Start-up no Emulador/Dispositivo
• Enumera todos os MIFs no sistema• Extrai informações associadas com todas
aplicações especificadas nos MIFs• Um único MIF pode descrever um numero
qualquer de aplicações (0 ou mais)• É criada uma lista de todas as aplicações na
memória(RAM). Essa lista contém informações extraídas do MIF (ex: ClassID)
• Todas operações relacionadas a aplicações (start, stop, etc.) usam essa lista como ponto de partida
Brew SDK Tools
• Previamente incluído no Brew SDK
• Separado na versão 3.0.3
• Funciona com todas as versões do Brew SDK
Resource Editor
• Editar/Gerenciar os arquivos de recursos– Descrição dos Recursos BRI
• Compila BRI .BAR#ifndef MYRESOURCES_RES_H #define MYRESOURCES_RES_H // WARNING: DO NOT MODIFY THIS FILE // AUTO-GENERATED BY BREW Resource Editor
#define MYRESOURCES_RES_FILE "myresources.bar" #define A_STRING 1 #define AN_IMAGE 5001
#endif // MYRESOURCES_RES_H
Compilação do BRI
• Compilador embutido no Resource Editor– Edita os Recursos– Salva (.BRI)– Compila– BREW Application Resource gerado
MIF Editor
• Gerar o Module Information File– Compila o arquivo de edição de
propriedades (.MFX) .MIF– helloworld.BID
#ifndef HELLOWORLD_BID
#define HELLOWORLD_BID
#define AEECLSID_HELLOWORLD 0x11111111
#endif //HELLOWORLD_BID
Como o MIF e a Aplicação se conectam
BREW Compressed Image (BCI) Authoring Tool
• Permite armazenar imagens no aparelho de forma comprimida
• Reduz bastante o tamanho dos gráficos e aumenta a velocidade na qual as imagens são carregadas no dispositivo
• Provê mecanismos para comprimir e combinar arquivos padrões do windows BMP, PNG, JPEG e JPG para criar animações
Outros Utilitários Brew
• BREW 2Bit Tool– converts 4-bit BMPs to 2-bit BMPs for image editing
• PureVoice™Converter– Converts (WAV)files to QUALCOMM PureVoice™(QCP)
• NMEA Logger Tool– Reads National Marine Electronics Association
(NMEA) messages from GPS or GNSS device– GPS or GNSS data can then be simulated on the
Simulator– Live data recorded from a serial connection or from a
file
Privilegio de Acesso• Todo Módulo tem um “privilege level” associado• O privilege level de um módulo determina se o
módulo pode acessar ou não certas interfaces • Para cada interface em Brew, existe um
“minimun privilege level”• O MIF de um modulo deve incluir classes que
ele utiliza como dependências• Níveis de privilegio são usados em conjunto
com “True Brew” para garantir integridade da aplicação
Privilegio de Acesso
• No Brew ver 2.0, classes exportada a partir de um determinado módulo cai em duas categorias:
• “Não-protegidas” – Essas classes não tem algum tipo de proteção. Elas são disponíveis para qualquer modulo a qualquer momento
• “Protegidas” – Essas classes devem ser listadas como dependências no MIF da aplicação que requisita o modulo. Se não, um erro de aplicação será retornado.
C++ Support in BREW
• Aplicações podem ser escritas em C++.• As estruturas de dados e funções podem ser em
C++. O uso de C++ deve ser restrito a especificação do embedded C++
• Limitações:– Mecanismo de funções virtuais não pode ser usado
para invocar funções de interfaces BREW– Mecanismo de herança não pode ser usado para
derivar/implementar a partir de interfaces BREW
• Trabalho no sentido de permitir uso completo de C++
uiOne
• Personalização da interface é dependente da aplicação
• Plataforma para o desenvolvimento de UIs ricas– Novos serviços de personalização
uiOne
• Passado:– Código monolítico– Grande esforço para se
criar UI para cada dispositivo
uiOne• Hoje:
– Sistema: gerenciamento dos componentes dos dispositivos – BREW client
– Serviços: engines, protocolos: (BREW extensions)
– Aplicações BREWSistema
Serviços
Aplicação + UI
uiOne• Com uiOne:
– Camada de UI é separada– Rápido desenvolvimento de UI– Desenvolvimento de UI é
separado do desenvolvimento das aplicações
– Criação de UIs é simplificada através de linguagens de marcação
Sistema
Serviços
Aplicações
UIs
uiOne - SDK
– TrigPlayer• roda sobre BREW como um extensão do
BREW para renderizar Trigs e Triglets
– TrigBuilder• Usado para se criar UIs(Trigs e Triglets)
– Trig• Hierarquia de arquivos que descrevem a UI de
uma aplicação
uiOne - SDK– Triglet
• Aplicam atualizações sobre um Trig• Descrevem modificações na árvore de recursos do Trig
– Ator• Aplicativos escritos em C que conectam Trigs ao dispositivo
(código nativo)/ BREW API
– uiOne Publisher• Servidor que gerencia a distribuição de Trigs
– uiOne Depot• Servidor que hospeda Triglets• Atualizações
uiOne
Trig – User Interface
Triglet- UI update•Update dinâmico de uma parte da UI•Estratégia realizada na concepção da interface
uiOne
• TrigPlayer– Roda sobre o BREW como uma extensão– Baixados automaticamente com os Trigs
ou pré-instalado– Instalado uma vez por dispositivo
uiOne
• Trigs• Hierarquia de arquivos que
descrevem a UI de uma aplicação– TrigML– Imagens– Update– Channels– Text– Properties
TrigML – Exemplo (1/6)<grid/> - define regiões
TrigML – Exemplo (2/6)<group/> - especificar atributos em uma região
TrigML – Exemplo (3/6)
TrigML – Exemplo (4/6)
TrigML – Exemplo (5/6)
TrigML – Exemplo (6/6)
TrigML – Comunicação com atores
TrigBuilder
uiOne - Canais
uiOne - Triglet
• Pacotes eviados OTA para os dispositivos