SlideShare a Scribd company logo
Building Apps for Multiple DevicesTerry RyanDeveloper Evangelisthttp://terrenceryan.com@tpryan
Let me start a process here
PollHow many have done native mobile?How many have done mobile AIR?How many have done mobile AIR with Flex?How many have done it for multiple platforms?
You can do cross platform mobile development with Adobe AIR!!!
Wooooooh!!!!!!
We a wrote very good demo project. Actual mileage may vary.
Noooooo!!!!!!
Please, I beg you, button, stop appearing off-screen
My goal: give you guys an idea of what you need to do to actually produce multi-screen apps
Using one code base
Should you do this?
ContentDesignDevelopPublishFlex with a little ActionScript only
Designing for Multiple Devices
Resolution and DPI
Building apps for multiple devices
Building apps for multiple devices
Building apps for multiple devices
Building apps for multiple devices
DPI FUBAR
So how do we deal with this?
Application DPIThis is the DPI of the device you are targeting in developmentAllows for resizing to denser devices
Application DPI3 Levels160240320
Media QueriesCSS media queries allow you to target different DPI screens naturally
Media Queries@media all and (application-dpi: 160){s|Button	{color: red;	}}@mediaalland (application-dpi: 240){s|Button	{color: green;	}}
Media Query OptionsApplicationDPIOS
Personal Thought on OS Media QueriesDon’t do itif you want to keep a unified code baseHandle Density and screen size, but not OS
DemoApplication DPI  and Media Queries in Flex
Deeper DiveNarciso JaramilloDeep Dive Into Multi Density & Multi Platform Application Development
ActionScript OnlyRoll your own looking at:stage.fullScreenWidthIn development I’ve had issues with stage.stageWidthCapabilities.screenDPI
DemoApplication Sizing in ActionScript
Flash Builder SimulatingFlexIn Design ViewAt compileActionScriptAt compile
!=
Building apps for multiple devices
Building apps for multiple devices
Developing for Multiple Devices
Don’t tweak for devices in code.
If you can avoid it.
But what about differences between UI controls IOS vs Android vsPlayBook
It depends
Configuring for Multiple Devices
Application DescriptorYou know that XML fileSpecial settings forAndroid IOS
BlackBerry DescriptorBlackBerry Uses Application Descriptor and another file:blackberry-tablet.xml
BlackBerry Descriptor	Allows you to make transparent apps and change preview icons.Transparent apps aren’t supported on other platforms
Android SettingsPermissionsCustom URICompatibility FilteringInstall Location
Android PermissionsACCESS_COARSE_LOCATIONACCESS_FINE_LOCATIONACCESS_NETWORK_STATE ACCESS_WIFI_STATE CAMERA INTERNET READ_PHONE_STATERECORD_AUDIOWAKE_LOCK WRITE_EXTERNAL_STORAGE
Android Custom URIAllow web pages or other android apps to launch your app from a url when the application is installed.
Android Custom URI<activity>     <intent-filter>         <action android:name="android.intent.action.MAIN"/>         <category android:name="android.intent.category.LAUNCHER"/>     </intent-filter>     <intent-filter>         <action android:name="android.intent.action.VIEW"/>         <category android:name="android.intent.category.BROWSABLE"/>         <category android:name="android.intent.category.DEFAULT"/>         <data android:scheme="myURI"/>     </intent-filter> </activity> URL would be:myURI://com.myApp.uniquenameWhere com.myApp.uniquename is the app id from your descriptor
Android compatibility filteringPermissions assume all or nothingSo if a feature is optional, you have to set it such or it won’t show up in storeImportant for Camera, Audio
Camera Filtering<uses-permission android:name="android.permission.CAMERA" /> <uses-feature android:name="android.hardware.camera" android:required="false"/> <uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/> <uses-feature android:name="android.hardware.camera.flash" android:required="false"/>
Android Instal Location <android>     <manifestAdditions>         <![CDATA[             <manifest android:installLocation="preferExternal"/>         ]]>     </manifestAdditions> </android>
IOS SettingsModelsResolutionCustom URICompatibility FilteringExit or Pause
Models<key>UIDeviceFamily</key><array><string>1</string><!-- iPod/iPhone --><string>2</string><!-- iPad --></array>
Resolution<requestedDisplayResolution>high</requestedDisplayResolution>High will allow you to draw single pixels on a high resolution screen, otherwise 1 pixel = 4 pixels
Custom URI<key>CFBundleURLTypes</key><array><dict><key>CFBundleURLSchemes</key><array><string>myURI</string></array><key>CFBundleURLName</key><string>com.myApp.uniquename</string></dict></array>URL would be:myURI://com.myApp.uniquenameIf you set this to be the same as your application id you get compatibility with Android apps.
IOS compatibility filteringLike Android it’s about discoverability and installation, not usage.
Compatibility Filtering<key>UIRequiredDeviceCapabilities</key><array><string>microphone</string><string>still-camera</string></array>
Exit or Pause<key>UIApplicationExitsOnSuspend</key><string>YES</string>
Icon sizes
AIR VersionsThere are some issues with AIR version and targetBlackBerry - 2.5Android - 2.6IOS -2.6, or 2.0 or 2.7
But that’s hard set<applicationxmlns="http://ns.adobe.com/air/application/2.6">
Multiple DescriptorsSolution:
Publishing for Multiple Devices
Flash BuilderPublish to all platforms at the same time
Compiling and PackagingFlash Builder uses features that are accessible  through command line tools Often using those toolsTherefore before it can be a feature in Flash Builder, has to be available in command line
Flash Builder vs Command lineFlash Builder will often lack ui that the command line exposesSo it behooves you to learn command line
Case in pointPublishing AIR files compatible with Amazon Store
Command line CompilingOS ScriptsANT (what I use)Maven
ToolsANTMXMLCAIR PackagersADTblackberry-airpackagerpfi (no longer needed)
ProcessCompile SWFGather External ResourcesPackage for target device
CompilingRequires MXMLCIn ANT requires MXMLC TaskDespite the name, works for non MXML apps. Doesn’t add the Flex Framework or anything either.
Compiling via ANT<mxmlcfile="${projectFile}"output="${device.swf}">	<load-configfilename="${FLEX_HOME}/frameworks/airmobile-config.xml"/>	<source-pathpath-element="${FLEX_HOME}/frameworks"/>	<static-link-runtime-shared-libraries/>	<compiler.library-pathdir="${FLEX_HOME}/frameworks"append="true"><includename="libs/*"/></compiler.library-path></mxmlc>
Compiling via ANT<load-configfilename="${FLEX_HOME}/frameworks/airmobile-config.xml"/>On Desktops<load-configfilename="${FLEX_HOME}/frameworks/air-config.xml"/>
DemoCommand Line Compiling with ANT
Gathering FilesSWFAny assets used in applicationApplication descriptor file
Application DescriptorMost have a line: <content>[This value will be overwritten by Flash Builder in the output app.xml]</content>It won’t so you have to.
Packaging for Android<execexecutable="${ADT}"dir="${android.collect}"><argvalue="-package"/><argline="-target apk"/><argline="-storetype pkcs12"/><argline="-keystore ${cert}"/><argline="-storepass ${cert.password}"/><argvalue="${app.name}"/><argvalue="${app.name}-app.xml"/><argvalue="${app.name}.swf"/><argvalue="assets"/></exec>
Packaging for Android<argline="-target apk"/>Options include apk
apk-debug
apk-emulatorPackaging for IOS<execexecutable="${ADT}"dir="${ios.collect}"><argvalue="-package"/><argline="-target ipa-ad-hoc "/><argline="-storetype pkcs12 "/><argline="-keystore ${ios.cert} "/><argline="-storepass ${ios.certpass} "/><argline="-provisioning-profile ${ios.provision} "/><argvalue="${app.name}.ipa"/><argvalue="${app.name}-app.xml"/><argvalue="${app.name}.swf"/><argvalue="assets"/></exec>
Packaging for IOS<argline="-target ipa-ad-hoc "/>Options include ipa-test
ipa-debug
ipa-app-store
ipa-ad-hocPackaging for BlackBerry<execexecutable="${bb.packager}"dir="${bb.collect}"><argvalue="-package"/><argvalue="${app.name}.bar"/><argvalue="${app.name}-app.bb.xml"/><argvalue="${app.name}.swf"/></exec>
Tons of options
Packaging for BlackBerry-package               - command to package   -target (bar|bar-debug) - target format bar or bar-debug   -connect <host>        - host ip address for debugging   -no-validation         - turn off air and bar validation   -list-files            - list all files in the resulting package   -env <var>=<value>     - set an extra environment variable for the runtime   -barVersion <version>  - run in compatibility mode (set older version to be compatible with)   -publisher             - set the publisher (author) name   -buildId               - set the build id (4th segment of the version)   -devMode               - package in development mode<signing options> (part of packaging options):   -signDev              - command to sign with developer's certificate   -keystore <store>      - keystore file   -storepass <pass>      - store password for certificate store   -signRim               - command to sign by rim (requires internet connection)   -cskpass <pass>        - password to encrypt long-lived keys<deployment_options>:   -installApp            - command to install the package   -launchApp             - command to launch the app   -device <deviceId>     - set host name or IP address of the target   -password <password>   - device password
Packaging for BlackBerryDebuggingInstallation and launchingSigning
DemoCommand Line Packagingwith ANT
Packaging for Amazon<execexecutable="${ADT}"dir="${android.collect}"><argvalue="-package"/><argline="-target apk"/>	<argline="-airDownloadURL ${amazon.url}"/><argline="-storetype pkcs12"/><argline="-keystore ${cert}"/><argline="-storepass ${cert.password}"/><argvalue="${app.name}"/><argvalue="${app.name}-app.xml"/><argvalue="${app.name}.swf"/><argvalue="assets"/></exec>
So should you do this?
My Weasely answer:It Depends
Can you wait for the next version of AIR?
Is your app your competitive advantage, or a cost center?

More Related Content

What's hot (20)

PPTX
Developing AIR for Android with Flash Professional CS5
Chris Griffith
 
PDF
Android Development with Flash Platform
Mihai Corlan
 
PPTX
Cross-Platform Development using Angulr JS in Visual Studio
Mizanur Sarker
 
PPT
Adobe Flash and Device Central
Mindgrub Technologies
 
PPT
Flash for Blackberry, iPhone and Android
Mindgrub Technologies
 
PPTX
Developing for Xoom with Flash and AIR
Terry Ryan
 
PPTX
StackLabs-DataDriven Labs - iPhone App Development Training in Mohali
Arcadian Learning
 
PDF
Mobile App Development
Chris Morrell
 
PDF
iPhone Development Overview
William Taysom
 
PPTX
Intro to Mobile Development for Web iOS and Android
SendGrid
 
KEY
Programing for the iPhone
Mike Qaissaunee
 
PPTX
Smartface ile Crossplatform Uygulama Geliştirme
Mobile İstanbul
 
PPTX
SmartPhone Design and Delivery
Jason Diehl
 
PPTX
Hybrid mobile app with Kendo UI Mobile
Dhananjay Kumar
 
PPTX
Flash platform fitc
Mark Doherty
 
PPTX
Intro to PhoneGap and PhoneGap Build
Chris Griffith
 
PPTX
Beginning Android Flash Development
Stephen Chin
 
PPTX
An overview of mobile html + java script frameworks
Sasha dos Santos
 
PPTX
Appcelerator Titanium - An Introduction to the Titanium Ecosystem
Boydlee Pollentine
 
PDF
Lublin Startup Festival - Mobile Architecture Design Patterns
Karol Szmaj
 
Developing AIR for Android with Flash Professional CS5
Chris Griffith
 
Android Development with Flash Platform
Mihai Corlan
 
Cross-Platform Development using Angulr JS in Visual Studio
Mizanur Sarker
 
Adobe Flash and Device Central
Mindgrub Technologies
 
Flash for Blackberry, iPhone and Android
Mindgrub Technologies
 
Developing for Xoom with Flash and AIR
Terry Ryan
 
StackLabs-DataDriven Labs - iPhone App Development Training in Mohali
Arcadian Learning
 
Mobile App Development
Chris Morrell
 
iPhone Development Overview
William Taysom
 
Intro to Mobile Development for Web iOS and Android
SendGrid
 
Programing for the iPhone
Mike Qaissaunee
 
Smartface ile Crossplatform Uygulama Geliştirme
Mobile İstanbul
 
SmartPhone Design and Delivery
Jason Diehl
 
Hybrid mobile app with Kendo UI Mobile
Dhananjay Kumar
 
Flash platform fitc
Mark Doherty
 
Intro to PhoneGap and PhoneGap Build
Chris Griffith
 
Beginning Android Flash Development
Stephen Chin
 
An overview of mobile html + java script frameworks
Sasha dos Santos
 
Appcelerator Titanium - An Introduction to the Titanium Ecosystem
Boydlee Pollentine
 
Lublin Startup Festival - Mobile Architecture Design Patterns
Karol Szmaj
 

Similar to Building apps for multiple devices (20)

PPTX
AIR Mobile Application Development: Package, Building, Design & Skinning
Renaun Erickson
 
PDF
Adventures in cross platform ConnectJS / TiConnect 2014
Jason Kneen
 
KEY
Going mobile natebeck
Nate Beck
 
PDF
Going Mobile - Flash Gaming Summit 2012
Nate Beck
 
PDF
Mobile stategy
Burhan Surti
 
PPTX
Going Mobile by Nate Beck
mochimedia
 
PDF
Developing Android Applications with Adobe AIR 1st Edition Véronique Brossier
creesnizza2b
 
PDF
LUMIA APP LABS: WINDOWS PHONE 8 FOR NOKIA DEVELOPERS
Microsoft Mobile Developer
 
PDF
Developing Android Applications with Adobe AIR 1st Edition Véronique Brossier
joicyikoi
 
PPTX
Windows Phone 7
David Chou
 
ODP
Developing for Mobile with the Flex Framework
Matthew Fabb
 
PDF
Core Concepts of Mobile Development.pdf
ShaiAlmog1
 
PDF
Android 101 Writing And Publishing Android Applications
Gitesh Khodiyar
 
PDF
Workshop: Integrating Amazon APIs in Unity
Amazon Appstore Developers
 
PPTX
iOS vs android .pptx
abid masood
 
PPTX
Beginning Android Flash Development - GTUG Edition
Stephen Chin
 
PPTX
Dia 1 intro to mobile and xamarin
Hernan Zaldivar
 
PPTX
Digital Fun for the Digital Home
Renaun Erickson
 
PPTX
Windows Development Story with Xamarin
Joshua Drew
 
PPT
Road Ahead For Mobile Game Development
Imran K
 
AIR Mobile Application Development: Package, Building, Design & Skinning
Renaun Erickson
 
Adventures in cross platform ConnectJS / TiConnect 2014
Jason Kneen
 
Going mobile natebeck
Nate Beck
 
Going Mobile - Flash Gaming Summit 2012
Nate Beck
 
Mobile stategy
Burhan Surti
 
Going Mobile by Nate Beck
mochimedia
 
Developing Android Applications with Adobe AIR 1st Edition Véronique Brossier
creesnizza2b
 
LUMIA APP LABS: WINDOWS PHONE 8 FOR NOKIA DEVELOPERS
Microsoft Mobile Developer
 
Developing Android Applications with Adobe AIR 1st Edition Véronique Brossier
joicyikoi
 
Windows Phone 7
David Chou
 
Developing for Mobile with the Flex Framework
Matthew Fabb
 
Core Concepts of Mobile Development.pdf
ShaiAlmog1
 
Android 101 Writing And Publishing Android Applications
Gitesh Khodiyar
 
Workshop: Integrating Amazon APIs in Unity
Amazon Appstore Developers
 
iOS vs android .pptx
abid masood
 
Beginning Android Flash Development - GTUG Edition
Stephen Chin
 
Dia 1 intro to mobile and xamarin
Hernan Zaldivar
 
Digital Fun for the Digital Home
Renaun Erickson
 
Windows Development Story with Xamarin
Joshua Drew
 
Road Ahead For Mobile Game Development
Imran K
 
Ad

More from Terry Ryan (20)

PPT
Making the Mobile Web Work
Terry Ryan
 
PDF
The Users are Restless
Terry Ryan
 
KEY
HTML Design for Devices
Terry Ryan
 
KEY
The Future of HTML5 Motion Design
Terry Ryan
 
KEY
Adobe and Modern Web Development
Terry Ryan
 
KEY
Semantic HTML5
Terry Ryan
 
KEY
The Future of HTML Motion Design
Terry Ryan
 
KEY
Skip the IDE with PhoneGap Build
Terry Ryan
 
KEY
D2WC Keynote
Terry Ryan
 
PPTX
WebDU Keynote
Terry Ryan
 
PPTX
Beautiful PhoneGap Apps
Terry Ryan
 
PPTX
Introduction to HTML5
Terry Ryan
 
PPTX
The Future of HTML5 Motion Design
Terry Ryan
 
PPTX
Adobe & HTML5
Terry Ryan
 
PPTX
Mobile Apps with PhoneGap and jQuery Mobile
Terry Ryan
 
PPTX
Design for Developers
Terry Ryan
 
PDF
cf.Objective ANZ Keynote
Terry Ryan
 
POTX
Flex Mobile Skinning Workshop
Terry Ryan
 
PPTX
HTML5 Semantic Web
Terry Ryan
 
PPTX
Intro to Coldfusion
Terry Ryan
 
Making the Mobile Web Work
Terry Ryan
 
The Users are Restless
Terry Ryan
 
HTML Design for Devices
Terry Ryan
 
The Future of HTML5 Motion Design
Terry Ryan
 
Adobe and Modern Web Development
Terry Ryan
 
Semantic HTML5
Terry Ryan
 
The Future of HTML Motion Design
Terry Ryan
 
Skip the IDE with PhoneGap Build
Terry Ryan
 
D2WC Keynote
Terry Ryan
 
WebDU Keynote
Terry Ryan
 
Beautiful PhoneGap Apps
Terry Ryan
 
Introduction to HTML5
Terry Ryan
 
The Future of HTML5 Motion Design
Terry Ryan
 
Adobe & HTML5
Terry Ryan
 
Mobile Apps with PhoneGap and jQuery Mobile
Terry Ryan
 
Design for Developers
Terry Ryan
 
cf.Objective ANZ Keynote
Terry Ryan
 
Flex Mobile Skinning Workshop
Terry Ryan
 
HTML5 Semantic Web
Terry Ryan
 
Intro to Coldfusion
Terry Ryan
 
Ad

Recently uploaded (20)

PPTX
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
PDF
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
PDF
What Makes Contify’s News API Stand Out: Key Features at a Glance
Contify
 
PPTX
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
PPTX
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
PDF
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
PPTX
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
PDF
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
PDF
Blockchain Transactions Explained For Everyone
CIFDAQ
 
PDF
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
PDF
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
PDF
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
PDF
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PPTX
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
PDF
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
PDF
Empower Inclusion Through Accessible Java Applications
Ana-Maria Mihalceanu
 
PDF
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
PDF
CIFDAQ Market Wrap for the week of 4th July 2025
CIFDAQ
 
PDF
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 
PDF
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
What Makes Contify’s News API Stand Out: Key Features at a Glance
Contify
 
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
Blockchain Transactions Explained For Everyone
CIFDAQ
 
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
Empower Inclusion Through Accessible Java Applications
Ana-Maria Mihalceanu
 
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
CIFDAQ Market Wrap for the week of 4th July 2025
CIFDAQ
 
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 

Building apps for multiple devices