Upload
eduardo-lima
View
467
Download
1
Embed Size (px)
DESCRIPTION
Apresentação no Fórum Cearense de Software Livre no dia 20/10/2006 em Fortaleza.
Citation preview
Portando Aplicações Para a Plataforma
MaemoEduardo Lima @ FCSL – 20/10/2006
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
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
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
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
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
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
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
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
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
Estudo de Caso: Gnumeric•Planilha de
cálculo do projeto GNOME
•Linguagem C
•GTK+
•Diretamente dependente de poucas bibliotecas
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?
Antes De Botar A Mão Na Massa•Uma análise da área de trabalho do Nokia 770
Análise Da Área De Trabalho•Área útil para a aplicação é reduzida
Análise Da Área De Trabalho• O teclado virtual ocupa bastante espaço (155 pixels)
Análise Da Área De Trabalho•Cada toolbar irá custar 55 pixels
Análise Da Área De Trabalho•Teclado Virtual + Toolbar = Metade da área útil (210 pixels)
Análise Da Área De Trabalho•E assim por diante...
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
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
Horas, Dias, Semanas Depois...•Praticamente a metade do trabalho já feito
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
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
Mais Algumas Horas, Dias...•Nosso “produto final”
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
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
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
Perguntas