EPx professional blog and repository for braindumps
2007/11/20
Desenvolvimento Série 60 para quem desenvolve em Linux - parte 1
Tendo enfrentado neste ano o desafio de desenvolver para Symbian e Série 60, vindo de longos anos de experiência anterior exclusiva em Linux, achei que seria interessante escrever algumas impressões, para quem pretende desenvolver algo em Série 60.
Em primeiro lugar, é uma filosofia completamente diferente. Ainda mais para quem está acostumado a desenvolver em terminal, usando make e vi. No Symbian, você vai usar um ambiente pronto, e o jeito é confiar nele.
Para começar, é preciso usar o Windows, pois as ferramentas são apenas para Windows. No site http://forum.nokia.com, obtenha os pacotes Carbide.c++ (versão 1.2 funciona bem, as anteriores não), e o SDK S60 C++ apropriada para seu celular. Presumindo que você tem um celular Série 60 3a edição, então seria o SDK S60 C++ for 3rd Edition Feature Pack 1, ou Feature Pack 2. Estas versões têm emuladores melhores que o 3rd Edition "original".
Além disto, você vai precisar do Active Perl e do Java Runtime Environment. As versões exatas recomendadas para o SDK que você está instalando serão informadas durante o processo de instalação.
Recomendo também obter o Open C, e instalar tanto no SDK quanto no seu celular. Infelizmente, OpenC existe apenas para S60 3a edição.
Para testar o ambiente e gerar rapidamente algo que possa ser instalável em seu celular, inicie o Carbide e gere um novo projeto usando o Wizard. Rodá-lo no emulador, gerar o pacote e instalá-lo no celular já vai ser um exercício, em particular para quem não está acostumado a Windows, Carbide, Symbian ou a lidar com seu celular...
Um projeto Symbian depende de inúmeras coisas estarem corretas para ele funcionar no celular. Por exemplo, cada programa tem três códigos UID (UID, UID2 e UID3). Um identifica a plataforma, outro identifica univocamente o programa, e o outro eu não sei até hoje :) Se o UID especificado no projeto não "bate" com o especificado nos arquivos de inclusão, o programa funciona no emulador porém não funciona no celular. Começar um projeto a partir de um template do Wizard evita esse tipo de dissabor.
Gerar um projeto a partir do Wizard também permite explorar logo o esqueleto de um projeto Symbian, e a forma de construir projetos.
A (única) parte que eu realmente gostei do Symbian foi o esquema de construção de programas. Pelo fato da estrutura do código ser mais rígida, fica mais fácil tratar a questão da construção. Todo projeto Symbian tem uma estrutura de pastas semelhante a esta:
\group: contém os arquivoss específicos do Symbian, como BLD.INF e PROJETO.MMP
\src: fontes .cpp
\inc: arquivos de inclusão .h
\data: arquivos de inclusão com mensagens internacionalizadas e menus
\gfx: parte gráfica, como por exemplo o ícone da aplicação
\sis: onde o pacote final é jogado, geralmente contém o arquivo PROJETO.PKG
É possível mudar o nome destas pastas, mas usar os nomes padrão facilita a compreensã o do seu projeto para terceiros.
Todo o processo de compilação e empacotamento é gerenciado por apenas 3 arquivos-texto, dois da pasta \group e um da pasta \sis:
PROJETO.MMP: este é o principal deles. É neste arquivo que se especifica os UIDs (códigos numéricos) do programa, quais as pastas que contém arquivos de inclusão, quais os programas a serem compilados etc. Ele é análogo ao "Makefile.in" do software livre. Baseado neste arquivo, todo o esquema de construção e tratamento de dependências é levado a cabo. Exemplo:
BLD.INF: Define quais arquivos MMP serão invocados para construção, e também define, no caso de bibliotecas DLL, quais arquivos de inclusão devem esr copiados para Epoc32\include, para serem vistos por outros projetos. Exemplo:
PRJ_PLATFORMS WINSCW ARMV5 GCCE
PRJ_MMPFILES
gnumakefile icons_scalable_dc.mk
EPx.mmp
PROJETO.PKG: define o empacotamento do programa para distribuição aos celulares. Essencialmente lista os arquivos que serão incluídos no pacote. Equivalente ao "debian/control" do Debian, ou ao "programa.rpm" do RedHat. Exemplo:
;Language - standard language definitions &EN
; standard SIS file header #{"EPx"},(0xE1BFA2A2),1,0,0
;Localised Vendor name %{"Vendor-EN"}
;Unique Vendor name :"Vendor"
;Supports Series 60 v 3.0 [0x101F7961], 0, 0, 0, {"Series60ProductID"}
;Files to install ;You should change the source paths to match that of your environment ; "$(EPOCROOT)Epoc32\release\$(PLATFORM)\$(TARGET)\EPx.exe" -"!:\sys\bin\EPx.exe" "$(EPOCROOT)Epoc32\data\z\resource\apps\EPx.rsc" -"!:\resource\apps\EPx.rsc" "$(EPOCROOT)Epoc32\data\z\private\10003a3f\apps\EPx_reg.rsc" -"!:\private\10003a3f\import\apps\EPx_reg.rsc" "$(EPOCROOT)Epoc32\data\z\resource\apps\EPx.mif" -"!:\resource\apps\EPx.mif"
; Add any installation notes if applicable ;"EPx.txt" -"!:\private\E1BFA2A2\EPx.txt"
;required for application to be covered by backup/restore facility "..\sis\backup_registration.xml" -"!:\private\E1BFA2A2\backup_registration.xml"
E isso é tudo. Esses 3 arquivos gerados 99% automaticamente, mais os fontes .cpp e .h, é tudo que se precisa para construir um programa Symbian, seja na linha de comando ou no IDE Carbide. É muito, mas muito mais simples do que o esquema automake/autoconf comum em software livre.
No Carbide, para importar um projeto, basta mandá-lo importar o BLD.INF, pois a partir deste arquivo ele acha os MMPs e por conseqüência todo o resto dos arquivos. O arquivo .PKG tem de ser escolhido manualmente no Carbide, mas isso é simples.
Na linha de comando, preparar um novo projeto para construção envolveria ir para a pasta group\, rodar
BLDMAKE BLDFILES
o que gera um script chamado ABLD.BAT. Dali para frente, basta chamar ABLD.BAT para reconstruir o projeto a cada mudança.
0 Comentários:
Postar um comentário
<< Início