Mobile Cross Platform Development. Igor Markov

Similar documents
MOBILE DEVELOPMENT OPTIONS PRATIK PATEL CTO TripLingo

Mobile Graphics Trends: Applications. Marco Agus, KAUST & CRS4

Cross-Platform Mobile Application Development

CROSS PLATFORM APPLICATION DEVELOPMENT WITH COMPATIBLE GUI SOLUTIONS

An overview of mobile and embedded platforms

ArcGIS Runtime: Building Cross-Platform Apps. Rex Hansen Mark Baird Michael Tims Morten Nielsen

Exploring Cross-platform Tools For Mobile Development: Lessons Learned. mlearning: Tips and Techniques for Development and Implementation

BlackBerry Apps Experience. Everything You Need to Know and More.

Mobile Development June 2015, TEIATH, Greece

Application Development for Mobile and Ubiquitous Computing

Mobile Programming. Two Scenarios Web sites, like Tuubi where you read/write/download/ upload material

Atomic Object Grand Rapids, Michigan, USA.

T Multimedia Programming. Different Operating Systems and their Multimedia Support

Mobile Application Development Concept

ArcGIS Runtime: Building Cross-Platform Apps. Mike Branscomb Michael Tims Tyler Schiewe

Multi-platform Mobile App. Development with Apache Cordova

HTML5 for mobile development.

Review of Mobile Web Application Frameworks

Mobile Technologies. Types of Apps

Designing Interactive Systems II

WebStore9 Services. Web Development Services

Mobile Development With C#: Building Native IOS, Android, And Windows Phone Applications By Greg Shackles READ ONLINE

Review. Designing Interactive Systems II. Introduction. Web 2.0 in keywords GWT Cappuccino HTML5. Cross platform GUI Toolkit

VS005 - Cordova vs NativeScript

Mobile Application Strategy

TAMZ. Department of Computer Science VŠB-Technical University of Ostrava

Web- Technologies for the desktop with chameria. Daniel Bremer- Tonn akquinet AG

Android Sdk Install Documentation Eclipse. Ubuntu >>>CLICK HERE<<<

Desirable Requirements of Cross Platform Mobile Development Tools

Mobile development initiation

Another difference is that the kernel includes only the suspend to memory mechanism, and not the suspend to hard disk, which is used on PCs.

mlearning Tools in 60 Minutes. B.J. Schone, Qualcomm

Nokia for developers. Alexey Kokin. Developer Relations

HTML5 Mobile App Development

Classification and Selection of Cross-Platform Tools. Michiel Willocx 17/06/2015

ArcGIS Runtime SDK for.net Getting Started. Jo Fraley

Understanding what makes RhoMobile tick

Windows Universal. Devices Architecture Frameworks

Android Sdk Setup For Windows 7 32 Bit Full Version

iphone App Basics iphone and ipod touch Development Fall 2009 Lecture 5

Introduction. Lecture 1. Operating Systems Practical. 5 October 2016

How to set up FMOD*, Cocos2D-x*, and OpenAL* Libraries for Android* on Intel Architecture

JavaME TAMZ. Department of Computer Science VŠB-Technical University of Ostrava

Designing for the Mobile Web Lesson 4: Native Apps

Cross pla)orm app development using open source so4ware. Peter Dickten / Marcus Ross dcs-fuerth / zahlenhelfer

Qt in MeeGo. Zhang Chi Manager of Qt & MeeGo ecosystem, Greater China

INTERNATIONAL JOURNAL OF PURE AND APPLIED RESEARCH IN ENGINEERING AND TECHNOLOGY

Developing Applications for ios

Copyright

CS 528 Mobile and Ubiquitous Computing Lecture 1b: Introduction to Android. Emmanuel Agu

TAMZ I. (Design of Applications for Mobile Devices I) Lecture 1. Introducing Mobile Platforms.

Game Programming with. presented by Nathan Baur

PhoneGap. Andrew Lunny, Adobe. Monday, 23 July, 12

Computer Games 2014 Selected Game Engines

SHWETANK KUMAR GUPTA Only For Education Purpose

Copyright

Mobile Middleware Course. Mobile Platforms and Middleware. Sasu Tarkoma

Lecture 1 Introduction to Android. App Development for Mobile Devices. App Development for Mobile Devices. Announcement.

Mobile Programming Lecture 1. Getting Started

Porting mobile web application engine to the Android platform

Developing Cross-Platform Native Apps with AppStudio for ArcGIS. Jo Fraley Erwin Soekianto

Qt + Maemo development

Ios Sdk Documentation For Windows 7 32 Bit Full Version

Introduction What is Android?

Programming The Mobile Web Ebooks Free

Cross Platform Development (Hybrid vs Native)

Introduction to Mobile Development

SD Module- Android Programming

Best Development Practices and Patterns Using ArcGIS Runtime SDK for Android. Xueming Wu Puneet Prakash

Hour of Code: Teacher Guide

Enterprise Architecture Building a Mobile Vision. David Hunt DCH Technology Services Gill Windall University of Greenwich

Intel Integrated Native Developer Experience 2015 Update 2(OS X* Host)

GUI in C++ PV264 Advanced Programming in C++ Nikola Beneš Jan Mrázek Vladimír Štill. Faculty of Informatics, Masaryk University.

Building Native Mapping Apps with PhoneGap: Advanced Techniques Andy

Mac Application Development By Example Beginner's Guide Pdf

RAD Studio XE4 in Action LIVE! 14th May, 2013 Taipei Malcolm Groves

WHAT IS WEBKIT? COPYRIGHTED MATERIAL SMASHING WEBKIT CHAPTER 1

Release Note - DaCdb Mobile

Writing Web Apps in C++? Eric Bidelman, Google COSCUP / GNOME.Asia - Taipei, Taiwan August 14, 2010

We are IntechOpen, the world s leading publisher of Open Access books Built by scientists, for scientists. International authors and editors

WELCOME Mobile Applications Testing. Copyright

Tom Brenneman. Good morning and welcome, introductions and thank you for being here.

PhoneGap. Pengembangan Aplikasi Perangkat Bergerak (PAPB) Building Cross Platform Mobile Apps. Dr. Eng. Herman Tolle, ST., MT

Introduction to Mobile Application and Development

Android Sdk Tutorial For Windows 7 64 Bit Full Version

Introduction to Android development

Living through Flash to ipad/html5 Conversion and Development

Building Native Apps with ArcGIS API for JavaScript Using PhoneGap and jquery. Andy Gup, Lloyd Heberlie

Desktop Apps with PHP and Titanium. Ben Ramsey TEK X May 19, 2010

Mobile Application Development. Introduction. Dr. Christelle Scharff Pace University, USA

Determining the Best Approach

Esri Developer Summit in Europe Building Applications with ArcGIS Runtime SDK for Java

Competence. e-learning. Patrick Krekelberg, Allen Interactions.

Titanium Android Error Emulator Process Exited With Code 1

Supported Devices, OS, and Browsers

Ios Sdk Documentation For Windows 7 32 Bit. Latest Version >>>CLICK HERE<<<

Mobile Development A Whirlwind Tour!

Basic Android Setup for Machine Vision Fall 2015

Developing Exceptional Mobile and Multi-Channel Applications using IBM Web Experience Factory

Chapter 1 Hello, Android

Transcription:

Mobile Cross Platform Development Igor Markov

How many smartphone platforms are there? 2

Some popular ones: Android Bada Blackberry ios RIM Symbian Windows Mobile WP7 J2ME (not smartphone in fact) Maemo/MeeGo 3

The question Is it possible to write a single codebase application for all these platforms? Short answer: NO Longer answer: It s possible to find a suitable solution for some of them 4

Types of mobile application Widget-based GUI applications Fast animated applications (i.e. games) 5

Typical wigdet based app 6

Typical fast animated app 7

Desktop frameworks For widget-based: Qt, Swing, WPF, HTML, GTK, MFC, Cocoa, etc For game-like: OpenGL, DirectX and various 2D/3D engines on top of them 8

Approaches differ GUI app: why not a mobile webpage? Game-like app: how to port it to mobiles? 9

GUI: why not a mobile webpage indeed? Offline access Device integration Greater UX Flexible synchronization Push capabilities 10

One more widget-based example 11

GUI frameworks: Short list for starters Appcelerator Titanium Mobile Adobe PhoneGap Rhomobile Rhodes MoSync over 9000 more 12

Why there are so many? What language should I write? Which platforms are supported? How do they work? 13

Many of them are web based So a web developer can use her experience HTML(5)/JavaScript 14

Appcelerator Titanium Mobile The actual logic is written in JS The application is build to native code So native controls are displayed 15

Titanium Mobile Titanium Studio is intended for development... which is Eclipse based Android and iphone supported But you cannot cross-compile for free 16

The same project is built for the both platforms Launched on emulator or real device 17

Example code, part 1 var label = Titanium.UI.createLabel({! color: '#999',! text: 'Угадайте число от 1 до 1000',! font: {fontsize:20, fontfamily: 'Helvetica Neue'},! textalign: 'center',! width: 'auto',! height: 30,! top: 50 }); 18

Example code, part 2 var numberfield = Ti.UI.createTextField({! left: 10,! hinttext: 'Число?',! right: 10,! height: 44,! textalign: 'center',! font: {fontsize:20, fontfamily: 'Helvetica Neue'},! top:90 }); 19

Example code, part 3 var button = Ti.UI.createButton({ title: "Проверить", height:45, width:300, top:140 }); button.addeventlistener('click', check); numberfield.addeventlistener('return', check); 20

Example code, part 4 tab1.add(label); tab1.add(button); tab1.add(numberfield); tabgroup.addtab(tab1); 21

Example launched on the iphone emulator 22

Some Titanium-based applications 23

PhoneGap 24

PhoneGap Just a browser window inside a native application Can do things all webpages can do And a lot more: location, camera, accelerometer access Of course it can work offline 25

Code example <html> Imagine HTML and JS code here </html> 26

Camera access code example navigator.camera.getpicture(onsuccess, onfail, { quality: 50 }); function onsuccess(imagedata) { var image = document.getelementbyid('myimage'); image.src = "data:image/jpeg;base64," + imagedata; } function onfail(message) { alert('failed because: ' + message); } 27

Some PhoneGap-based applications 28

Shortcomings of such the approach Some GUI elements look not native Some elements behave slightly different e.g. scrolling momentum 29

MoSync Development The code is in C++... which is compiled to bytecode MoSync SDK Eclipse 30

Suppoted platforms Java ME Windows Mobile Symbian S60 Android ios Moblin/MeeGo Blackberry 31

Runtime 32

Qt Desktop platforms Mobile platforms Non official ports to mobile platforms 33

Qt on mobile platforms Official for Maemo/Moblin/MeeGo For Symbian, starting from S60v3 Zaurus, Openmoko Experimental port to Android Very experimental port to ios 34

Qt application 35

Games Main approach: the code is native... because we need FPSes! But there are some execptions 36

Low level OpenGL ES JSR239 WebGL XNA Good old framebuffer 37

OpenGL ES example 38

OpenGL ES support Android ios Symbian OS Maemo Bada J2ME (JSR239) 39

Cocos2D-x 2D game engine Runs on iphone and Android Also on win32 & linux for development 40

Some Cocos2D-x apps 41

EDGELIB 42

Hello, world //Callback: Called every frame ERESULT ClassMain::OnNextFrame (ClassEDisplay *display, unsigned long timedelta) {! display->buffer.drawfont(0, 0, &display->fontinternal, "Hello World!");! return(e_ok); } 43

Features C++ core Fast 2D/3D graphics Collision detection 44

Reusing the code: multiplatform libraries Choose a common denominator Language could be -C -C++ -Java -C# -Scripting: Lua, Python, etc 45

C++ library example Runs on ios using -wrapper Objective C class -or, Objective C++ usage Runs on Android -JNI (NDK) 46

Original C++ class class Territory { public: Territory(int width, int height, uint_8 *map); int firststepdirection(int x1, int y1, int x2, int y2); } ~Territory(); 47

Java wrapper class public class Territory { public Territory(int [][]map) { init(map) } } native void init(int [][]map); public native int firststepdirection(int x1, int y1, int x2, int y2); public native void finalize(); 48

Objective C wrapper class @interface Territory : NSObject - (id)init:(nsdata *)map width:(int)w height:(int)h; - (int)firststepdirection:(int)x1 y1:(int)y1 x2:(int)x2 y2(int)y2; //- (void)dealloc is in @implementation @end 49

Contacts Igor Markov igor.markov@auriga.com 50