portando aplicações para a plataforma maemo

29
Portando Aplicações Para a Plataforma Maemo Eduardo Lima @ FCSL – 20/10/2006

Upload: eduardo-lima

Post on 05-Jul-2015

467 views

Category:

Technology


1 download

DESCRIPTION

Apresentação no Fórum Cearense de Software Livre no dia 20/10/2006 em Fortaleza.

TRANSCRIPT

Page 1: Portando Aplicações Para a Plataforma Maemo

Portando Aplicações Para a Plataforma

MaemoEduardo Lima @ FCSL – 20/10/2006

Page 2: Portando Aplicações Para a Plataforma Maemo

Apresentação

•Eduardo Lima <[email protected]>

• Trabalha com Linux desde 1999

• Pesquisador do Instituto Nokia de Tecnologia (INdT)

• Equipe de Plataforma/SDK

• Porte de aplicações GNOME/GTK+ para Maemo

• Abiword, Evince, Gnumeric, LeafPad, Rhythmbox, Tapioca, Xournal, ....

• etrunko @ IRC

• irc.freenode.net (#maemo, #tapioca-voip)• irc.gimp.net (#gnome-br, #gnome-hackers, #gnumeric)

• http://etrunko.blogspot.com

Page 3: Portando Aplicações Para a Plataforma Maemo

O Instituto Nokia de Tecnologia• Instituição sem fins lucrativos, fundada

pela nokia em outubro de 2001 com investimentos da Lei de Informática.

• 3 escritórios - Manaus, Brasília e Recife

• Foco em pesquisa e desenvolvimento

• Mecânica e produtos eletrônicos

• Open Source

• Software e Multimídia

• Telecomunicações

• Excelência em operações e logística

http://www.indt.org.br

Page 4: Portando Aplicações Para a Plataforma Maemo

INdT - Estrutura

• Parceiros

Área Técnica• Quatro áreas principais para

execução dos projetos

Área Administrativa• Suporte para a área técnica

(Governança, RH, Administração e Finanças, Escritório de Projetos, TI)

• Cerca de 150 funcionários

Page 5: Portando Aplicações Para a Plataforma Maemo

A Plataforma Maemo•Usada para o desenvolvimento de aplicações para o Nokia

770 e outros dispositivos portáteis compatíveis

•Criada para desenvolvedores com interesse na criação de aplicações pessoais ou comerciais para Internet Tablets

•Formada por componentes populares de Software Livre largamente utilizados e presentes nas principais distribuições

Page 6: Portando Aplicações Para a Plataforma Maemo

Nokia 770 Internet Tablet•OMAP 1710 DSP

•Texas ARM 220 MHz

•Tela 4.13'' widescreen

•Touchscreen

•Resolução 800x480

•65 mil cores (16 bpp)

•WLAN 802.11 b/g

•Bluetooth 1.2

•USB

•64 MB RAM 128 MB Flash

•MMC-RS de até 1GB

http://nokia.com/770

Page 7: Portando Aplicações Para a Plataforma Maemo

A Pergunta•Por que portar aplicações?

•Evitar reinvenção da roda

•São bastante utilizadas e testadas

•Estão em constante processo evolutivo

•Bom nível de maturidade

•Comunidades formadas

•Mais uma forma de contribuir com os projetos

•Explorar a potencialidade que o aparelho disponibiliza

•Não é tão difícil (à medida que se ganha experiência)

•Gratificação pessoal

Page 8: Portando Aplicações Para a Plataforma Maemo

Algumas Pedras No Caminho•Tela pequena

•Resolução aceitável

•Área útil reduzida

•Performance

•Processamento: 220 MHz

•Ausência de FPU

•Apenas 64 MB de memória RAM

•Ausência de swap

Page 9: Portando Aplicações Para a Plataforma Maemo

Mais Pedras No Caminho•Espaço de armazenamento

•128 MB flash

•Sistema de arquivos JFFS2

•Bibliotecas nativas

•Versões “antigas”

•Algumas “não podem” ser atualizadas

•Consumo de energia

Page 10: Portando Aplicações Para a Plataforma Maemo

Primeiros Passos•Documentação em http://maemo.org

•Instalar o ambiente de desenvolvimento (Maemo SDK)

•Escolher a aplicação a ser portada

•Conhecer o terreno, familiarizando-se com:

•O ambiente de desenvolvimento

•O dispositivo (se possível)

•O código fonte da aplicação

Page 11: Portando Aplicações Para a Plataforma Maemo

Estudo de Caso: Gnumeric•Planilha de

cálculo do projeto GNOME

•Linguagem C

•GTK+

•Diretamente dependente de poucas bibliotecas

Page 12: Portando Aplicações Para a Plataforma Maemo

Viabilidade do Porte•Algumas palavras proibidas

•Java, Qt, Cairo, ...

•Procure responder às seguintes perguntas

•É possível satisfazer as dependencias de bibliotecas?

•A aplicação é “pesada”?

•Realiza muitas operações de ponto flutuante?

•A instalação ocupa muito espaço em disco?

•Tem baixo consumo de memória?

Page 13: Portando Aplicações Para a Plataforma Maemo

Antes De Botar A Mão Na Massa•Uma análise da área de trabalho do Nokia 770

Page 14: Portando Aplicações Para a Plataforma Maemo

Análise Da Área De Trabalho•Área útil para a aplicação é reduzida

Page 15: Portando Aplicações Para a Plataforma Maemo

Análise Da Área De Trabalho• O teclado virtual ocupa bastante espaço (155 pixels)

Page 16: Portando Aplicações Para a Plataforma Maemo

Análise Da Área De Trabalho•Cada toolbar irá custar 55 pixels

Page 17: Portando Aplicações Para a Plataforma Maemo

Análise Da Área De Trabalho•Teclado Virtual + Toolbar = Metade da área útil (210 pixels)

Page 18: Portando Aplicações Para a Plataforma Maemo

Análise Da Área De Trabalho•E assim por diante...

Page 19: Portando Aplicações Para a Plataforma Maemo

Colocando A Mão Na Massa•Processo similar ao de qualquer sistema baseado no Debian

•Verificar a existência de pacotes para as dependências

•Obter código fonte da aplicação

•Obter código fonte das dependências ainda não disponíveis

•No ambiente scratchbox (target i386)

•Compilar e instalar as dependências

•Compilar e instalar a aplicação

Page 20: Portando Aplicações Para a Plataforma Maemo

Não Se Engane!•É um processo simples e às vezes bastante repetitivo

•Parece ser fácil, mas na maioria das vezes isso não é verdade

•É apenas o primeiro de vários problemas que estão por vir

•Para ganhar tempo e produtividade

•Procure gerar os pacotes diretamente na compilação

•Vencido este desafio, vamos ao próximo

Page 21: Portando Aplicações Para a Plataforma Maemo

Horas, Dias, Semanas Depois...•Praticamente a metade do trabalho já feito

Page 22: Portando Aplicações Para a Plataforma Maemo

Hildonização•Adaptação da aplicação para a plataforma Maemo

•Alguns componentes especializados

•HildonProgram/HildonWindow

•Diálogos para abrir/salvar arquivos

•Diálogos para escolha de fontes/cores

•Aproveitar ao máximo a área útil

•Menu “escondido” juntamente com o título da janela

•Toolbars localizadas na parte inferior da tela

Page 23: Portando Aplicações Para a Plataforma Maemo

Como Hildonizar?•Hackear o código da aplicação

•Para isto é necessário o conhecimento do código fonte

•Importante ter paciência e perseverança

•Evitar uso de muitas toolbars

•Ideal ter no máximo uma sempre visível

•Outras toolbars “escondidas” mas acessíveis

•Evitar o uso de barra de status

Page 24: Portando Aplicações Para a Plataforma Maemo

Mais Algumas Horas, Dias...•Nosso “produto final”

Page 25: Portando Aplicações Para a Plataforma Maemo

Estamos Quase Lá!•Tudo foi feito em plataforma x86

•Recompilar o sistema para a plataforma ARM

•Gerar pacotes debian

•Instalar e testar a aplicação no dispositivo

•Repetir o todo o processo até obter um resultado satisfatório

•Distribuir os pacotes via repositórios apt

Page 26: Portando Aplicações Para a Plataforma Maemo

Considerações Finais•Na teoria, qualquer aplicativo escrito em linguagem C /C++ é

portável, desde que atenda às requisições de performance

•O processo de porte de aplicações escritas em python é similar ao que foi descrito, só que bem menos penoso

•Não esquecer de retornar o código fonte para o projeto original, submetendo patches

Page 27: Portando Aplicações Para a Plataforma Maemo

Links Importantes•Web

•http://www.maemo.org•Documentação - API's, Tutoriais, How-To's, etc.•Download da toolkit de desenvolvimento (SDK)

•https://www.maemo.org/bugzilla/

•http://pymaemo.sourceforge.net

•Listas de discussão e IRC

•Da plataforma Maemo

•Do aplicativo a ser portado

Page 28: Portando Aplicações Para a Plataforma Maemo

Perguntas