SlideShare una empresa de Scribd logo
1 de 61
Descargar para leer sin conexión
Adventures in cross-platform 
Jason Kneen
ADVENTURESADVENTURES 
in cross-platform
Jason Kneen 
App Developer, TCE Certified “Titan” 
http://bouncingfish.com 
http://twitter/jasonkneen 
http://github.com/jasonkneen 
http://jasonified.com
Apps
My Work 
StoneHenge 
Audio Tour 
The Great British 
Bee Count SportsBlog
The Great British Bee Count 
• Find, photograph identify Bees 
• iOS and Android 
• Ti Alloy 
• Custom UI 
• Featured on BBC SpringWatch
Things I’ve learnt
Things I’ve learnt 
am still 
learning
Clients
“We’d like an app like Instagram, can 
you give me a cost?” 
“It’s like Twitter but location 
based” 
“It’s basically our 
web site, in an 
app” 
“We need to wrap 
a flash app in a 
native wrapper”
I break down costs
I break down costs… 
• Split pricing by function, platform 
• Factor in time for platform, form 
factors, device specific issues 
• Include costs for App builds, beta 
distribution and Appstore 
submissions (and resubmissions) 
•Watch out for 3rd party dependancies 
(APIs etc)
Working with designers
Working with Designers… 
•They (mostly) use Apple devices 
•They (usually) don’t understand mobile 
•They (usually) don’t get platform UI 
conventions / differences 
•They (all) think a “small change” is 
easy / free
“We’d like the iOS TabGroup on Android” 
“What size should the App Avatar be?” 
“Can we have a Quit 
button to exit the 
app in iOS?” 
“That’s just a 5 minute 
job right?” 
“Can you tell me all the image 
sizes you need for Android?” 
“I’ve put the images in 
“/retina” and “/non-retina“ 
folders” “I’ve sent you a layered- 
PSD with the images”
Retina Dimensions 
References PSDs 
Designed for iOS No font details 
I typically get this.
You can’t split retina pixels!
Solution?
Working with designers… 
• Explain OS differences 
(Navigation, TabGroups, back 
buttons, ActionBar) 
• Inform (Retina, DPs, Densities) 
• Give examples / links to tools 
• Send them the images folder 
structure to work with
Testing
Testing on Android… 
• HDPI, LDPI, 
different devices etc. 
• Multiple versions 
• “Crapware” (HTC, 
Samsung) 
• I buy devices, and 
develop ONLY for 
Android 4.0+
iOS isn’t 
fragmented right?
Testing on iOS… 
@2x 
• iPhone 3.5” Retina 
• iPhone 3.5” Non- 
Retina 
• iPhone 4” 
• iPhone 4.7” 
• iPhone 5.5” 
• iPad 
• iPad Retina 
• iPad Mini 
• iPad Mini Retina 
@3x
Deployment
I deliver Over The Air… 
• http://Installrapp.com 
•Watch those device limits! 
• Use the clients account! 
• Build and deploy early 
• Simple / easy to update
When it’s time to publish… 
• Use client Appstore / Play Store 
accounts 
• iTunesConnect settings 
• Advise on review times for new / 
updated apps 
• Get Paid! 
•Get Paid!
Google Play limitations 
• Google Play limited to 50mb 
• Expansion files support larger apps 
• Titanium now supports OBB files 
http://github.com/jasonkneen/ 
TiExpansionFiles
Emulation
Using the Android SDK Emulator
I use GenyMotion… 
• Free, easy and cheap to license 
• Fast (VERY FAST) 
• Google APIs, Play support, simple 
“hack” 
• Great GPS, Mapping tools 
• Android first
I use TiShadow (or Liveview)… 
• No (full) rebuild required 
• Simulator, device, multiple devices at the same 
time 
• Makes cross-platform SO easy 
• Avoid getting “locked in” to one OS 
• But, there be dragons!
Cross-platform development before Alloy
I use Alloy… 
• Separation of logic & UI 
• selectors and conditional code 
or platform, FormFactor 
• Only includes the platform 
specific assets, styles, code in 
your builds 
• uses CommonJS 
• Makes cross-platform WAY easier
I’m <BatMan/>! 
Cross-platform development after Alloy
Platforms & Screens
I use app.tss…
I use app.tss… 
• Build layouts on both platforms first 
• app.tss for global classes 
• “reset” for Android 
• Platform specific overrides 
• Simple XML, <Button class=“wide green rounded”/>
Yep, if you don’t count 
Top, Bottom, Left, Right
I build flexible layouts… 
• Every screen has a Top, Left, 
Bottom, and Right 
• Avoid fixed widths / heights 
• Ti.UI.SIZE & Ti.UI.FILL 
• Use dp (ti.ui.defaultunit) 
• %age and fluid layouts 
• Dynamic buttons
I keep density simple… 
• Can be very granular 
• Long, NotLong, Landscape, 
Portrait 
• Keep it simple 
• Use retina images for xhdpi 
(3x retina === xxhdpi)
I use TiCons… 
• Create a base 1024 x 1024 icon 
• Auto-generate icons (http:// 
ticons.fokkezb.nl/) 
• The CLI can generate density 
images from retina ones 
• icons, assets, splash screens 
• Updated for iPhone 6 / 3x
I create density assets from 
Retina images…* 
'res-mdpi' => "0.5", 
'res-hdpi' => "0.75", 
'res-xhdpi' => "1", 
'res-xxhdpi' => "1.5", 
'res-xxxhdpi' => "2" 
*when I have to 
http://ticons.fokkezb.nl/
I use 9-Patch images… 
• iOS style stretchable images 
on Android 
• Splash screens 
• Android version of leftCap, 
topCap 
• Editor built-in to Android 
SDK 
• http://9patch.fokkezb.nl/
I optimise the $h!t out of Android… 
• Reduce “over the bridge” calls 
• TableViews - classname (Android speed bump) 
• or better still, use ListViews 
• ImageViews vs Views 
• Reduce views, especially in tables / repeating 
elements and especially nested views
I use Instruments… 
• If my app is leaking, it’s leaking 
on everything 
• Instruments is iOS only 
• DDMS for Android specific 
leaks / memory usage 
“Rick Blalock: Your Apps are Leaking” 
https://vimeo.com/29804284
I use ScrollableViews… 
• Views = screens 
• Swipe between views (great for prototyping) 
• Simple view stack management 
• Super-fast and smooth animation on Android 
• Useful when building UI layouts with apps
I use base controllers… 
• Simple “inheritance” for Alloy Controllers 
• Re-use controllers, views 
• Create cross-platform template wrappers
I also use Alloy templates… 
• <require src=“controllerName”/> 
• Alloy supports require/widgets with children 
• Create a wrapper template controller
I create/override Alloy tags… 
• Little-known feature of Alloy 
• <View module=“modulename”/> 
• Override Alloy Tags to provide per-platform support 
• Create your own tags! 
• Not a replacement for Widgets, just different
I create/override Alloy tags… 
A two-way slide menu in Alloy
I create/override Alloy tags… 
• Just drop into the XML 
• Specify Left/Right Menu 
• Works!
Custom Tag Demo
“Module” attribute… 
• TitleControl - full implementation for iOS and 
Android 
• TabGroup - iOS style TabGroup for Android 
• CheckBox, SlideMenu for both iOS/Android 
• AttributedString for iOS, falls back to HTML for 
Android 
• But be careful…and tidy up after you
In summary… 
• Separate costs, use client dev accounts, get paid 
• Help designers - you’re they’re only hope 
• Test on real devices - buy everything! 
• Create flexible layouts, use constants, device info 
• Use Genymotion! 
• Deliver apps over-the-air 
• Use Alloy, templates, create or re-write Alloy tags 
• Test your apps for memory leaks
One more thing… 
• TiDev.io 
• News, Articles 
• Tips / Advice 
• twitter.com/tidevio
Thank you! 
http://bouncingfish.com 
http://twitter/jasonkneen 
http://github.com/jasonkneen 
http://jasonified.com

Más contenido relacionado

La actualidad más candente

Adobe and the Flash Gaming Landscape
Adobe and the Flash Gaming LandscapeAdobe and the Flash Gaming Landscape
Adobe and the Flash Gaming LandscapeJoseph Labrecque
 
Advanced Android Design Implementation
Advanced Android Design ImplementationAdvanced Android Design Implementation
Advanced Android Design ImplementationTack Mobile
 
Deploy All The Games
Deploy All The GamesDeploy All The Games
Deploy All The GamesAdam Hill
 
W3C HTML5 KIG-The near future of the web platform
 W3C HTML5 KIG-The near future of the web platform W3C HTML5 KIG-The near future of the web platform
W3C HTML5 KIG-The near future of the web platformChanghwan Yi
 
Bridging worlds: Avatar Idenitity
Bridging worlds: Avatar IdenitityBridging worlds: Avatar Idenitity
Bridging worlds: Avatar IdenitityDavid Fliesen
 
From Unity3D to Unreal Engine 4
From Unity3D to Unreal Engine 4From Unity3D to Unreal Engine 4
From Unity3D to Unreal Engine 4Martin Pernica
 
Teacher Training Workshop - Game Development with Phaser
Teacher Training Workshop  - Game Development with PhaserTeacher Training Workshop  - Game Development with Phaser
Teacher Training Workshop - Game Development with PhaserPablo Farías Navarro
 
GDC Europe 2014: Unreal Engine 4 for Programmers - Lessons Learned & Things t...
GDC Europe 2014: Unreal Engine 4 for Programmers - Lessons Learned & Things t...GDC Europe 2014: Unreal Engine 4 for Programmers - Lessons Learned & Things t...
GDC Europe 2014: Unreal Engine 4 for Programmers - Lessons Learned & Things t...Gerke Max Preussner
 
Future of unreal
Future of unreal Future of unreal
Future of unreal Ning Hu
 
Unity3D Tips and Tricks or "You are doing it wrong!"
Unity3D Tips and Tricks or "You are doing it wrong!"Unity3D Tips and Tricks or "You are doing it wrong!"
Unity3D Tips and Tricks or "You are doing it wrong!"Taras Leskiv
 
Unty3D Awesome Assets - uTomate
Unty3D Awesome Assets - uTomateUnty3D Awesome Assets - uTomate
Unty3D Awesome Assets - uTomateTaras Leskiv
 
HTML5 Mobile Game Development Workshop - Module 2 - HTML5 Developer Conferenc...
HTML5 Mobile Game Development Workshop - Module 2 - HTML5 Developer Conferenc...HTML5 Mobile Game Development Workshop - Module 2 - HTML5 Developer Conferenc...
HTML5 Mobile Game Development Workshop - Module 2 - HTML5 Developer Conferenc...Pablo Farías Navarro
 
Intro to Flash 8 welcome & course outline (2008)
Intro to Flash 8 welcome & course outline (2008)Intro to Flash 8 welcome & course outline (2008)
Intro to Flash 8 welcome & course outline (2008)Matteo Wyllyamz
 

La actualidad más candente (15)

Adobe and the Flash Gaming Landscape
Adobe and the Flash Gaming LandscapeAdobe and the Flash Gaming Landscape
Adobe and the Flash Gaming Landscape
 
Advanced Android Design Implementation
Advanced Android Design ImplementationAdvanced Android Design Implementation
Advanced Android Design Implementation
 
Deploy All The Games
Deploy All The GamesDeploy All The Games
Deploy All The Games
 
W3C HTML5 KIG-The near future of the web platform
 W3C HTML5 KIG-The near future of the web platform W3C HTML5 KIG-The near future of the web platform
W3C HTML5 KIG-The near future of the web platform
 
Bridging worlds: Avatar Idenitity
Bridging worlds: Avatar IdenitityBridging worlds: Avatar Idenitity
Bridging worlds: Avatar Idenitity
 
From Unity3D to Unreal Engine 4
From Unity3D to Unreal Engine 4From Unity3D to Unreal Engine 4
From Unity3D to Unreal Engine 4
 
Teacher Training Workshop - Game Development with Phaser
Teacher Training Workshop  - Game Development with PhaserTeacher Training Workshop  - Game Development with Phaser
Teacher Training Workshop - Game Development with Phaser
 
GDC Europe 2014: Unreal Engine 4 for Programmers - Lessons Learned & Things t...
GDC Europe 2014: Unreal Engine 4 for Programmers - Lessons Learned & Things t...GDC Europe 2014: Unreal Engine 4 for Programmers - Lessons Learned & Things t...
GDC Europe 2014: Unreal Engine 4 for Programmers - Lessons Learned & Things t...
 
fpadvanced
fpadvancedfpadvanced
fpadvanced
 
Future of unreal
Future of unreal Future of unreal
Future of unreal
 
Unity3D Tips and Tricks or "You are doing it wrong!"
Unity3D Tips and Tricks or "You are doing it wrong!"Unity3D Tips and Tricks or "You are doing it wrong!"
Unity3D Tips and Tricks or "You are doing it wrong!"
 
Unty3D Awesome Assets - uTomate
Unty3D Awesome Assets - uTomateUnty3D Awesome Assets - uTomate
Unty3D Awesome Assets - uTomate
 
HTML5 Mobile Game Development Workshop - Module 2 - HTML5 Developer Conferenc...
HTML5 Mobile Game Development Workshop - Module 2 - HTML5 Developer Conferenc...HTML5 Mobile Game Development Workshop - Module 2 - HTML5 Developer Conferenc...
HTML5 Mobile Game Development Workshop - Module 2 - HTML5 Developer Conferenc...
 
Mocast Postmortem
Mocast PostmortemMocast Postmortem
Mocast Postmortem
 
Intro to Flash 8 welcome & course outline (2008)
Intro to Flash 8 welcome & course outline (2008)Intro to Flash 8 welcome & course outline (2008)
Intro to Flash 8 welcome & course outline (2008)
 

Similar a Adventures in cross platform ConnectJS / TiConnect 2014

Appcelerator Titanium Intro
Appcelerator Titanium IntroAppcelerator Titanium Intro
Appcelerator Titanium IntroNicholas Jansma
 
Getting started with Appcelerator Titanium
Getting started with Appcelerator TitaniumGetting started with Appcelerator Titanium
Getting started with Appcelerator TitaniumTechday7
 
Getting started with titanium
Getting started with titaniumGetting started with titanium
Getting started with titaniumNaga Harish M
 
Dnn connect dnnmobi-slides
Dnn connect dnnmobi-slidesDnn connect dnnmobi-slides
Dnn connect dnnmobi-slidesashishpd
 
Appium Overview - by Daniel Puterman
Appium Overview - by Daniel PutermanAppium Overview - by Daniel Puterman
Appium Overview - by Daniel PutermanApplitools
 
Froyo to kit kat two years developing & maintaining deliradio
Froyo to kit kat   two years developing & maintaining deliradioFroyo to kit kat   two years developing & maintaining deliradio
Froyo to kit kat two years developing & maintaining deliradioDroidcon Berlin
 
Browser Developer Tools for APEX Developers
Browser Developer Tools for APEX DevelopersBrowser Developer Tools for APEX Developers
Browser Developer Tools for APEX DevelopersChristian Rokitta
 
Introduction to Cross Platform Development with Xamarin/ Visual Studio
Introduction to Cross Platform Development with Xamarin/ Visual StudioIntroduction to Cross Platform Development with Xamarin/ Visual Studio
Introduction to Cross Platform Development with Xamarin/ Visual StudioIndyMobileNetDev
 
Building your first android app using Xamarin
Building your first android app using XamarinBuilding your first android app using Xamarin
Building your first android app using XamarinGill Cleeren
 
Android development - the basics, MFF UK, 2013
Android development - the basics, MFF UK, 2013Android development - the basics, MFF UK, 2013
Android development - the basics, MFF UK, 2013Tomáš Kypta
 
FI MUNI 2012 - iOS Basics
FI MUNI 2012 - iOS BasicsFI MUNI 2012 - iOS Basics
FI MUNI 2012 - iOS BasicsPetr Dvorak
 
Native Script Overview
Native Script OverviewNative Script Overview
Native Script OverviewBaskar rao Dsn
 
Modeveast Appcelerator Presentation
Modeveast Appcelerator PresentationModeveast Appcelerator Presentation
Modeveast Appcelerator PresentationAaron Saunders
 
Native script overview
Native script overviewNative script overview
Native script overviewBaskar rao Dsn
 
Doug McCune - Using Open Source Flex and ActionScript Projects
Doug McCune - Using Open Source Flex and ActionScript ProjectsDoug McCune - Using Open Source Flex and ActionScript Projects
Doug McCune - Using Open Source Flex and ActionScript ProjectsDoug McCune
 
Building High Quality Android Applications
Building High Quality Android ApplicationsBuilding High Quality Android Applications
Building High Quality Android ApplicationsLeif Janzik
 

Similar a Adventures in cross platform ConnectJS / TiConnect 2014 (20)

Appcelerator Titanium Intro
Appcelerator Titanium IntroAppcelerator Titanium Intro
Appcelerator Titanium Intro
 
Intro to appcelerator
Intro to appceleratorIntro to appcelerator
Intro to appcelerator
 
Getting started with Appcelerator Titanium
Getting started with Appcelerator TitaniumGetting started with Appcelerator Titanium
Getting started with Appcelerator Titanium
 
Getting started with titanium
Getting started with titaniumGetting started with titanium
Getting started with titanium
 
Mobile native-hacks
Mobile native-hacksMobile native-hacks
Mobile native-hacks
 
Titanium Alloy Tutorial
Titanium Alloy TutorialTitanium Alloy Tutorial
Titanium Alloy Tutorial
 
Dnn connect dnnmobi-slides
Dnn connect dnnmobi-slidesDnn connect dnnmobi-slides
Dnn connect dnnmobi-slides
 
Appium Overview - by Daniel Puterman
Appium Overview - by Daniel PutermanAppium Overview - by Daniel Puterman
Appium Overview - by Daniel Puterman
 
Froyo to kit kat two years developing & maintaining deliradio
Froyo to kit kat   two years developing & maintaining deliradioFroyo to kit kat   two years developing & maintaining deliradio
Froyo to kit kat two years developing & maintaining deliradio
 
Browser Developer Tools for APEX Developers
Browser Developer Tools for APEX DevelopersBrowser Developer Tools for APEX Developers
Browser Developer Tools for APEX Developers
 
Introduction to Cross Platform Development with Xamarin/ Visual Studio
Introduction to Cross Platform Development with Xamarin/ Visual StudioIntroduction to Cross Platform Development with Xamarin/ Visual Studio
Introduction to Cross Platform Development with Xamarin/ Visual Studio
 
Building your first android app using Xamarin
Building your first android app using XamarinBuilding your first android app using Xamarin
Building your first android app using Xamarin
 
Android development - the basics, MFF UK, 2013
Android development - the basics, MFF UK, 2013Android development - the basics, MFF UK, 2013
Android development - the basics, MFF UK, 2013
 
Xamarin tools
Xamarin toolsXamarin tools
Xamarin tools
 
FI MUNI 2012 - iOS Basics
FI MUNI 2012 - iOS BasicsFI MUNI 2012 - iOS Basics
FI MUNI 2012 - iOS Basics
 
Native Script Overview
Native Script OverviewNative Script Overview
Native Script Overview
 
Modeveast Appcelerator Presentation
Modeveast Appcelerator PresentationModeveast Appcelerator Presentation
Modeveast Appcelerator Presentation
 
Native script overview
Native script overviewNative script overview
Native script overview
 
Doug McCune - Using Open Source Flex and ActionScript Projects
Doug McCune - Using Open Source Flex and ActionScript ProjectsDoug McCune - Using Open Source Flex and ActionScript Projects
Doug McCune - Using Open Source Flex and ActionScript Projects
 
Building High Quality Android Applications
Building High Quality Android ApplicationsBuilding High Quality Android Applications
Building High Quality Android Applications
 

Último

Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...itnewsafrica
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Kaya Weers
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 

Último (20)

Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 

Adventures in cross platform ConnectJS / TiConnect 2014

  • 3. Jason Kneen App Developer, TCE Certified “Titan” http://bouncingfish.com http://twitter/jasonkneen http://github.com/jasonkneen http://jasonified.com
  • 4.
  • 6. My Work StoneHenge Audio Tour The Great British Bee Count SportsBlog
  • 7. The Great British Bee Count • Find, photograph identify Bees • iOS and Android • Ti Alloy • Custom UI • Featured on BBC SpringWatch
  • 9. Things I’ve learnt am still learning
  • 11. “We’d like an app like Instagram, can you give me a cost?” “It’s like Twitter but location based” “It’s basically our web site, in an app” “We need to wrap a flash app in a native wrapper”
  • 12. I break down costs
  • 13. I break down costs… • Split pricing by function, platform • Factor in time for platform, form factors, device specific issues • Include costs for App builds, beta distribution and Appstore submissions (and resubmissions) •Watch out for 3rd party dependancies (APIs etc)
  • 15. Working with Designers… •They (mostly) use Apple devices •They (usually) don’t understand mobile •They (usually) don’t get platform UI conventions / differences •They (all) think a “small change” is easy / free
  • 16. “We’d like the iOS TabGroup on Android” “What size should the App Avatar be?” “Can we have a Quit button to exit the app in iOS?” “That’s just a 5 minute job right?” “Can you tell me all the image sizes you need for Android?” “I’ve put the images in “/retina” and “/non-retina“ folders” “I’ve sent you a layered- PSD with the images”
  • 17. Retina Dimensions References PSDs Designed for iOS No font details I typically get this.
  • 18. You can’t split retina pixels!
  • 20. Working with designers… • Explain OS differences (Navigation, TabGroups, back buttons, ActionBar) • Inform (Retina, DPs, Densities) • Give examples / links to tools • Send them the images folder structure to work with
  • 21.
  • 23.
  • 24. Testing on Android… • HDPI, LDPI, different devices etc. • Multiple versions • “Crapware” (HTC, Samsung) • I buy devices, and develop ONLY for Android 4.0+
  • 26. Testing on iOS… @2x • iPhone 3.5” Retina • iPhone 3.5” Non- Retina • iPhone 4” • iPhone 4.7” • iPhone 5.5” • iPad • iPad Retina • iPad Mini • iPad Mini Retina @3x
  • 28. I deliver Over The Air… • http://Installrapp.com •Watch those device limits! • Use the clients account! • Build and deploy early • Simple / easy to update
  • 29. When it’s time to publish… • Use client Appstore / Play Store accounts • iTunesConnect settings • Advise on review times for new / updated apps • Get Paid! •Get Paid!
  • 30. Google Play limitations • Google Play limited to 50mb • Expansion files support larger apps • Titanium now supports OBB files http://github.com/jasonkneen/ TiExpansionFiles
  • 32. Using the Android SDK Emulator
  • 33. I use GenyMotion… • Free, easy and cheap to license • Fast (VERY FAST) • Google APIs, Play support, simple “hack” • Great GPS, Mapping tools • Android first
  • 34. I use TiShadow (or Liveview)… • No (full) rebuild required • Simulator, device, multiple devices at the same time • Makes cross-platform SO easy • Avoid getting “locked in” to one OS • But, there be dragons!
  • 36. I use Alloy… • Separation of logic & UI • selectors and conditional code or platform, FormFactor • Only includes the platform specific assets, styles, code in your builds • uses CommonJS • Makes cross-platform WAY easier
  • 37. I’m <BatMan/>! Cross-platform development after Alloy
  • 40. I use app.tss… • Build layouts on both platforms first • app.tss for global classes • “reset” for Android • Platform specific overrides • Simple XML, <Button class=“wide green rounded”/>
  • 41. Yep, if you don’t count Top, Bottom, Left, Right
  • 42. I build flexible layouts… • Every screen has a Top, Left, Bottom, and Right • Avoid fixed widths / heights • Ti.UI.SIZE & Ti.UI.FILL • Use dp (ti.ui.defaultunit) • %age and fluid layouts • Dynamic buttons
  • 43. I keep density simple… • Can be very granular • Long, NotLong, Landscape, Portrait • Keep it simple • Use retina images for xhdpi (3x retina === xxhdpi)
  • 44. I use TiCons… • Create a base 1024 x 1024 icon • Auto-generate icons (http:// ticons.fokkezb.nl/) • The CLI can generate density images from retina ones • icons, assets, splash screens • Updated for iPhone 6 / 3x
  • 45. I create density assets from Retina images…* 'res-mdpi' => "0.5", 'res-hdpi' => "0.75", 'res-xhdpi' => "1", 'res-xxhdpi' => "1.5", 'res-xxxhdpi' => "2" *when I have to http://ticons.fokkezb.nl/
  • 46. I use 9-Patch images… • iOS style stretchable images on Android • Splash screens • Android version of leftCap, topCap • Editor built-in to Android SDK • http://9patch.fokkezb.nl/
  • 47. I optimise the $h!t out of Android… • Reduce “over the bridge” calls • TableViews - classname (Android speed bump) • or better still, use ListViews • ImageViews vs Views • Reduce views, especially in tables / repeating elements and especially nested views
  • 48. I use Instruments… • If my app is leaking, it’s leaking on everything • Instruments is iOS only • DDMS for Android specific leaks / memory usage “Rick Blalock: Your Apps are Leaking” https://vimeo.com/29804284
  • 49. I use ScrollableViews… • Views = screens • Swipe between views (great for prototyping) • Simple view stack management • Super-fast and smooth animation on Android • Useful when building UI layouts with apps
  • 50. I use base controllers… • Simple “inheritance” for Alloy Controllers • Re-use controllers, views • Create cross-platform template wrappers
  • 51. I also use Alloy templates… • <require src=“controllerName”/> • Alloy supports require/widgets with children • Create a wrapper template controller
  • 52. I create/override Alloy tags… • Little-known feature of Alloy • <View module=“modulename”/> • Override Alloy Tags to provide per-platform support • Create your own tags! • Not a replacement for Widgets, just different
  • 53. I create/override Alloy tags… A two-way slide menu in Alloy
  • 54. I create/override Alloy tags… • Just drop into the XML • Specify Left/Right Menu • Works!
  • 56. “Module” attribute… • TitleControl - full implementation for iOS and Android • TabGroup - iOS style TabGroup for Android • CheckBox, SlideMenu for both iOS/Android • AttributedString for iOS, falls back to HTML for Android • But be careful…and tidy up after you
  • 57.
  • 58. In summary… • Separate costs, use client dev accounts, get paid • Help designers - you’re they’re only hope • Test on real devices - buy everything! • Create flexible layouts, use constants, device info • Use Genymotion! • Deliver apps over-the-air • Use Alloy, templates, create or re-write Alloy tags • Test your apps for memory leaks
  • 59. One more thing… • TiDev.io • News, Articles • Tips / Advice • twitter.com/tidevio
  • 60.
  • 61. Thank you! http://bouncingfish.com http://twitter/jasonkneen http://github.com/jasonkneen http://jasonified.com