SlideShare ist ein Scribd-Unternehmen logo
1 von 92
Building Apps for Multiple Devices Terry Ryan Developer Evangelist http://terrenceryan.com @tpryan
Let me start a process here
Poll How 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?
Content Design Develop Publish Flex with a little ActionScript only
Designing for Multiple Devices
Resolution and DPI
DPI FUBAR
So how do we deal with this?
Application DPI This is the DPI of the device you are targeting in development Allows for resizing to denser devices
Application DPI 3 Levels 160 240 320
Media Queries CSS 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 Options ApplicationDPI OS
Personal Thought on OS Media Queries Don’t do itif you want to keep a unified code base Handle Density and screen size, but not OS
Demo Application DPI  and Media Queries in Flex
Deeper Dive Narciso Jaramillo Deep Dive Into Multi Density & Multi Platform Application Development
ActionScript Only Roll your own looking at: stage.fullScreenWidth In development I’ve had issues with stage.stageWidth Capabilities.screenDPI
Demo Application Sizing in ActionScript
Flash Builder Simulating Flex In Design View At compile ActionScript At compile
!=
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 Descriptor You know that XML file Special settings for Android  IOS
BlackBerry Descriptor BlackBerry 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 Settings Permissions Custom URI Compatibility Filtering Install Location
Android Permissions ACCESS_COARSE_LOCATION ACCESS_FINE_LOCATION ACCESS_NETWORK_STATE  ACCESS_WIFI_STATE  CAMERA  INTERNET  READ_PHONE_STATE RECORD_AUDIO WAKE_LOCK  WRITE_EXTERNAL_STORAGE
Android Custom URI Allow 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.uniquename Where com.myApp.uniquename is the app id from your descriptor
Android compatibility filtering Permissions assume all or nothing So if a feature is optional, you have to set it such or it won’t show up in store Important 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 Settings Models Resolution Custom URI Compatibility Filtering Exit 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.uniquename If you set this to be the same as your application id you get compatibility with Android apps.
IOS compatibility filtering Like 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 Versions There are some issues with AIR version and target BlackBerry - 2.5 Android - 2.6 IOS -2.6, or 2.0 or 2.7
But that’s hard set <applicationxmlns="http://ns.adobe.com/air/application/2.6">
Multiple Descriptors Solution:
Publishing for Multiple Devices
Flash Builder Publish to all platforms at the same time
Compiling and Packaging Flash Builder uses features that are accessible  through command line tools  Often using those tools Therefore before it can be a feature in Flash Builder, has to be available in command line
Flash Builder vs Command line Flash Builder will often lack ui that the command line exposes So it behooves you to learn command line
Case in point Publishing AIR files compatible with Amazon Store
Command line Compiling OS Scripts ANT (what I use) Maven
Tools ANT MXMLC AIR Packagers ADT blackberry-airpackager pfi (no longer needed)
Process Compile SWF Gather External Resources Package for target device
Compiling Requires MXMLC In ANT requires MXMLC Task Despite 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"/>
Demo Command Line Compiling  with ANT
Gathering Files SWF Any assets used in application Application descriptor file
Application Descriptor Most 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  ,[object Object]
apk-debug
apk-emulator,[object Object]
Packaging for IOS <argline="-target ipa-ad-hoc "/> Options include  ,[object Object]
ipa-debug
ipa-app-store
ipa-ad-hoc,[object Object]
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 BlackBerry Debugging Installation and launching Signing
Demo Command Line Packaging with 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?

Weitere ähnliche Inhalte

Was ist angesagt?

Developing AIR for Android with Flash Professional CS5
Developing AIR for Android with Flash Professional CS5Developing AIR for Android with Flash Professional CS5
Developing AIR for Android with Flash Professional CS5Chris Griffith
 
Android Development with Flash Platform
Android Development with Flash PlatformAndroid Development with Flash Platform
Android Development with Flash PlatformMihai Corlan
 
Cross-Platform Development using Angulr JS in Visual Studio
Cross-Platform Development using Angulr JS in Visual StudioCross-Platform Development using Angulr JS in Visual Studio
Cross-Platform Development using Angulr JS in Visual StudioMizanur Sarker
 
Flash for Blackberry, iPhone and Android
Flash for Blackberry, iPhone and AndroidFlash for Blackberry, iPhone and Android
Flash for Blackberry, iPhone and AndroidMindgrub Technologies
 
Developing for Xoom with Flash and AIR
Developing for Xoom with Flash and AIRDeveloping for Xoom with Flash and AIR
Developing for Xoom with Flash and AIRTerry Ryan
 
StackLabs-DataDriven Labs - iPhone App Development Training in Mohali
StackLabs-DataDriven Labs - iPhone App Development  Training in MohaliStackLabs-DataDriven Labs - iPhone App Development  Training in Mohali
StackLabs-DataDriven Labs - iPhone App Development Training in MohaliArcadian Learning
 
Mobile App Development
Mobile App DevelopmentMobile App Development
Mobile App DevelopmentChris Morrell
 
iPhone Development Overview
iPhone Development OverviewiPhone Development Overview
iPhone Development OverviewWilliam Taysom
 
Intro to Mobile Development for Web iOS and Android
Intro to Mobile Development for Web iOS and AndroidIntro to Mobile Development for Web iOS and Android
Intro to Mobile Development for Web iOS and AndroidSendGrid
 
Programing for the iPhone
Programing for the iPhonePrograming for the iPhone
Programing for the iPhoneMike Qaissaunee
 
Smartface ile Crossplatform Uygulama Geliştirme
Smartface ile Crossplatform Uygulama GeliştirmeSmartface ile Crossplatform Uygulama Geliştirme
Smartface ile Crossplatform Uygulama GeliştirmeMobile İstanbul
 
SmartPhone Design and Delivery
SmartPhone Design and DeliverySmartPhone Design and Delivery
SmartPhone Design and DeliveryJason Diehl
 
Hybrid mobile app with Kendo UI Mobile
Hybrid mobile app with Kendo UI MobileHybrid mobile app with Kendo UI Mobile
Hybrid mobile app with Kendo UI MobileDhananjay Kumar
 
Flash platform fitc
Flash platform fitcFlash platform fitc
Flash platform fitcMark Doherty
 
Intro to PhoneGap and PhoneGap Build
Intro to PhoneGap and PhoneGap BuildIntro to PhoneGap and PhoneGap Build
Intro to PhoneGap and PhoneGap BuildChris Griffith
 
Beginning Android Flash Development
Beginning Android Flash DevelopmentBeginning Android Flash Development
Beginning Android Flash DevelopmentStephen Chin
 
An overview of mobile html + java script frameworks
An overview of mobile html + java script frameworksAn overview of mobile html + java script frameworks
An overview of mobile html + java script frameworksSasha dos Santos
 
Appcelerator Titanium - An Introduction to the Titanium Ecosystem
Appcelerator Titanium - An Introduction to the Titanium EcosystemAppcelerator Titanium - An Introduction to the Titanium Ecosystem
Appcelerator Titanium - An Introduction to the Titanium EcosystemBoydlee Pollentine
 

Was ist angesagt? (20)

Your First Adobe Flash Application for Android
Your First Adobe Flash Application for AndroidYour First Adobe Flash Application for Android
Your First Adobe Flash Application for Android
 
Developing AIR for Android with Flash Professional CS5
Developing AIR for Android with Flash Professional CS5Developing AIR for Android with Flash Professional CS5
Developing AIR for Android with Flash Professional CS5
 
Android Development with Flash Platform
Android Development with Flash PlatformAndroid Development with Flash Platform
Android Development with Flash Platform
 
Cross-Platform Development using Angulr JS in Visual Studio
Cross-Platform Development using Angulr JS in Visual StudioCross-Platform Development using Angulr JS in Visual Studio
Cross-Platform Development using Angulr JS in Visual Studio
 
Adobe Flash and Device Central
Adobe Flash and Device CentralAdobe Flash and Device Central
Adobe Flash and Device Central
 
Flash for Blackberry, iPhone and Android
Flash for Blackberry, iPhone and AndroidFlash for Blackberry, iPhone and Android
Flash for Blackberry, iPhone and Android
 
Developing for Xoom with Flash and AIR
Developing for Xoom with Flash and AIRDeveloping for Xoom with Flash and AIR
Developing for Xoom with Flash and AIR
 
StackLabs-DataDriven Labs - iPhone App Development Training in Mohali
StackLabs-DataDriven Labs - iPhone App Development  Training in MohaliStackLabs-DataDriven Labs - iPhone App Development  Training in Mohali
StackLabs-DataDriven Labs - iPhone App Development Training in Mohali
 
Mobile App Development
Mobile App DevelopmentMobile App Development
Mobile App Development
 
iPhone Development Overview
iPhone Development OverviewiPhone Development Overview
iPhone Development Overview
 
Intro to Mobile Development for Web iOS and Android
Intro to Mobile Development for Web iOS and AndroidIntro to Mobile Development for Web iOS and Android
Intro to Mobile Development for Web iOS and Android
 
Programing for the iPhone
Programing for the iPhonePrograming for the iPhone
Programing for the iPhone
 
Smartface ile Crossplatform Uygulama Geliştirme
Smartface ile Crossplatform Uygulama GeliştirmeSmartface ile Crossplatform Uygulama Geliştirme
Smartface ile Crossplatform Uygulama Geliştirme
 
SmartPhone Design and Delivery
SmartPhone Design and DeliverySmartPhone Design and Delivery
SmartPhone Design and Delivery
 
Hybrid mobile app with Kendo UI Mobile
Hybrid mobile app with Kendo UI MobileHybrid mobile app with Kendo UI Mobile
Hybrid mobile app with Kendo UI Mobile
 
Flash platform fitc
Flash platform fitcFlash platform fitc
Flash platform fitc
 
Intro to PhoneGap and PhoneGap Build
Intro to PhoneGap and PhoneGap BuildIntro to PhoneGap and PhoneGap Build
Intro to PhoneGap and PhoneGap Build
 
Beginning Android Flash Development
Beginning Android Flash DevelopmentBeginning Android Flash Development
Beginning Android Flash Development
 
An overview of mobile html + java script frameworks
An overview of mobile html + java script frameworksAn overview of mobile html + java script frameworks
An overview of mobile html + java script frameworks
 
Appcelerator Titanium - An Introduction to the Titanium Ecosystem
Appcelerator Titanium - An Introduction to the Titanium EcosystemAppcelerator Titanium - An Introduction to the Titanium Ecosystem
Appcelerator Titanium - An Introduction to the Titanium Ecosystem
 

Ähnlich wie Building apps for multiple devices

Silver Light By Nyros Developer
Silver Light By Nyros DeveloperSilver Light By Nyros Developer
Silver Light By Nyros DeveloperNyros Technologies
 
Yahoo Mobile Widgets
Yahoo Mobile WidgetsYahoo Mobile Widgets
Yahoo Mobile WidgetsJose Palazon
 
21 android2 updated
21 android2 updated21 android2 updated
21 android2 updatedGhanaGTUG
 
Migration testing framework
Migration testing frameworkMigration testing framework
Migration testing frameworkIndicThreads
 
Enterprise Google Gadgets Integrated with Alfresco - Open Source ECM
Enterprise Google Gadgets Integrated with Alfresco - Open Source ECM Enterprise Google Gadgets Integrated with Alfresco - Open Source ECM
Enterprise Google Gadgets Integrated with Alfresco - Open Source ECM Alfresco Software
 
Creating Yahoo Mobile Widgets
Creating Yahoo Mobile WidgetsCreating Yahoo Mobile Widgets
Creating Yahoo Mobile WidgetsRicardo Varela
 
10 Things You're Not Doing [IBM Lotus Notes Domino Application Development]
10 Things You're Not Doing [IBM Lotus Notes Domino Application Development]10 Things You're Not Doing [IBM Lotus Notes Domino Application Development]
10 Things You're Not Doing [IBM Lotus Notes Domino Application Development]Chris Toohey
 
Advanced Android gReporter
Advanced Android gReporterAdvanced Android gReporter
Advanced Android gReporternatdefreitas
 
Client-side JavaScript Vulnerabilities
Client-side JavaScript VulnerabilitiesClient-side JavaScript Vulnerabilities
Client-side JavaScript VulnerabilitiesOry Segal
 
Use Web Skills To Build Mobile Apps
Use Web Skills To Build Mobile AppsUse Web Skills To Build Mobile Apps
Use Web Skills To Build Mobile AppsNathan Smith
 
Enterprise AIR Development for JavaScript Developers
Enterprise AIR Development for JavaScript DevelopersEnterprise AIR Development for JavaScript Developers
Enterprise AIR Development for JavaScript DevelopersAndreCharland
 
IBM Lotus Notes Domino XPages and XPages for Mobile
IBM Lotus Notes Domino XPages and XPages for MobileIBM Lotus Notes Domino XPages and XPages for Mobile
IBM Lotus Notes Domino XPages and XPages for MobileChris Toohey
 
PreDevCamp San Diego slides
PreDevCamp San Diego slidesPreDevCamp San Diego slides
PreDevCamp San Diego slidesDavid Horn
 

Ähnlich wie Building apps for multiple devices (20)

Developing in android
Developing in androidDeveloping in android
Developing in android
 
Geekcamp Android
Geekcamp AndroidGeekcamp Android
Geekcamp Android
 
Silver Light By Nyros Developer
Silver Light By Nyros DeveloperSilver Light By Nyros Developer
Silver Light By Nyros Developer
 
BluePrint Mobile Framework
BluePrint Mobile FrameworkBluePrint Mobile Framework
BluePrint Mobile Framework
 
Yahoo Mobile Widgets
Yahoo Mobile WidgetsYahoo Mobile Widgets
Yahoo Mobile Widgets
 
21 android2 updated
21 android2 updated21 android2 updated
21 android2 updated
 
Migration testing framework
Migration testing frameworkMigration testing framework
Migration testing framework
 
Enterprise Google Gadgets Integrated with Alfresco - Open Source ECM
Enterprise Google Gadgets Integrated with Alfresco - Open Source ECM Enterprise Google Gadgets Integrated with Alfresco - Open Source ECM
Enterprise Google Gadgets Integrated with Alfresco - Open Source ECM
 
Ui patterns
Ui patternsUi patterns
Ui patterns
 
Beautifully Usable, Multiple Screens Too
Beautifully Usable, Multiple Screens TooBeautifully Usable, Multiple Screens Too
Beautifully Usable, Multiple Screens Too
 
Creating Yahoo Mobile Widgets
Creating Yahoo Mobile WidgetsCreating Yahoo Mobile Widgets
Creating Yahoo Mobile Widgets
 
10 Things You're Not Doing [IBM Lotus Notes Domino Application Development]
10 Things You're Not Doing [IBM Lotus Notes Domino Application Development]10 Things You're Not Doing [IBM Lotus Notes Domino Application Development]
10 Things You're Not Doing [IBM Lotus Notes Domino Application Development]
 
Advanced Android gReporter
Advanced Android gReporterAdvanced Android gReporter
Advanced Android gReporter
 
Migrating JavaME Apps to Android
Migrating JavaME Apps to AndroidMigrating JavaME Apps to Android
Migrating JavaME Apps to Android
 
Client-side JavaScript Vulnerabilities
Client-side JavaScript VulnerabilitiesClient-side JavaScript Vulnerabilities
Client-side JavaScript Vulnerabilities
 
Android Intro
Android IntroAndroid Intro
Android Intro
 
Use Web Skills To Build Mobile Apps
Use Web Skills To Build Mobile AppsUse Web Skills To Build Mobile Apps
Use Web Skills To Build Mobile Apps
 
Enterprise AIR Development for JavaScript Developers
Enterprise AIR Development for JavaScript DevelopersEnterprise AIR Development for JavaScript Developers
Enterprise AIR Development for JavaScript Developers
 
IBM Lotus Notes Domino XPages and XPages for Mobile
IBM Lotus Notes Domino XPages and XPages for MobileIBM Lotus Notes Domino XPages and XPages for Mobile
IBM Lotus Notes Domino XPages and XPages for Mobile
 
PreDevCamp San Diego slides
PreDevCamp San Diego slidesPreDevCamp San Diego slides
PreDevCamp San Diego slides
 

Mehr von Terry Ryan

Making the Mobile Web Work
Making the Mobile Web WorkMaking the Mobile Web Work
Making the Mobile Web WorkTerry Ryan
 
The Users are Restless
The Users are RestlessThe Users are Restless
The Users are RestlessTerry Ryan
 
HTML Design for Devices
HTML Design for DevicesHTML Design for Devices
HTML Design for DevicesTerry Ryan
 
The Future of HTML5 Motion Design
 The Future of HTML5 Motion Design The Future of HTML5 Motion Design
The Future of HTML5 Motion DesignTerry Ryan
 
Adobe and Modern Web Development
Adobe and Modern Web DevelopmentAdobe and Modern Web Development
Adobe and Modern Web DevelopmentTerry Ryan
 
Semantic HTML5
Semantic HTML5Semantic HTML5
Semantic HTML5Terry Ryan
 
The Future of HTML Motion Design
The Future of HTML Motion DesignThe Future of HTML Motion Design
The Future of HTML Motion DesignTerry Ryan
 
Skip the IDE with PhoneGap Build
Skip the IDE with PhoneGap BuildSkip the IDE with PhoneGap Build
Skip the IDE with PhoneGap BuildTerry Ryan
 
Beautiful PhoneGap Apps
Beautiful PhoneGap AppsBeautiful PhoneGap Apps
Beautiful PhoneGap AppsTerry Ryan
 
Introduction to HTML5
Introduction to HTML5Introduction to HTML5
Introduction to HTML5Terry Ryan
 
The Future of HTML5 Motion Design
The Future of HTML5 Motion DesignThe Future of HTML5 Motion Design
The Future of HTML5 Motion DesignTerry Ryan
 
Mobile Apps with PhoneGap and jQuery Mobile
Mobile Apps with PhoneGap and jQuery MobileMobile Apps with PhoneGap and jQuery Mobile
Mobile Apps with PhoneGap and jQuery MobileTerry Ryan
 
Design for Developers
Design for DevelopersDesign for Developers
Design for DevelopersTerry Ryan
 
cf.Objective ANZ Keynote
cf.Objective ANZ Keynotecf.Objective ANZ Keynote
cf.Objective ANZ KeynoteTerry Ryan
 
Flex Mobile Skinning Workshop
Flex Mobile Skinning WorkshopFlex Mobile Skinning Workshop
Flex Mobile Skinning WorkshopTerry Ryan
 
HTML5 Semantic Web
HTML5 Semantic WebHTML5 Semantic Web
HTML5 Semantic WebTerry Ryan
 
Intro to Coldfusion
Intro to ColdfusionIntro to Coldfusion
Intro to ColdfusionTerry Ryan
 

Mehr von Terry Ryan (20)

Making the Mobile Web Work
Making the Mobile Web WorkMaking the Mobile Web Work
Making the Mobile Web Work
 
The Users are Restless
The Users are RestlessThe Users are Restless
The Users are Restless
 
HTML Design for Devices
HTML Design for DevicesHTML Design for Devices
HTML Design for Devices
 
The Future of HTML5 Motion Design
 The Future of HTML5 Motion Design The Future of HTML5 Motion Design
The Future of HTML5 Motion Design
 
Adobe and Modern Web Development
Adobe and Modern Web DevelopmentAdobe and Modern Web Development
Adobe and Modern Web Development
 
Semantic HTML5
Semantic HTML5Semantic HTML5
Semantic HTML5
 
The Future of HTML Motion Design
The Future of HTML Motion DesignThe Future of HTML Motion Design
The Future of HTML Motion Design
 
Skip the IDE with PhoneGap Build
Skip the IDE with PhoneGap BuildSkip the IDE with PhoneGap Build
Skip the IDE with PhoneGap Build
 
D2WC Keynote
D2WC KeynoteD2WC Keynote
D2WC Keynote
 
WebDU Keynote
WebDU KeynoteWebDU Keynote
WebDU Keynote
 
Beautiful PhoneGap Apps
Beautiful PhoneGap AppsBeautiful PhoneGap Apps
Beautiful PhoneGap Apps
 
Introduction to HTML5
Introduction to HTML5Introduction to HTML5
Introduction to HTML5
 
The Future of HTML5 Motion Design
The Future of HTML5 Motion DesignThe Future of HTML5 Motion Design
The Future of HTML5 Motion Design
 
Adobe & HTML5
Adobe & HTML5Adobe & HTML5
Adobe & HTML5
 
Mobile Apps with PhoneGap and jQuery Mobile
Mobile Apps with PhoneGap and jQuery MobileMobile Apps with PhoneGap and jQuery Mobile
Mobile Apps with PhoneGap and jQuery Mobile
 
Design for Developers
Design for DevelopersDesign for Developers
Design for Developers
 
cf.Objective ANZ Keynote
cf.Objective ANZ Keynotecf.Objective ANZ Keynote
cf.Objective ANZ Keynote
 
Flex Mobile Skinning Workshop
Flex Mobile Skinning WorkshopFlex Mobile Skinning Workshop
Flex Mobile Skinning Workshop
 
HTML5 Semantic Web
HTML5 Semantic WebHTML5 Semantic Web
HTML5 Semantic Web
 
Intro to Coldfusion
Intro to ColdfusionIntro to Coldfusion
Intro to Coldfusion
 

Kürzlich hochgeladen

Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 

Kürzlich hochgeladen (20)

Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 

Building apps for multiple devices

  • 1. Building Apps for Multiple Devices Terry Ryan Developer Evangelist http://terrenceryan.com @tpryan
  • 2. Let me start a process here
  • 3. Poll How 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?
  • 4. You can do cross platform mobile development with Adobe AIR!!!
  • 6. We a wrote very good demo project. Actual mileage may vary.
  • 8. Please, I beg you, button, stop appearing off-screen
  • 9. My goal: give you guys an idea of what you need to do to actually produce multi-screen apps
  • 11. Should you do this?
  • 12. Content Design Develop Publish Flex with a little ActionScript only
  • 15.
  • 16.
  • 17.
  • 18.
  • 20. So how do we deal with this?
  • 21. Application DPI This is the DPI of the device you are targeting in development Allows for resizing to denser devices
  • 22. Application DPI 3 Levels 160 240 320
  • 23. Media Queries CSS media queries allow you to target different DPI screens naturally
  • 24. Media Queries @media all and (application-dpi: 160) { s|Button { color: red; } } @mediaalland (application-dpi: 240) { s|Button { color: green; } }
  • 25. Media Query Options ApplicationDPI OS
  • 26. Personal Thought on OS Media Queries Don’t do itif you want to keep a unified code base Handle Density and screen size, but not OS
  • 27. Demo Application DPI and Media Queries in Flex
  • 28. Deeper Dive Narciso Jaramillo Deep Dive Into Multi Density & Multi Platform Application Development
  • 29. ActionScript Only Roll your own looking at: stage.fullScreenWidth In development I’ve had issues with stage.stageWidth Capabilities.screenDPI
  • 30. Demo Application Sizing in ActionScript
  • 31. Flash Builder Simulating Flex In Design View At compile ActionScript At compile
  • 32. !=
  • 33.
  • 34.
  • 36. Don’t tweak for devices in code.
  • 37. If you can avoid it.
  • 38. But what about differences between UI controls IOS vs Android vsPlayBook
  • 41. Application Descriptor You know that XML file Special settings for Android IOS
  • 42. BlackBerry Descriptor BlackBerry Uses Application Descriptor and another file: blackberry-tablet.xml
  • 43. BlackBerry Descriptor Allows you to make transparent apps and change preview icons. Transparent apps aren’t supported on other platforms
  • 44. Android Settings Permissions Custom URI Compatibility Filtering Install Location
  • 45. Android Permissions ACCESS_COARSE_LOCATION ACCESS_FINE_LOCATION ACCESS_NETWORK_STATE ACCESS_WIFI_STATE CAMERA INTERNET READ_PHONE_STATE RECORD_AUDIO WAKE_LOCK WRITE_EXTERNAL_STORAGE
  • 46. Android Custom URI Allow web pages or other android apps to launch your app from a url when the application is installed.
  • 47. 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.uniquename Where com.myApp.uniquename is the app id from your descriptor
  • 48. Android compatibility filtering Permissions assume all or nothing So if a feature is optional, you have to set it such or it won’t show up in store Important for Camera, Audio
  • 49. 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"/>
  • 50. Android Instal Location <android> <manifestAdditions> <![CDATA[ <manifest android:installLocation="preferExternal"/> ]]> </manifestAdditions> </android>
  • 51. IOS Settings Models Resolution Custom URI Compatibility Filtering Exit or Pause
  • 52. Models <key>UIDeviceFamily</key> <array> <string>1</string><!-- iPod/iPhone --> <string>2</string><!-- iPad --> </array>
  • 53. Resolution <requestedDisplayResolution>high</requestedDisplayResolution> High will allow you to draw single pixels on a high resolution screen, otherwise 1 pixel = 4 pixels
  • 54. 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.uniquename If you set this to be the same as your application id you get compatibility with Android apps.
  • 55. IOS compatibility filtering Like Android it’s about discoverability and installation, not usage.
  • 56. Compatibility Filtering <key>UIRequiredDeviceCapabilities</key> <array> <string>microphone</string> <string>still-camera</string> </array>
  • 57. Exit or Pause <key>UIApplicationExitsOnSuspend</key> <string>YES</string>
  • 59. AIR Versions There are some issues with AIR version and target BlackBerry - 2.5 Android - 2.6 IOS -2.6, or 2.0 or 2.7
  • 60. But that’s hard set <applicationxmlns="http://ns.adobe.com/air/application/2.6">
  • 63. Flash Builder Publish to all platforms at the same time
  • 64. Compiling and Packaging Flash Builder uses features that are accessible through command line tools Often using those tools Therefore before it can be a feature in Flash Builder, has to be available in command line
  • 65. Flash Builder vs Command line Flash Builder will often lack ui that the command line exposes So it behooves you to learn command line
  • 66. Case in point Publishing AIR files compatible with Amazon Store
  • 67. Command line Compiling OS Scripts ANT (what I use) Maven
  • 68. Tools ANT MXMLC AIR Packagers ADT blackberry-airpackager pfi (no longer needed)
  • 69. Process Compile SWF Gather External Resources Package for target device
  • 70. Compiling Requires MXMLC In ANT requires MXMLC Task Despite the name, works for non MXML apps. Doesn’t add the Flex Framework or anything either.
  • 71. 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>
  • 72. Compiling via ANT <load-configfilename="${FLEX_HOME}/frameworks/airmobile-config.xml"/> On Desktops <load-configfilename="${FLEX_HOME}/frameworks/air-config.xml"/>
  • 73. Demo Command Line Compiling with ANT
  • 74. Gathering Files SWF Any assets used in application Application descriptor file
  • 75. Application Descriptor Most 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.
  • 76. 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>
  • 77.
  • 79.
  • 80.
  • 83.
  • 85. 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
  • 86. Packaging for BlackBerry Debugging Installation and launching Signing
  • 87. Demo Command Line Packaging with ANT
  • 88. 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>
  • 89. So should you do this?
  • 91. Can you wait for the next version of AIR?
  • 92. Is your app your competitive advantage, or a cost center?
  • 93. Is your audience spread out on devices?
  • 95. Follow up? Feel free to contact me terry.ryan@adobe.com http://terrenceryan.com Twitter: @tpryan