Develop native android appsAnd port to other platforms
Robin Puthli, 24 October 2013
Droidcon UK
1donderdag 24 oktober 13
• Mobile developer 2001 - present
• Run a 11 strong development shop
• Netherlands based
Me
2donderdag 24 oktober 13
Native iOS
Native Android Mobile webapps
Mobile websites
Itude Mobile develops client facing apps for companies
3donderdag 24 oktober 13
Agenda
4donderdag 24 oktober 13
Agenda
• Why is it difficult to port native apps?
4donderdag 24 oktober 13
Agenda
• Why is it difficult to port native apps?
• How to cope
4donderdag 24 oktober 13
Agenda
• Why is it difficult to port native apps?
• How to cope
• We are making our tools open source
4donderdag 24 oktober 13
The problem
5donderdag 24 oktober 13
The problem
Tools
ProgrammingLanguage Java / C++ NDK Objc, C++, C C#
App LifecycleApp Structure
UI, UXWidgets
Search boxBackground
PassbookBack button Tiles
5donderdag 24 oktober 13
The problem
Tools
ProgrammingLanguage Java / C++ NDK Objc, C++, C C#
App LifecycleApp Structure
UI, UXWidgets
Search boxBackground
PassbookBack button Tiles
Is called device fragmentation
5donderdag 24 oktober 13
6donderdag 24 oktober 13
7donderdag 24 oktober 13
Android
www.opensignals.com
8donderdag 24 oktober 13
Fragmentation is here to stay
9donderdag 24 oktober 13
Fragmentation is here to stay
• 2009 - 2011 : convergence
• Manufacturers are differentiating
• Phones, phablets, tablets, watches, glasses
• Learn how to cope!
• In all stages of the process
9donderdag 24 oktober 13
Old problem!
10donderdag 24 oktober 13
Old problem!
• Windows / Mac / Unix
• Desktop browsers
• JavaME
• Mobile web
10donderdag 24 oktober 13
9 strategies
Damith C. Rajapakse, Singapore school of computing (2006)
Cost
11donderdag 24 oktober 13
Examples
Damith C. Rajapakse, Singapore school of computing (2006)
PhoneGap
Action bar sherlock
Native Android and iOS
Qt, Unity
12donderdag 24 oktober 13
If you’ve got a hammer
13donderdag 24 oktober 13
If you’ve got a hammer
Everything looks like a nail
13donderdag 24 oktober 13
What is your use case?
• Game maker
• Single platform specialist
• Multiplatform developer
14donderdag 24 oktober 13
Our strategy:mobbl.org
15donderdag 24 oktober 13
Our strategy:mobbl.org
• Software Engineering Methodology
15donderdag 24 oktober 13
Our strategy:mobbl.org
• Software Engineering Methodology
• Native libraries for Android, JSF and iOS
15donderdag 24 oktober 13
Our strategy:mobbl.org
• Software Engineering Methodology
• Native libraries for Android, JSF and iOS
• Open source Q4 2013
15donderdag 24 oktober 13
Use case
• Data centric apps
• Lot of emphasis on look and feel
• Security, performance
• Often asked to develop on one platform first, then another platform.
16donderdag 24 oktober 13
Data lifecycle
1. JSON or XML from a companies webservice
2. Parse and validate
3. Cache
4. Present on some screens
5. Change
6. Post back to the webservice
17donderdag 24 oktober 13
We tried
• HTML5 in webviews
• Javascript based tools
• Tools with a proprietary language
18donderdag 24 oktober 13
We tried
• HTML5 in webviews
• Javascript based tools
• Tools with a proprietary language
• Buggy - write once, debug everywhere
• Memory leaks
• Mediocre UI
• No developers
• No cost advantage over native
18donderdag 24 oktober 13
Goals
• Native languages
• Predictable, efficient porting effort
• Modular code for easy maintenance
• Re-use for regular tasks: caching, REST, sessions etc
19donderdag 24 oktober 13
Concepts
20donderdag 24 oktober 13
Model
Document • Parsers and serialization
• Webservices
• Persistence, Caching
• Manipulation, deep copy etc.
• Passthrough between screens
Element
Attribute
21donderdag 24 oktober 13
Controller
Screen A
Button
Screen B
22donderdag 24 oktober 13
Controller
Screen A
Button
Screen B
Logic
23donderdag 24 oktober 13
Controller
Screen A
Button
Screen B
Logic
23donderdag 24 oktober 13
Controller
Screen A
Button
Screen B
Logic
Activity
23donderdag 24 oktober 13
Controller
Screen A
Button
Controller Screen B
24donderdag 24 oktober 13
Controller
Screen A
Button
Controller Screen B
Logic
25donderdag 24 oktober 13
MOBBL
ModelController
View
26donderdag 24 oktober 13
Re-use
27donderdag 24 oktober 13
MOBBL.ORG
28donderdag 24 oktober 13
Questions?✓Code Android apps in java
✓No API restrictions
✓Port to other platforms
✓open source q4 2013
✓Sign up now to hear more
MOBBL.ORG
29donderdag 24 oktober 13