You are on page 1of 51
Victor Chaves Casé EM DIREÇÃO A UMA ABORDAGEM PARA O DESENVOLVIMENTO DE APLICATIVOS MÓVEIS MULTIPLATAFORMA

Victor Chaves Casé

EM DIREÇÃO A UMA ABORDAGEM PARA O DESENVOLVIMENTO DE APLICATIVOS MÓVEIS MULTIPLATAFORMA

Trabalho de Graduação

APLICATIVOS MÓVEIS MULTIPLATAFORMA Trabalho de Graduação Universidade Federal de Pernambuco posgraduacao@cin.ufpe.br

Universidade Federal de Pernambuco posgraduacao@cin.ufpe.br www.cin.ufpe.br/~posgraduacao

RECIFE

FEV/2015

Universidade Federal de Pernambuco Centro de Informática Graduação em Engenharia da Computação Victor Chaves Casé

Universidade Federal de Pernambuco

Centro de Informática Graduação em Engenharia da Computação

Victor Chaves Casé

EM DIREÇÃO A UMA ABORDAGEM PARA O DESENVOLVIMENTO DE APLICATIVOS MÓVEIS MULTIPLATAFORMA

Trabalho apresentado ao Programa de Graduação em En- genharia da Computação do Centro de Informática da Uni- versidade Federal de Pernambuco como requisito parcial para obtenção do grau de Bacharel em Engenharia da Computação.

Orientador: Phd. Vinicius Cardoso Garcia Co-Orientador: Msc. Lenildo José de Morais

RECIFE

FEV/2015

Eu dedico este trabalho de graduação à toda minha família, amigos e professores que estiveram comigo nesta jornada.

Agradecimentos

Primeiramente, gostaria de agradecer à toda minha família pela base que me foi dada, e por me mostrar a importância da educação durante todas as etapas da minha vida. A minha noiva, Isabela, por ter me acompanhado de perto durante toda a minha graduação e principalmente no processo de desenvolvimento deste trabalho, me apoiado nos momentos mais difíceis e comemorando as alegrias das boas novas. Meus pais, Ricardo e Alessanndra, e meu irmão, Ricardo, pela paciência e compreensão, sempre presentes na longa jornada que foi a graduação em engenharia, e principalmente pelo constante apoio e exemplos que me serviram de guia nesta vida.

Aos meus amigos, cujo apoio foi fundamental para o término deste trabalho e para minha graduação. Fica aqui o meu muito obrigado a todos, especialmente para os colegas de graduação e pelas madrugadas no CIn : Danilo Pena, Diógenes Santos, Diogo Almeida , Ricardo Mariz, Pedro Neves e Victor Carriço. Aos professores Vinicius Cardoso Garcia (orientador), com o qual tive a oportunidade de trabalhar durante 2 anos como monitor-auxiliar, fica aqui meu obrigado pela confiança depositada, sempre abrindo novas oportunidades e acreditando no meu potencial. Lenildo Morais (co-orientador), obrigado pela paciência de acompanhar a evolução deste trabalho, dando valiosos feedbacks para o término do mesmo. E ao professor Kiev Gama, pela disposição de fazer parte da banca deste trabalho. Não poderia deixar de agradecer aos amigos da família Ustore pela compreensão e colaboração de todos, pelas dicas e produtivas discussões sobre o tema. Sou grato pelo convívio com vocês, que me faz aprender cada vez mais. Obrigado a todos!

The key question to keep asking is, Are you spending your time on the right things? Because time is all you have.

—RANDY PAUSCH

Resumo

A expansão do mercado tecnológico desencadeado pela apresentação em 2007 do pri- meiro iPhone resultou em uma onda de grandes oportunidades. Dentre estas, deu origem ao que hoje conhecemos como Apps. Diante da possibilidade de lucrar e distribuir estes aplicativos diretamente para o cliente final, milhares de desenvolvedores voltaram suas atenções para o desenvolvimento de aplicativos móveis. Segundo uma pesquisa encomendada pela Universidade do Alabama, estima-se que até 2017 sejam realizados aproximadamente 268 bilhões de down- loads, resultando em uma receita de $77 bilhões. Porém, assim como proporcionaram grandes oportunidades, essa abertura de mercado trouxe novos obstáculos: a onda de novos dispositivos pós-iPhone - com diferentes modelos, tamanhos distintos, hardwares diferenciados e sistema operacionais concorrentes - tornou o processo de desenvolvimento de apps muito mais complexo do que no início, em que só existiam poucos dispositivos. Atualmente, Apple, Google e Microsoft detêm a maior parte do market-share dos sistemas operacionais embarcados nos smartphones, iOS, Android e Windows Phone respectivamente. Essas empresas concorrem entre si de modo que os seus desenvolvedores sejam beneficiados, em uma tentativa de blindagem contra as outras plataformas, visto que um dos critérios de aquisição dos dispositivos é a quantidade e qualidade de apps disponíveis. Por outro lado, essa incompatibilidade entre as plataformas é tema de discussão, uma vez que ela gera um custo maior de desenvolvimento para cada plataforma suportada. A fim de minimizar esse custo, desenvolvedores começaram a pensar em uma abordagem multiplataforma em que, por exemplo, um App codificado para o iOS, tivesse um baixo custo para ser adaptado outras plataformas. Desde então, diversas abordagens estão sendo estudadas neste sentido. Após a visualização dessas, será realizada um estudo para analisar qual abordagem será mais adequada para o desenvolvimento de um aplicativo móvel multiplataforma a partir de um cenário especificado.

Palavras-chave: Desenvolvimento de aplicativos moveis, desenvolvimento multiplataforma, Titanium framework

Abstract

The expansion of the technology market triggered by the presentation of the first iPhone in 2007 resulted in a wave of great opportunities. Among these gave rise to what we now know as Apps. Given the opportunity to publish and monetize applications directly to the end customer, thousands of developers migrate their attention to the development of mobile applications. According to a survey commissioned by the University of Alabama, it is estimated that 2017 will be realized approximately 268 billion downloads, resulting in revenues of $ 77 billion. These facts, draw attention of the whole community of developers. However, great opportunities come new obstacles: the wave of new post-iPhone devices with different models, different sizes, different hardware and operating system competitors, became the apps development process much more complex than at the beginning, where there were only a few devices. Apple, Google and Microsoft, today, hold most of the market share of operating systems embedded in smartphones, iOS, Android and Windows Phone, respectively. These companies compete with each other, to bring benefits to its developers, in an attempt to shield the other platforms, since the main reason for choices between a device and the other is the quantity and quality of available apps. Furthermore, this incompatibility between platforms is the subject of debate, since it generates a higher development cost. Independent developers and companies need to pay various development teams for each supported platform, and to optimize the cost, developers began to think of a multiplatform approach where, for example, a coded App for iOS, had its development cost minimized in the work porting to other platforms. Since then, several approach being studied in this regard. After visualization of such a study is performed to examine which approach is most suitable for the development of a mobile platform application from a specified scenario.

Keywords: Development of mobile applications, cross-platform development, Titanium fra- mework

Lista de Figuras

2.1

Arquitetura do iOS

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

15

2.2

Estrutura de um aplicativo iOS

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

17

2.3

Arquitetura do Android

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

19

2.4

Estrutura de um aplicativo Android .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

22

2.5

Tabela de similiaridade

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

22

3.1

Visão Geral de um Web app

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

25

3.2

Visão Geral de um App híbrido .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

26

3.3

Visão Geral de um App gerado

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

27

3.4

Visão Geral de um App interpretado

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

28

3.5

Abordagem Cross-Compilados

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

29

3.6

Comparação entre as abordagens de desenvolvimento de aplicações móveis

.

.

37

4.1

Tela principal do AcheUPA para iOS e Android

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

39

4.2

Estrutura de diretórios

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

42

Lista de Acrônimos

API

Application Programming Interface

 

16

SDK

Software

Development

Kit

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

14

IDE

Integrated Development Environment

 

14

MVC

Model-View-Controller

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

18

DSL

Domain

Specified

Language

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

. 26

UI

User

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

. 38

JSON JavaScript Object Notation

 

44

Sumário

1 Introdução

11

1.1 Relevância do tema

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

11

1.2 Objetivos

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

12

1.2.1

Objetivos específicos

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

12

1.3 Metodologia .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

12

1.3.1

Definição de multiplataforma

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

13

1.4 Fora de escopo

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

13

1.5 Estrutura deste trabalho .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

13

2 Desenvolvimento de Aplicativos

 

14

2.1 Apps .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

14

2.2 Desenvolvimento de Apps iOS

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

14

2.2.1 Arquitetura do iOS

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

15

 

2.2.1.1 Camada Cocoa Touch

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

15

2.2.1.2 Camada de Mídia

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

16

2.2.1.3 Core Services

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

16

2.2.1.4 Core OS

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

17

2.2.2 Estrutura de um aplicativo iOS .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

17

2.3 Desenvolvimento de Apps Android .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

18

2.3.1 Arquitetura do Android .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

18

 

2.3.1.1 Application Framework

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

19

2.3.1.2 Libraries

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

21

2.3.1.3 Android Runtime

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

21

2.3.2 Estrutura de um aplicativo Android

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

21

2.4 Um comparativo sobre os componentes das plataformas .

.

.

.

.

.

.

.

.

.

.

.

.

22

2.5 Conclusões sobre o desenvolvimento de aplicativos

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

23

3 Introdução a abordagens multiplataforma

 

24

3.1 Motivação .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

24

3.2 Web apps

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

24

3.3 Apps Híbridos .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

25

3.4 Apps Gerados

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

26

3.5 Apps Interpretados

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

27

3.6 Apps Cross-Compilados

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

28

3.7 Alguns Frameworks em suas determinadas categorias

.

.

.

.

.

.

.

.

.

.

.

.

.

.

29

10

 

3.7.1 jQuery Mobile (WebApps) .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

29

3.7.2 PhoneGap/Apache Cordova (Apps Híbridos)

.

.

.

.

.

.

.

.

.

.

.

.

.

.

30

3.7.3 Titanium Framework (Apps Interpretados)

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

30

3.7.4 Applause (Apps Gerados)

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

30

3.7.5 Apportable (Apps Cross-Compilados)

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

30

3.8

A escolha de uma abordagem multiplataforma .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

31

3.8.1 Critérios para avaliação .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

31

3.8.2 Avaliação dos critérios por abordagem .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

32

3.8.3 A indicação de uma abordagem

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

36

3.9

Conclusão .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

37

4 Desenvolvimento de um estudo de caso

 

38

4.1 Introdução .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

38

4.2 Desenvolvimento do Aplicativo .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

38

 

4.2.1 Planejamento da UI .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

38

4.2.2 Implementando a UI

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

40

4.2.3 Implementando as funcionalidades .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

42

4.2.3.1 Conectando a Webservices

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

43

4.2.3.2 Geolocalização

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

45

4.2.3.3 Chamadas a API específicas .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

45

4.3

Conclusões sobre o estudo de caso

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

46

5 Conclusão

 

47

5.1 Principais Conclusões

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

47

 

5.1.1

Novas ferramentas em potencial

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

48

5.2 Trabalhos futuros

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.