86
Cordova/PhoneGap Mobile Applica5on Development with HTML/JS/CSS Gabriel Huecas December 3, 2015

Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

Embed Size (px)

Citation preview

Page 1: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

Cordova/PhoneGapMobileApplica5onDevelopment

withHTML/JS/CSSGabrielHuecas

December3,2015

Page 2: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

Layout

•  Introduc5on•  Cordova– HelloWorld– Plugins

•  Advancedexamples•  Phonegap•  Adobebuild•  OtherSDKs:AndroidStudio,Ionic,IntelXDk,…

Page 3: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

INTRODUCTION

Page 4: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

Resources

•  hSp://cordova.apache.org/•  www.phonegap.com– FAQ:hSp://phonegap.com/about/faq/

•  hSps://build.phonegap.com/

INTRODUCTION

Page 5: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

Goal

•  Buildcrosspla\ormmobileappswithHTML5,JS&CSS3– Avoidingeachmobilepla\orms’na5vedevelopmentlanguage•  EventheSDKthroughAdobePhonegapBuild

INTRODUCTION

Page 6: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

Useifyouare:•  Amobiledeveloper–  wanttoextendanapplica5onacrossmorethanonepla\orm,withouthavingtore-implementitwitheachpla\orm'slanguageandtoolset.

•  Awebdeveloper–  wanttodeployawebappthat'spackagedfordistribu5oninvariousappstoreportals.

•  Amobiledeveloper–  interestedinmixingna5veapplica5oncomponentswithaWebView(browserwindow)thatcanaccessdevice-levelAPIs,

–  orifyouwanttodevelopaplugininterfacebetweenna5veandWebViewcomponents.

INTRODUCTION

Page 7: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

Frameworkfor

•  Pla\ormforbuildingna5vemobileappsusingHTML,JS&CSS

•  SetofDeviceAPIs– Allowsmobileappdevelopertoaccessna5vedevicefunc5onsfromJS

•  CombinedwithUIframework–  JqueryMobile,DojoMobile,SenchaTouch

INTRODUCTION

Page 8: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

SupportedOS

AmazonFireOS Android Bada Blackberry10

FirefoxOS iOS Symbian Tizen

Ubuntu WebOS Windows8 WindowsPhone7

WindowsPhone8

INTRODUCTION

hSp://cordova.apache.org/docs/en/latest/guide/support/index.html

Page 9: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

Packaging&Distribu5on

•  Na5ve-installedapplica5on–  iOS->.ipa(iPhoneApplica5onArchive)– Android->.apk(AndroidApplica5onPackage)– WindowsPhone->.xap(MicrosojWindowPhoneOSapplica5onpackage)

•  Distributedthroughcorrespondingchannels:•  iTunes,GooglePlay,AmazonMarket,BlackBerryAppWorld,WindowsPhoneMarketplace,etc.

INTRODUCTION

Page 10: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

Interface

•  TheappUIcreatedwithHTML,CSS&JS–  100%x100%

•  Justonedisplay UserInterfaceBrowser-based

WebView100%x100%

INTRODUCTION

Page 11: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

Na5veWebview

•  Severalrenderingengined –  Resultmaydiffer

•  Development•  Tes5ng•  UX

S.O. Componente

iOS UIWebView

Android Android.webkit-WebView

Etc. Etc.

INTRODUCTION

Page 12: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

Client-Server

•  CordovaclientAppconnectswithserverapp– Datasend/receive,bussineslogin,DataBasecommunica5on

– Server:any•  Apache,IIS,nginx,…•  ServerApp:Java,PHP,Ruby,Node.js,…

•  Cordovaclientappindependantofbackendtechnology– Standardwebprotocolos

INTRODUCTION

Page 13: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

DataBases

•  Cordovaclientapp(usually)donotinteractdirectlywiththedatabase– Throughtheserver– StandardHTTPrequests

•  REST-ful,XML,JSON,SOAP,websockets–  SametechniquesAJAX-basedapps

INTRODUCTION

Page 14: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

Frameworks

•  Facilitateourappbehaveslikena5ve–  JQueryMobile,SenchaTouch,…

INTRODUCTION

Page 15: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

DeviceAPIs•  Accelerometer•  BaSeryStatus•  Camera•  Capture•  Compass•  Connec5on•  Contacts•  Device•  Events•  File

•  Geoloca5on•  Globaliza5on

–  Locale,language,and5mezone

•  InAppBrowser•  Media•  No5fica5on•  SplashScreen•  StatusBar•  Storage•  Vibra5on

hSps://cordova.apache.org/plugins/

INTRODUCTION

Page 16: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

Runningtheapp1.  Localbuild:runsinadeviceoremulator2.  Throughalocalserver

PhoneGapDesktopApp&PhoneGapMobileApp

3.  CompiledinthecloudhSps://build.PhoneGap.com

4.  FromSDKs/IDEs:AndroidStudio/IntelXDK/others…

•  We’llseethemall…

INTRODUCTION

Page 17: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

Summary

•  Actasanappcontainer– MobileappsHTML/JS/CSS,packagedasna5veapp

•  ConsistentJSAPIacrosssupporteddevices•  Majordevicepla\ormshavegoodsupport•  CordovaistheengineofPhoneGap•  Cordovacanbeusedstraight-up,bypassingthePhoneGap-brandeddownload

•  Extensibleviaplugins•  Free&opensource

INTRODUCTION

Page 18: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

CORDOVA

Page 19: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

Basicrequirements

•  ANT(AnotherNeatTool)J– hSp://ant.apache.org/

•  Download•  Unpack•  ANT_HOMEpathtoantfolder•  PATHaddANT_HOME\bintoPATHenvvar

–  DependsonOS

•  GITclient(hSps://git-scm.com/)•  Node.js(hSps://nodejs.org/)– Besurenodeandnpm canbeexecuted

CORDOVA

Page 20: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

Advancedrequirements

•  AndroidSDK•  iOS:Xcode•  Windows:WindowsPhoneSDK

•  SeedetailsandmoremobileOSs:hSps://cordova.apache.org/docs/en/latest/guide/pla\orms/index.html

Page 21: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

Configura5on(OSXUnix)ANDROID_HOME=/opt/google/android-sdk-linux ANT_HOME=/opt/Apache/apache-ant-1.9.6

ANDROID_EMULATOR_FORCE_32BIT=true export ANDROID_HOME

export ANT_HOME

export ANDROID_EMULATOR_FORCE_32BIT

PATH=${PATH}:${ANDROID_HOME}/tools:${ANT_HOME}/bin

export PATH

CORDOVA

Page 22: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

ConfiguringLinux

•  SomeversionsofLinuxcomewith‘node’command,notrelatedwith‘node.js’

•  Solu5ons:– sudoapt-getinstallnodejs-legacy– sudoln–s/usr/bin/node/usr/bin/nodejs– StackoverflowandhSps://github.com/nodejs/node-v0.x-archive/issues/3911givesyoumoreinforma5on

Page 23: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

Configura5on(Windows)WinXP/Vista Start-> My PC (right click)-> Properties Advanced Options -> Environment variables Win 8/10 Start -> Computer (right click)-> properties Advanced system settings -> Environment variables (Note:viewmaydifferuponWinOSversion)

CORDOVA

Page 24: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

Addenvironmentvariables

•  EditPATH•  AddANDROID_HOME

ANT_HOME

•  Ifrunningona32bitsystem:

ANDROID_EMULATOR_FORCE_32BIT=true

CORDOVA

Page 25: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

InstallingCordova

•  FlavoursOSX UNIX: $ sudo npm install –g cordova Windows : C:\> npm install –g cordova

•  Without–g:localinstalla5on,useronly

CORDOVA

Page 26: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

Simpleexample

$> cordova create hello com.example.hw HelloWorld

$> cd hello

$ hello> cordova platform add android

$ hello> cordova build

$ hello> cordova emulate android

CORDOVA

Page 27: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

Simpleexampleexplained(I)cordova create hello com.example.hello HelloWorld

•  Hello:folder•  Com.example.hello:package•  HelloWorld:webappname

CORDOVA

Page 28: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

Simpleexampleexplained(II)$>cdhello$hello>cordovaplatformaddandroid$hello>cordovabuild$hello>cordovaemulateandroid

GotohellofolderAddpla\ormandroidBuildandroidna5veappEmulateapp

Seenextslidetoconfigureemulator

CORDOVA

Page 29: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

Comnfiguringandroidemulator

•  InstallandroidSDK– androidcommandmustbeavailable

•  CreateanAVD(AndroidVirtualDevice)–  cordova emulate androidwillusethefirstAVD

•  Mayspecifyaspecificone:cordova emulate android --target “<AVD name>”

CORDOVA

Page 30: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

InstallinginAndroidemulator$>cordovaemulateandroid...BUILDSUCCESSFULTotaltime:34.789secsBuiltthefollowingapk(s):/Users/gabriel/Docencia/PhoneGap/Ejemplos/hello/platforms/android/build/outputs/apk/android-debug.apkInstallingapponemulator...Usingapk:/Users/gabriel/Docencia/PhoneGap/Ejemplos/hello/platforms/android/build/outputs/apk/android-debug.apkINSTALLSUCCESSUnlockingscreen...Launchingapplication...LAUNCHSUCCESS

CORDOVA

Page 31: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

CORDOVA

Execu5ngtheapp

Page 32: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

CommandsGlobalCommandscreate...................Createaprojecthelp.....................GethelpforacommandProjectCommandsinfo.....................Generateprojectinformationrequirements..............Checksandprintoutalltherequirementsforplatformsspecifiedplatform..................Manageprojectplatformsplugin....................Manageprojectplugins

CORDOVA

Page 33: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

Commandsprepare...........Copyfilesintoplatform(s)forbuildingcompile...........Buildplatform(s)clean.............Cleanupprojectfrombuildartifactsrun...............Runproject(includingprepare&&compile)serve.............Runprojectwithalocalwebserver(includingprepare)aliases:build->cordovaprepare&&cordovacompileemulate->cordovarun--emulator

CORDOVA

Page 34: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

iOS

•  EmulatorMUSTbeinstalled

•  XCode

CORDOVA

Page 35: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

iOS$>sudonpminstall-gios-sim$>cordovaplatformaddios$>cordovaemulateiosBuildingproject:/Users/gabriel/Docencia/PhoneGap/Ejemplos/hello/platforms/ios/HelloWorld.xcodeproj

Configuration:DebugPlatform:emulator

...===BUILDTARGETCordovaLibOFPROJECTCordovaLibWITHCONFIGURATIONDebug===...**BUILDSUCCEEDED**Notargetspecifiedforemulator.DeployingtoiPhone-6simulatores.upm.dit.iweb.hello:9088**RUNSUCCEEDED**

CORDOVA

Page 36: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

iOSemulator$>cordovaplatformaddios$>./platforms/ios/cordova/lib/list-emulator-imagesiPhone-4s,9.1iPhone-5,9.1...$>cordovaemulateios--target="iPhone-4s"$>cordovaemulateios--target="iPad-Air"$>cordovaemulateios--target="iPhone-6"$>cordovaemulateios--target="iPhone-6-Plus”$>ios-simshowdevicetypesiPhone-4s,9.1iPhone-5,9.1...

CORDOVA

Page 37: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

Browser•  Runappona(chrome)browser

cordovapla\ormaddbrowsercordovarunbrowser

CORDOVA

Page 38: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

InstallingonAndroiddevice

•  USBconnecteddevices– adbdevices:listconnecteddevices– Besuredeveloperop5onsareenabledindevice

•  hSp://developer.android.com/intl/es/tools/device.html

o cordovarun--deviceandroido adb-s<deviceId>install–rpla\orms/android/build/outputs/apk/<choose-one>.apk

•  Maydistributetheapkviacloudstorage(drive,drop-box,one,…),bye-mail,…

CORDOVA

Page 39: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

InstallingoniOSdevice

•  Unfortunately,Idonotknow…yet

CORDOVA

Page 40: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

Communica5ngwiththeHW•  Plugins:add-oncodethatprovidesaninterfacetona5vecomponents

hSp://cordova.apache.org/plugins/•  Registeredinregistry.cordova.io– Alsothird-partyplugins

•  Commandsandop5ons:cordovapluginls:listalospluginsinstaladoscordovapluginsearch<word>:buscaplugincordovapluginadd<name>:añadeelplugin<name>cordovapluginremove<plugin>:eliminaunplugininstalado

CORDOVA

Page 41: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

Availableplugins(I)

•  Basicdeviceinforma5on(DeviceAPI):$cordovapluginaddcordova-plugin-device

•  NetworkConnec5onandBaSeryEvents:$cordovapluginaddcordova-plugin-network-informa5on$cordovapluginaddcordova-plugin-baSery-status

•  Accelerometer,Compass,andGeoloca5on:$cordovapluginaddcordova-plugin-device-mo5on$cordovapluginaddcordova-plugin-device-orienta5on$cordovapluginaddcordova-plugin-geoloca5on

CORDOVA

Page 42: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

Availableplugins(II)

•  Camera,MediaplaybackandCapture:$cordovapluginaddcordova-plugin-camera$cordovapluginaddcordova-plugin-media-capture$cordovapluginaddcordova-plugin-media

•  Accessfilesondeviceornetwork(FileAPI):$cordovapluginaddcordova-plugin-file$cordovapluginaddcordova-plugin-file-transfer

CORDOVA

Page 43: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

Availableplugins(III)

•  No5fica5onviadialogboxorvibra5on:$cordovapluginaddcordova-plugin-dialogs$cordovapluginaddcordova-plugin-vibra5on

•  Contacts:$cordovapluginaddcordova-plugin-contacts

•  Globaliza5on:$corovapluginaddcordova-plugin-globaliza5on

CORDOVA

Page 44: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

Availableplugins(IV)

•  Splashscreen:$cordovapluginaddcordova-plugin-splashscreen

•  Opennewbrowserwindows(InAppBrowser):$cordovapluginaddcordova-plugin-inappbrowser

•  Debugconsole:$cordovapluginaddcordova-plugin-console

CORDOVA

Page 45: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

FromGIT•  Ifnotregisteredinregistry.cordova.io

cordovapluginaddhSps://github.com/apache/cordova-plugin-console.git

•  Andallgitop5ons:tag,branch,inparts,…$cordovapluginaddhSps://github.com/apache/cordova-plugin-console.git#r0.2.0$cordovapluginaddhSps://github.com/apache/cordova-plugin-console.git#CB-8438cordova-plugin-console$cordovapluginaddhSps://github.com/apache/cordova-plugin-console.git#f055daec45575bf08538f885e09c85a0eba363ffIftheplugin(anditsplugin.xmlfile)isinasubdirectorywithinthegitrepo,youcanspecifyitwitha:character.Notethatthe#characteriss5llneeded:$cordovapluginaddhSps://github.com/someone/aplugin.git#:/my/sub/dir

CORDOVA

Page 46: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

LocalPlugin

•  Specifythepathtothedirectorywheretheplugin.xmlislocated$ cordova plugin add ../my_plugin_dir

CORDOVA

Page 47: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

plugman

•  TheCLIaddsplugincodeasappropriateforeachpla\orm.

•  Ifyouwanttodevelopwithlower-levelshelltoolsorpla\ormSDKs– Useplugmanu5litytoaddpluginsseparatelyforeachpla\orm

•  Instalewith:npminstall–fplugman

hSps://cordova.apache.org/docs/en/latest/plugin_ref/plugman.html

CORDOVA

Page 48: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

plugman•  Adding:$plugman--pla\orm<ios|amazon-fireos|android|blackberry10|wp8>--project<directory>--plugin<name|url|path>[--plugins_dir<directory>][--www<directory>][--variable<name>=<value>[--variable<name>=<value>...]]

•  Removing:$plugman--uninstall--pla\orm<ios|amazon-fireos|android|blackberry10|wp8>--project<directory>--plugin<id>[--www<directory>][--plugins_dir<directory>]

•  Andmuchmore…outofourscopeJ

CORDOVA

Page 49: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

Pla\ormSupport

•  hSp://phonegap.com/about/feature/

CORDOVA

Page 50: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

ADVANCESEXAMPLES

Page 51: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

Examples

•  Camera– Takesphotosanddisplaysthemasagallery

•  Doc– API:hSps://github.com/apache/cordova-plugin-camera

– ExamplesinGIT:hSps://github.com/jesurod09/PFC.git

– Severalexamples,let’susecamara(OK)

ADVANCEDEXAMPLES

Page 52: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

ExamplesADVANCEDEXAMPLES

•  SamplesinGitHub,byJ.Rodríguez&G.Huecas– hSps://github.com/jesurod09/PFC.git– Onesmallapppercharacteris5c

•  Sensors,geoloca5on,connec5vity,storageandfilesystem,chipsandotherhw,na5vesojware,…

Page 53: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

Example:takeapicture$/>gitclonehttps://github.com/jesurod09/PFC.git$/>cordovacreatecameraes.upm.dit.iweb.camCameraBasic$/>cp-r“./PFC/Camera(OK)/www/*”./camera/www/$/>cdcamera$camera/>cordovaplatformaddandroidios$camera/>cordovapluginaddcordova-plugin-camera$camera/>cordovabuildandroid$camera/>cordovaemulateandroid$camera/>cordovabuildios$camera/>cordovaemulateios

ADVANCEDEXAMPLES

Page 54: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

Geolocali5on

•  Objetgeoloca'on:loca5oninforma5on– GPSbased– AlsoIPnetwork,RFID,WiFi,BluetoothMAC,GSM/CDMA• Withoutwarranty

•  BasedonW3Cgeoloca5onspecifica5on

ADVANCEDEXAMPLES

Page 55: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

Privacity

•  Thebrowserdoesnotrevealloca5ontotheserver

•  DifferentUXforeachbrowser•  ALLOFTHEMask,pasivelyorac5vely,foruserpermission– Userisinformed:

•  Websitewantstoaccess•  Whichwebsiteaskfordata•  Userchoosestoshare…ornot

–  Browsermayrememberforfurtherrequests

ADVANCEDEXAMPLES

Page 56: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

Geolocaliza5on:methods(I)

•  geoloca5on.getCurrentPosi5on– Returnsthedeviceloca5oninaPosi5onobject– Parameters:

•  geoloca5onSuccess:callbackifgeoloca5onsucceed,posi5onispassedasparameter•  geoloca5onError:(Op5onal)callbackincaseoferror•  geoloca5onOp5ons:(Op5onal)loca5onop5ons

ADVANCEDEXAMPLES

Page 57: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

Geolocaliza5on:methods(II)

•  geoloca5on.watchPosi5on–  InmediatelyreturnsaWatchID(string)– Asynchronouslywatcheschangesindeviceposi5on

– Parameters:•  geoloca5onSuccess:callbackwhendeviceposi5ondifferssignificantlyfrompreviousone–  Posi5onasaparameter

•  geoloca5onError:(Op5onal)callbackincaseoferror•  geoloca5onOp5ons:(Op5onal)geoloca5onop5ons

ADVANCEDEXAMPLES

Page 58: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

Geolocaliza5on:methods(III)

•  geoloca5on.clearWatch– Stopwatchingprocess– Parameters

• WatchID:iden5fierofpreviouswatchprocess–  Nofurtherac5onifinvalidID

ADVANCEDEXAMPLES

Page 59: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

Geolocaliza5on:objects(I)

•  Read-onlyobjects:PositionandPositionOptions

•  Positionhastwofields,theposi5on(coords)andthe5me(5mestamp)– cords:Coordinates– 5mestamp:DOMTimeStamp

ADVANCEDEXAMPLES

Page 60: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

Geoloca5on:objects(II)•  Coordinates–  la5tude:La5tudeindecimaldegrees.(Number)–  longitude:Longitudeindecimaldegrees.(Number)–  al5tude:Heightoftheposi5oninmetersabovetheellipsoid.(Number)

–  accuracy:Accuracylevelofthela5tudeandlongitudecoordinatesinmeters.(Number)

–  al5tudeAccuracy:Accuracyleveloftheal5tudecoordinateinmeters.(Number)

–  heading:Direc5onoftravel,specifiedindegreescoun5ngclockwiserela5vetothetruenorth.(Number)

–  speed:Currentgroundspeedofthedevice,specifiedinmeterspersecond.(Number)

ADVANCEDEXAMPLES

Page 61: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

Geoloca5on:objects(III)

•  Posi5onOp5ons:– enableHighAccuracy:boolean– 5meout:unsignedlong– maximunAge:unsignedlong

ADVANCEDEXAMPLES

Page 62: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

PHONEGAP

Page 63: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

WhatisPhoneGap

•  hSps://build.phonegap.com/

•  PhoneGapwrapscordovawithsomedifferencescordovabuild->local,requiresproperSDKsphonegap:sameinterface(commands/op5ons)thancordova,BUT:phonegapremote[command]->executecommandsagainstthePhonegapBuildService->Adobecloud

NolocalinstalledSDKrequirement!!phonegapcordova<command>:enforcesspecificversionofcordovacommand

PHONEGAP

Page 64: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

Descrip5on

•  1Phonegap– DesktopApp

•  Visualinterface•  Drag&drop

– CLI(CommandLineInterface)•  2PhonegapDeveloperApp–  isamobileappthatrunsondevicesandallowsyoutopreviewandtestthePhoneGapmobileappsyoubuildacrosspla\ormswithoutaddi5onalpla\ormSDKsetup

PHONEGAP

Page 65: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

InstallingPhoneGap

•  Fewsimplerequirements–  node.js&git– Then:npminstall–gphonegap

•  InstallMobileApp– LocatePhoneGapDeveloperappandinstall•  iTunes,GooglePlay,WindowsPhoneStore

Page 66: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

ServinganApp

•  phonegapserve[op5ons]– StartalocalwebservertohosttheapplicaitonforthePhoneGapDeveloperapp(oranybrowser)toconsume

$ phonegap serve

$ phonegap serve --port 1337

$ phonegap serve --no-autoreload $ phonegap serve --localtunnel

$ phonegap app

PHONEGAP

Page 67: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

Simpleexample$>phonegapcreatehelloPGcom.examples.hwHelloWorldPG$>cdhelloPG/$>phonegapplatformaddandroid$>phonegapplatformaddios$>phonegapbuildandroid[phonegap]executing'cordovabuildandroid'...[phonegap]completed'cordovabuildandroid'$>phonegaprunandroid[phonegap]executing'cordovarunandroid'...[phonegap]completed'cordovarunandroid’$>phonegapserve[phonegap]startingappserver...[phonegap]listeningon138.4.13.47:3000[phonegap]listeningon138.4.4.193:3000[phonegap][phonegap]ctrl-ctostoptheserver[phonegap]

Page 68: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

Runningtheexample

Page 69: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

InstallingDesktopApp

•  MacOSXoWindowsinstaller:hSp://docs.phonegap.com/ge�ng-started/1-install-phonegap/desktop/

PHONEGAP

Page 70: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

UsingPhoneGapDesktopApp(I)

•  Clickheretocreateanewprojectoraddanexis5ngone

•  Clickheretochangethedefaultse�ngs– Serverport

•  Default:3000– Sendanonymousdiagnos5c&usagedata

Page 71: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

UsingPhoneGapDesktopApp(II)

•  Oneprojectservedata5me

•  Clickheretostopservingaproject

•  IPandportdata

Page 72: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

Again,runtheexample

Page 73: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

ADOBEBUILD

Page 74: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

PhoneGapBuildenlanube

•  phonegapremotebuildandroid–  (cordovapla\ormaddandroid;cordovabuild)– RequiresaccountinPhonegapBuild

•  Oneprivateapplimit•  QRcodegenerated,canbescannedbyamobiledevicetoinstallapp

ADOBEBUILD

Page 75: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

$phonegapremotelogin$phonegapremotebuildios$phonegapremoteinstallandroid$phonegapremoterunios$phonegapremotelogout

PhoneGapremotecommands•  login:logintoPhoneGapBuild

–  requiresanaccountandyourcreden5als•  logout:logoutofPhoneGapBuild•  build<pla\orm>:buildaspecificpla\orm•  install<pla\orm>:installaspecificpla\orm

–  returnsageneratedQRcodeintheterminal

•  run<pla\orm>:buildandinstallaspecificpla\orm

ADOBEBUILD

Page 76: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

ADOBEBUILD

hSps://build.phonegap.com

Page 77: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

ADOBEBUILD

Page 78: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

Remotebuild$>phonegapcreatehelloPGcom.examples.hwHelloWorldPG$>cdhelloPG/$>phonegapplatformaddandroid$>phonegapremotebuildandroid[phonegap]compressingtheapp...[phonegap]uploadingtheapp...[phonegap]buildingtheapp...[phonegap]Androidbuildcomplete$>

Page 79: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

ADOBEBUILD

Page 80: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

SDKS

Page 81: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

EjecuciónenAndroidStudio

•  Onceandroidpla\ormisadded,projectcanbeopenedwithinAndroidStudiocordovabuildandroid

•  LaunchtheAndroidStudioapplica5on

SDKs:ANDROIDSTUDIO

Page 82: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

EjecuciónenAndroidStudio

•  SelectImportProject(EclipseADT,Gradle,etc)

SDKS:ANDROIDSTUDIO

Page 83: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

EjecuciónenAndroidStudio

•  Selectloca5onoftheandroidpla\orm(project/platforms/android)

•  FortheGradleSyncques5onyoucansimplyanswerYes

SDKS:ANDROIDSTUDIO

Page 84: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

IntelXDK

•  SDK:hSps://sojware.intel.com/es-es/intel-xdk

•  AppPreview:paraiOS,android,Windowsphone

Page 85: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

ionic

•  hSp://ionicframework.com

Page 86: Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS

ThankforaSending!

•  G.Huecas

•  TwiSer:@ghuecas

•  www.dit.upm.es/~gabriel