Transcript Document
Mobile App Development on Multiple
Platforms Using Titanium
Campus Compass Team Student Led Seminar
Adam Plisch, Brian Russell, Jonathan LeFeber
Team/Project Introduction
Project: Campus Compass Mobile App
Android and iOS app for Cedarville Admissions Department
Designed to provide information about Cedarville as well as
directions
Team and Roles:
Adam Plisch:
GUI guru, on-campus connections and testing
Brian Russell:
Data master, in-depth code analysis and development
environment
Jonathan LeFeber:
Team leader and head of organization/communication
Seminar Introduction
Titanium, Difficulties with Cross-Platform Development,
Handling These Difficulties
Titanium Development Environment
Free-to-use multi-platform development environment
Handles multiple target OSs with (mainly) one set of code
Write your App in Javascript
Ports out to iOS, Android, Blackberry and HTML5 versions
Can be run on Mac or PC
Difficulties With Cross-Platform
Development
Code is being ported from Javascript to several
different languages
Restricts what can be done
Functionality added with environment-specific APIs
Designing for a large variety of device configurations
Different hardware specifications and software options
available depending on device
Special ways of handling platform-specific code within
the development environment
Handling These Difficulties
Built in functions/APIs in the development environment
Using special cases to determine available
features/settings
Simplifying everything as much as possible
Can result in convoluted code
Cross-Platform
Development
The Development Environment
Requirements
iOS and Android have specific development paths and
environments
Titanium works within these processes
iOS
Applications built with Xcode using Objective-C
iOS SDK
iOS Simulator
Xcode obtained via Apple App Store, others obtained
via Xcode
Requires OSX
Android
C allowed, but limits targets
Java preferred, requires JDK
Android SDK
Android Emulator
Eclipse is endorsed Java IDE, but not necessary
Titanium
Titanium uses Javascript and provides libraries with
access to platform functionality
IDE with debugging capabilities on both real and virtual
devices
Cross-Platform
Development
Handling Cross-Platform Issues
Differences between Android
and iOS
Titanium handles most differences between iOS and
Android behind the scenes, but not all of them
Titanium.Platform.name can be used in an if-statement
to make platform specific decisions
API Examples
Example 1:
Titanium.Platform.openURL(‘tel:’+phoneNum);
Example 2: var email =
Titanium.UI.createEmailDialog();
email.open()
Example 3: var button = Titanium.UI.createButton();
Example 4: var view = Titanium.UI.createView();
Some Differences not handled
by Titanium
Back button
Android’s has a back button implemented in hardware and
needs no added code
iPhone requires the addition of a navigation bar at the top of
your app which can include a simple back button
Gradient colors
Only supported by iOS
Set a gradient image as the background
You can review the whole API at:
http://docs.appcelerator.com/titanium/latest/#!/api/Titanium
GUI
While Titanium.Platform.name allows you to separate
functionality by platform, only careful planning can make a
robust GUI that works on all devices
There are many different types and sizes of devices for both
Android and iOS
Screen resolution and orientation provide added challenge
There are 2 different screen sizes and 3 different resolutions
for iPhone, and a really wide variety for Android
Not even counting tablets!
GUI – Dynamic Sizing
Titanium provides a call to get the height and width of the current
platform
Titanium.Platform.displayCaps.platformWidth
Titanium.Platform.displayCaps.platformHeight
Start by dividing these values into separate views
Titanium.UI.SIZE
Titanium.UI.FILL
Each view has its own height and width and an array of children
Each child is confined to a maximum height and width of the
parent view
Can contain text, images, or buttons
GUI – Portrait-mode only
If your app does not support Landscape mode, you
must account for what happens when your app
launches from a device held in landscape mode
Your platform height and width values will be reversed
The API does not support a call to determine orientation
If height > width, portrait mode
Else, landscape mode
GUI – Splash Screen
Required for all apps in iOS
Displays an image while the rest of the application
loads in the background
If your portrait-mode only app is launched from a
device in landscape mode, your splash screen will
rotate
There is no good solution to this in Titanium
You could use a black splash screen to get around this
problem
GUI – Font Size
Every other aspect of a GUI is a percentage of its
parent. What about font size?
A font size of 18 will use the same number of pixels on
any device
Density Pixels
1 dp should look the same relative to the rest of the GUI on
any device
Javascript is not a strongly-typed language
fontsize = 18 + “dp”;
Cross-Platform
Deployment
Getting your iOS and Android Apps compiled and out there
Overall Compilation Process
Platform project is created
Javascript code is optimized
Code is either compiled or stored to be interpreted
Result is packaged and signed
iOS Compilation
Javascript code compressed and included as a string in
a C file
Interpreted at runtime through interpreter provided by
Titanium
Android Compilation
Javascript compiled to Java bytecode with Rhino
Runs directly on Android’s Dalvik VM
Deployment
iOS requires distribution through App Store
Android has official Play Store, but can download apps
from anywhere
Both require certified accounts
App Store has a manual review process
Play Store has automated dynamic analysis
In Closing…
Summary of experience, what you’ll need, where to get
started
Summary of Experience
What You’ll Need
PC
Mac if developing for iOS
Apple Developer Account to test on iOS
Apple Developer License to deploy to App Store
Google Development License to deploy to Play Store
Testing devices
Best to have one of every type of device you plan on
deploying to
iPhone, iPad, Android phone, Android tablet
Where to get started
Example program
Titanium’s ‘kitchen sink’ app
Great resources to help you get started
http://docs.appcelerator.com
https://wiki.appcelerator.org
http://developer.appcelerator.com
https://developers.google.com
http://developer.android.com
http://docs.appcelerator.com/titanium/latest/#!/api/Titanium
Any questions?