brew fernando brayner gustavo gallindo marcellus tavares

Post on 19-Apr-2015

115 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related