14
ANDroid Conference - Ancona Giorgio Mandolini [email protected] @g_mandolini Rapid Application Development con Titanium Appcelerator

Giorgio Mandolini - Rapid application development con titanium appcelerator

Embed Size (px)

DESCRIPTION

Giorgio Mandolini - Rapid application development con titanium appcelerator 15 Aprile 2014 - ANdroid Conference - GDG Ancona

Citation preview

Page 1: Giorgio Mandolini - Rapid application development con titanium appcelerator

ANDroid Conference - Ancona

Giorgio [email protected]@g_mandolini

Rapid Application Development con

Titanium Appcelerator

Page 2: Giorgio Mandolini - Rapid application development con titanium appcelerator

ANDroid Conference - Ancona

Ti

Titanum Appcelerator

Titanium is an open source framework for building native, hybrid and mobile web apps from a single JavaScript-based SDK

other

JavaScript

Page 3: Giorgio Mandolini - Rapid application development con titanium appcelerator

ANDroid Conference - Ancona

Yes… JavaScript :-)

Page 4: Giorgio Mandolini - Rapid application development con titanium appcelerator

ANDroid Conference - Ancona

How does it work ?

Application JS

APIs and Optional Modules

Bridge

OS (Android, iOS, other)

other

SDK

3 major components

● JavaScript source code (inlined into a Java or Objective-C file and compiled as an encoded string),

● the platform-specific implementation of the Titanium API in the native programming language,

● a JavaScript interpreter that will be used to evaluate code at runtime

http://www.appcelerator.com/blog/2012/05/comparing-

titanium-and-phonegap/

Page 5: Giorgio Mandolini - Rapid application development con titanium appcelerator

ANDroid Conference - Ancona

How does it work ? (2)● When your application is launched, a JavaScript execution environment

is created in native code and your application source code is evaluated.

● Injected into the JavaScript runtime environment of your application is what we call “proxy” objects – basically, a JavaScript object which has a paired object in native code.

● Colloquially we will often refer to “JavaScript land” and “native land” in a Titanium application, as they are kind of parallel universes to one another. The proxy object exists both in JavaScript land and native land and serves as the “bridge” between the two.

http://www.appcelerator.com/blog/2012/05/comparing-titanium-and-phonegap/

Page 6: Giorgio Mandolini - Rapid application development con titanium appcelerator

ANDroid Conference - Ancona

How does it work ? (3)

http://docs.appcelerator.com/titanium/latest/#!/guide/Titanium_Module_Concepts

Page 7: Giorgio Mandolini - Rapid application development con titanium appcelerator

ANDroid Conference - Ancona

Titanium + Alloy

Page 8: Giorgio Mandolini - Rapid application development con titanium appcelerator

ANDroid Conference - Ancona

Anatomia di un progetto Alloy

Model

View

Controller ● Architettura MVC● Stili CSS like● Data-bind su Modelli

backbone.js

Page 9: Giorgio Mandolini - Rapid application development con titanium appcelerator

ANDroid Conference - Ancona

tiapp.xml - Il cuore della nostra app

Optional Modules

Page 10: Giorgio Mandolini - Rapid application development con titanium appcelerator

ANDroid Conference - Ancona

Extending API

why?● Accessing specific OS features● Leveraging existing native

libraries ● Optimizing critical portions of

the app● Extending portions of the

Titanium Mobile framework

how?● Creating one or more native

modules throught the Titanium Module SDK

● Great flexibility ● Easy to distribute (Open

Source, Binary packages, Appcelerator Marketplace)

http://www.slideshare.net/omorandi/extending-appcelerator-titanium-mobile-through-native-modules© Olivier Morandi - http://titaniumninja.com/

Page 11: Giorgio Mandolini - Rapid application development con titanium appcelerator

ANDroid Conference - Ancona

Run! Ehm… wait!

Lanciamo l’app...● Android Emulator ? → :-(● Android Emulator x86 + Intel HAXM ? → not bad!● Real devices → real feedback, but not so viable● Genymotion ? → better than Intel HAXM

...ma possiamo fare di meglio!● Come mettere tutto insieme?● Come testare (quasi) istantaneamente su più device/emulatori?

Page 12: Giorgio Mandolini - Rapid application development con titanium appcelerator

ANDroid Conference - Ancona

TiShadow comes to the rescue!

tishadow app● Install once (a few), many runs

tishadow server● push the app to connected hosts

tishadow cli● our tool to send commands to

server

Page 13: Giorgio Mandolini - Rapid application development con titanium appcelerator

ANDroid Conference - Ancona

TiShadow: automated test

Jasmine● BDD● Assertions● Synch & Asynch test

tishadow spec● run tests against connected devices● tishadow @ spec --update -l nl → some magic :-)

Page 14: Giorgio Mandolini - Rapid application development con titanium appcelerator

ANDroid Conference - Ancona

Demo time