Brew Fernando Brayner Gustavo Gallindo Marcellus Tavares.

49
brew Fernando Brayner Gustavo Gallindo Marcellus Tavares

Transcript of Brew Fernando Brayner Gustavo Gallindo Marcellus Tavares.

Page 1: Brew Fernando Brayner Gustavo Gallindo Marcellus Tavares.

brew

Fernando BraynerGustavo GallindoMarcellus Tavares

Page 2: Brew Fernando Brayner Gustavo Gallindo Marcellus Tavares.

Surgimento

• Qualcomm– Fundada em 1985– San Diego, Califórnia– OmniTRACS– CDMA, 1989

Page 3: Brew Fernando Brayner Gustavo Gallindo Marcellus Tavares.

Surgimento - brew

Janeiro 2001

Necessidadede uma plataformade desenvolvimento

Integração com os elemetos da cadeiade negócios

Page 4: Brew Fernando Brayner Gustavo Gallindo Marcellus Tavares.

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

Page 5: Brew Fernando Brayner Gustavo Gallindo Marcellus Tavares.

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)

Page 6: Brew Fernando Brayner Gustavo Gallindo Marcellus Tavares.

BREW no celular

• Desenvolvimento independente de chipset dos dispositivos– Portabilidade

• Aplicativos podem ser escritos em JAVA, C ou C++

Page 7: Brew Fernando Brayner Gustavo Gallindo Marcellus Tavares.

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

Page 8: Brew Fernando Brayner Gustavo Gallindo Marcellus Tavares.

BREW X J2ME

• Desvantagens– Solução de compressão deve ser escrita

pelos desenvolvedores– Inexistência de perfis

Page 9: Brew Fernando Brayner Gustavo Gallindo Marcellus Tavares.

Motivação

Page 10: Brew Fernando Brayner Gustavo Gallindo Marcellus Tavares.

BREW Hoje

• 44 fabricantes de dispositivos

• 31 países• $700M+ Publicadoras/Desenvolvedores

Page 11: Brew Fernando Brayner Gustavo Gallindo Marcellus Tavares.

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

Page 12: Brew Fernando Brayner Gustavo Gallindo Marcellus Tavares.

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

Page 13: Brew Fernando Brayner Gustavo Gallindo Marcellus Tavares.

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...

Page 14: Brew Fernando Brayner Gustavo Gallindo Marcellus Tavares.

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

Page 15: Brew Fernando Brayner Gustavo Gallindo Marcellus Tavares.

Partes de uma aplicação Brew

Page 16: Brew Fernando Brayner Gustavo Gallindo Marcellus Tavares.

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

Page 17: Brew Fernando Brayner Gustavo Gallindo Marcellus Tavares.

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

Page 18: Brew Fernando Brayner Gustavo Gallindo Marcellus Tavares.

Em resumo...

Tudo pronto pra rodar no emulador...

Page 19: Brew Fernando Brayner Gustavo Gallindo Marcellus Tavares.

• 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

Page 20: Brew Fernando Brayner Gustavo Gallindo Marcellus Tavares.

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

Page 21: Brew Fernando Brayner Gustavo Gallindo Marcellus Tavares.

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

Page 22: Brew Fernando Brayner Gustavo Gallindo Marcellus Tavares.

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

Page 23: Brew Fernando Brayner Gustavo Gallindo Marcellus Tavares.

Compilação do BRI

• Compilador embutido no Resource Editor– Edita os Recursos– Salva (.BRI)– Compila– BREW Application Resource gerado

Page 24: Brew Fernando Brayner Gustavo Gallindo Marcellus Tavares.

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

Page 25: Brew Fernando Brayner Gustavo Gallindo Marcellus Tavares.

Como o MIF e a Aplicação se conectam

Page 26: Brew Fernando Brayner Gustavo Gallindo Marcellus Tavares.

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

Page 27: Brew Fernando Brayner Gustavo Gallindo Marcellus Tavares.

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

Page 28: Brew Fernando Brayner Gustavo Gallindo Marcellus Tavares.

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

Page 29: Brew Fernando Brayner Gustavo Gallindo Marcellus Tavares.

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.

Page 30: Brew Fernando Brayner Gustavo Gallindo Marcellus Tavares.

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++

Page 31: Brew Fernando Brayner Gustavo Gallindo Marcellus Tavares.

uiOne

• Personalização da interface é dependente da aplicação

• Plataforma para o desenvolvimento de UIs ricas– Novos serviços de personalização

Page 32: Brew Fernando Brayner Gustavo Gallindo Marcellus Tavares.

uiOne

• Passado:– Código monolítico– Grande esforço para se

criar UI para cada dispositivo

Page 33: Brew Fernando Brayner Gustavo Gallindo Marcellus Tavares.

uiOne• Hoje:

– Sistema: gerenciamento dos componentes dos dispositivos – BREW client

– Serviços: engines, protocolos: (BREW extensions)

– Aplicações BREWSistema

Serviços

Aplicação + UI

Page 34: Brew Fernando Brayner Gustavo Gallindo Marcellus Tavares.

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

Page 35: Brew Fernando Brayner Gustavo Gallindo Marcellus Tavares.

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

Page 36: Brew Fernando Brayner Gustavo Gallindo Marcellus Tavares.

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

Page 37: Brew Fernando Brayner Gustavo Gallindo Marcellus Tavares.

uiOne

Trig – User Interface

Triglet- UI update•Update dinâmico de uma parte da UI•Estratégia realizada na concepção da interface

Page 38: Brew Fernando Brayner Gustavo Gallindo Marcellus Tavares.

uiOne

• TrigPlayer– Roda sobre o BREW como uma extensão– Baixados automaticamente com os Trigs

ou pré-instalado– Instalado uma vez por dispositivo

Page 39: Brew Fernando Brayner Gustavo Gallindo Marcellus Tavares.

uiOne

• Trigs• Hierarquia de arquivos que

descrevem a UI de uma aplicação– TrigML– Imagens– Update– Channels– Text– Properties

Page 40: Brew Fernando Brayner Gustavo Gallindo Marcellus Tavares.

TrigML – Exemplo (1/6)<grid/> - define regiões

Page 41: Brew Fernando Brayner Gustavo Gallindo Marcellus Tavares.

TrigML – Exemplo (2/6)<group/> - especificar atributos em uma região

Page 42: Brew Fernando Brayner Gustavo Gallindo Marcellus Tavares.

TrigML – Exemplo (3/6)

Page 43: Brew Fernando Brayner Gustavo Gallindo Marcellus Tavares.

TrigML – Exemplo (4/6)

Page 44: Brew Fernando Brayner Gustavo Gallindo Marcellus Tavares.

TrigML – Exemplo (5/6)

Page 45: Brew Fernando Brayner Gustavo Gallindo Marcellus Tavares.

TrigML – Exemplo (6/6)

Page 46: Brew Fernando Brayner Gustavo Gallindo Marcellus Tavares.

TrigML – Comunicação com atores

Page 47: Brew Fernando Brayner Gustavo Gallindo Marcellus Tavares.

TrigBuilder

Page 48: Brew Fernando Brayner Gustavo Gallindo Marcellus Tavares.

uiOne - Canais

Page 49: Brew Fernando Brayner Gustavo Gallindo Marcellus Tavares.

uiOne - Triglet

• Pacotes eviados OTA para os dispositivos