Iniciando no Symbian C++ para Serie 60 – Parte 03
Neste artigo faremos testes no aparelho e no emulador.
Iniciando no Symbian C++ para Serie 60 – Parte 03
Testando no aparelho vs testando no emulador:
Considerando a diferente natureza das plataformas WINS (emulador) e ARMi (o Hardware alvo), é natural esperar grandes diferenças entre as duas plataformas.No entanto, a equipe de programadores da Symbian Ltd e da Nokia fez um excelente trabalho, criando um emulador capaz de recriar a plataforma symbian no emulador EPOC , em seus aspectos mais críticos.
Mesmo sendo um excelente emulador, ainda existem questões por levar e consideração:
·Temporização:
Alem da execução no PC ser mais rápida. existem outras diferenças entre WINS e ARMi. Curiosamente, ARMi tem mais ticks de relógio que WINS ( 1/64 contra 1/10) ,embora a tela só possa ser atualizada 30 vezes por segundo no emulador.
·modelo de threads e processos:
A plataforma WINS usa o modelo de threads e processos do windows, e por isso chama-se WINS (Windows Single Process),pois todas as aplicações compartilham um único processo, mas rodam em threads diferentes, enquanto em ARMi , cada aplicação possui seu próprio processo. Para aplicações que dependem dessa organização, isso pode ser um fator complicante
·Memória e pilha:
a pilha e a memória para a plataforma WINS são ajustáveis. então , se sua aplicação requer mais memória, você coloca mais na configuração do emulador. infelizmente , com ARMi , não há como fazer muito neste sentido. podemos, no entanto pedir mais memória ao sistema dentre o pouco disponível.
·Alinhamento de palavra:
Diferentemente da WINS , a plataforma ARMi usa endereços alinhados em 32 bit, então acessos diretos a endereços que não estiverem nesse formato podem causar violações de acesso
Esqueleto de uma aplicação básica:
raiz da DLL->Application->Document->AppUi->View
Raiz de uma DLL:
Neste ponto, temos duas funções NewApplication e E32DLL.
a primeira , cria e retorna pro sistema operacional um ponteiro de aplicação segundo esse modelo. Já a segunda, E32DLL é o ponto de entrada da DLL, no entanto, essa função normalmente apenas retorna a constant KErrNone
Application , derivada de CEikApplication ,que é nova no Symbian 6 , mas que vem de CApaApplication do Epoc Release 5.
constrói o ambiente básico pra criar nossa aplicação básica. constrói também coisas como a cleanup stack ,que é uma estrutura de controle útil pra preservar a memória do sistema em caso de problemas
Ex:
class MyApplication:public CEikApplication
{
private:
CApaDocument* CreateDocumentL();
TUid AppDllUid() const
{
return KUidMy1st;
}
};
Document, derivada de CEikDocument , é nova para o Symbian 6 , mas deriva de CApaDocument, do Epoc Release 5.
Constrói uma poderosa estrutura de manipulação de dados persistentes, mas que para a Series 60 , não é tão utilizada. No Symbian em geral , é nesta parte do programa que cuida do documento aberto pelo programa.
Ex:
class MyDocument : public CEikDocument
{
public:
static MyDocument* NewL(CEikApplication& aApp);
MyDocument(CEikApplication& aApp);
void ConstructL();
private:
CEikAppUi* CreateAppUiL()
{
return new(ELeave) MyAppUi;
}
};
AppUi, derivada de CEikAppUi que por sua vez é derivada de CCoeAppUi e as duas são novas para o Symbian 6.
ela é importante pq ela contem a informação da organização da interface com o usuário
bem como tratamento de eventos e outras características da aplicação na interação com o usuário.Ela também é responsável pela criação das Views da aplicação
Ex:
class MyAppUi : public CEikAppUi
{
public:
void ConstructL();
~MyAppUi();
private:
CCoeControl* AppView;
};
a View é justamente o que o nome sugere, a representação visual dos dados da aplicação. Ela é derivada de CCoeControl ,que existe desde o Epoc Release 5.
é na View que entra grande parte da costumização que transforma nossa aplicação.
Ex:
class MyAppView:public CCoeControl
{
public:
static MyAppView* NewL(const TRect& Rect);
MyAppView();
~MyAppView();
TInt32 PressState;
void ConstructL(const TRect& Rect);
TInt iX,iY;
private:
CFbsBitmap* Teste;
CFbsBitmap* Fundo;
CPeriodic *iTimer;
void Draw(const TRect& Rect) const;
TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType);
static TInt Timedfunc(TAny* View);
void ModifyBitmap();
void UpdateScreen();
};
Dicionário Series 60:
middleware: camada intermediaria de software;
embedded: embarcado- refere-se a sistemas contidos inteiramente em uma única peça e que é impossível separar um componente do resto;
cross-plataform: plataforma cruzada- refere-se ao desenvolvimento em uma plataforma, mas que somente será executado em outra plataforma;
Arquivos SIS: Symbian Instalation System- arquivos de instalação do sistema Symbian;
Heap: “zona” de memória. A memória disponível para livre alocação;
UI- User Interface. a interface com o usuário;
Engines: é a parte dos sistemas que processa os dados;
CORE: a parte mais interna do sistema, como os servers e o kernel
ARM , ARM4,ARMi,Thumb : ARM é o processador que dá vida ao sistema da Series 60 e ARM4,ARMi e Thumb são seus modos de operação. ARM4 é um modo em que o código é maior , mas é extremamente veloz. Thumb é um modo de operações pequenas, 16 bits, mais lento e econômicos em termos de energia. Já o ARMi é um modo intermediário, sendo compatível com os dois modos.
Conclusão:
Com este artigo, eu não digo que o leitor vai entender tudo sobre a Serie 60 da Nokia, mas com certeza já vai entrar para o mundo móbile preparado para aprender com a documentação online, que é farta e cada vez maior, com a literatura especializada e o com principal, com a experimentação.
Para um aprendizado mais profundo, recomendo ao leitor registrar-se no Fórum Nokia (www.forum.nokia.com) e no site Code Blood (www.codeblood.com.br). Para literatura em formato tradicional, recomendo o Developing Series 60 Applications, da EMCC softwate (ISBN:0-321-22722-0). Recomendo também a aquisição ou empréstimo de um aparelho Series 60. Nada supera o verdadeiro teste do aparelho (muito menos a alegria de ver seu programa funcionar no aparelho).
A partir de agora, tudo depende de você ,leitor, para se transformar em DESENVOLVEDOR – bons códigos!
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo