62
Building High Performance iPhone Applications with Flash CS5 Mike Chambers Principal Product Manager Developer Relations Flash Platform

Flash Iphone Fitc 2010

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Flash Iphone Fitc 2010

Building High Performance iPhone Applications with

Flash CS5

Mike ChambersPrincipal Product ManagerDeveloper RelationsFlash Platform

Page 2: Flash Iphone Fitc 2010

Adobe Flash CS5 will include support for packaging stand-alone apps for the Apple iPhone

Flash Pro CS5

Page 3: Flash Iphone Fitc 2010

Smartphone enabled

Multitouch, accelerometer, screen orientation

Optimized memory, power, hardware acceleration

RAW Microphone Access

Global Error Handler

Flash Player 10.1

Public Beta on Labs Now!

Announcement #2 : Flash Player 10.1 - Browser, Desktop (via Adobe AIR 2.0), and smart phones

Page 4: Flash Iphone Fitc 2010

New APIs• MultiTouch

• Screen Orientation

• MediaLibrary

• Accelerometer

• Geo-location

• Cut / Copy / Paste

• Native TextInput

• tel:, mailto:, maps:, video:

NEW!

Not necessarily iPhone specific APIs.

Page 5: Flash Iphone Fitc 2010

Flash Player 10.1 will be available across both browsers, desktops and devices. This includes in Adobe AIR 2.0, as well as Flash Player for Palm Pre, Android and Windows Mobile devices.

Page 6: Flash Iphone Fitc 2010

No Flash Player for Safari Mobile on iPhone

Basically, we need apple’s help with this. However, as the Palm Pre and Android Flash Player demos have shown, Flash content can perform well on this class of devices.

Page 7: Flash Iphone Fitc 2010

Already a number of iphone applications created with Flash on the itunes app store.

Page 8: Flash Iphone Fitc 2010

demo

Page 9: Flash Iphone Fitc 2010

How does it work?

Page 10: Flash Iphone Fitc 2010

LLVMLow Level Virtual Machine

Open source compiler infrastructure designed for optimizing programs written in arbitrary programming languages

Capable of generating machine code for various targets including x86 and ARM processors

Used in Alchemy

http://www.llvm.org

Page 11: Flash Iphone Fitc 2010

C

LLVM

x86

C++

SWF / ABC

ARM

Java

...

PPC

Spark

...

Compilation / OptimizationFront End Back End

Adobe built a SWF / ABC front-end for LLVM

Page 12: Flash Iphone Fitc 2010

SWF

app.xml

app:/resources

PFI

Certificate

.ipa

Flash Pro CS5

PublishDevelop Package Deploy

Publishing workflow

Page 13: Flash Iphone Fitc 2010

AOT Compilation

• Ahead of Time (AOT) compilation

• iPhone License Restricts interpreters

• Cant JIT code

• No Interpreter

• Compiles ABC bytecode from SWF

• LLVM Base compile toolchain

Page 14: Flash Iphone Fitc 2010

SWF

app.xml

resources

AOT

.plist gen

.app

info.plist

app:/resources

“swf.exe”

Certificate

.ipaSigned .app

Sign / Package

PFI

ADT input and output

Page 15: Flash Iphone Fitc 2010

AS3

AS3

SWC

timeline

assets

Flash CS5

ABC1

ABC2

timeline

assets

.swf

ABC Compiler

LLVM Codegen

AOT

LLVM Bytecode

timeline

assets

swf.exe

Flash Runtime Library

ABC1 SHA1

ABC1 SHA2

swf

ARM

Flash Runtime Library

AOT Compilation

AOT Compilation. Notice that there is a library form of the Flash Player runtime included in the application. ABC bytecode is compiled to native arm code.

Page 16: Flash Iphone Fitc 2010

Developing Content

Page 17: Flash Iphone Fitc 2010

APIs

Flash Player 10.1 Adobe AIR 2.0

APIs set available is based on Flash Player 10.1 and Adobe AIR 2.0

Page 18: Flash Iphone Fitc 2010

Flash CS5

.ipa

iTunes

Device

SWF

Desktop

Test Test and Deploy

Development Workflow

Page 19: Flash Iphone Fitc 2010

In order to deploy an ipa / app to the device, you must be part of the Apple developer program, and have the appropriate certificates and provisioning profiles setup.

Page 20: Flash Iphone Fitc 2010

Demo

Page 21: Flash Iphone Fitc 2010

Performance Tips and Tricks

• Most will improve performance / memory usage on desktop

• General ActionScript performance techniques also apply to device

Page 22: Flash Iphone Fitc 2010

!=

iPhone development is mobile development. It has a significantly slower processor that what you are used to on your desktop.

Page 23: Flash Iphone Fitc 2010

!=

Screen Size UI Interactions Performance

This affects Screen Size, UI Interactions and most importantly performance. We will focus on performance.

Page 24: Flash Iphone Fitc 2010

Test and Profile Code

Profile External Application

Profile external SWFs from Flash / Flex Builder. Profile Prospective > Profile > Profile External Application

Page 25: Flash Iphone Fitc 2010

AS3 Performance Testing Harness

bit.ly/as3performanceGrant Skinner

Make sure to test optimization results.

Page 26: Flash Iphone Fitc 2010

Debug > Begin Remote Debug Session > ActionScript 3

Remote Device Debugging from Flash CS5

Page 27: Flash Iphone Fitc 2010

Mac Only

Page 28: Flash Iphone Fitc 2010

Instruments

Mac Only

Page 29: Flash Iphone Fitc 2010

Shark

Mac Only

Page 31: Flash Iphone Fitc 2010

Rendering

• Hardware Composition is available for DisplayObjects

• Can greatly improve performance

• Uses OpenGL ES-1

• APIs will be available on additional platforms

Page 32: Flash Iphone Fitc 2010
Page 33: Flash Iphone Fitc 2010

Software Rendering

Software rendering renders entire display (including composition) via software. CPU intensive.

Page 34: Flash Iphone Fitc 2010

GPU Compositing

CPU Composition. Individual elements rendered via software, but are then composited / put together in hardware. Can be very fast.

Page 35: Flash Iphone Fitc 2010

GPU Pipeline with cached surfacesFlash renderer (RAM)

Textures (GPU)

GPU Pipeline with Cached Surfaces

Individual elements can be cached and then composited in hardware.

Page 36: Flash Iphone Fitc 2010

Using GPU Composition

• cacheAsBitmap:Boolean

• cacheAsBitmapMatrix:Matrix

• Using 2.5D Apis

• Such as setting z property

NEW!

cacheAsSurface new API. Transforms on a display object does not cause it to be re-rendered via software.

Page 37: Flash Iphone Fitc 2010
Page 38: Flash Iphone Fitc 2010

cacheAsBitmap

cacheAsBitmap cacheAsBitmapMatrix

• Geometric Translations• Changes in X / Y• Tweens

• Geometric Dilation• Rotation• Scaling

Page 39: Flash Iphone Fitc 2010

• Can set cacheAsBitmap in IDE or Code

• Have to subclass DisplayObject to set cacheAsBitmapMatrix (can’t set in IDE)

• SGF : CachedSprite.as

Page 40: Flash Iphone Fitc 2010

Debugging HWA

CTTextureUploadTracking

Page 41: Flash Iphone Fitc 2010
Page 42: Flash Iphone Fitc 2010

Use GPU!!!

• Hardware accelerate everything

• Except for items that re-draw often

• Break up display objects to minimize re-draws

• Don’t cache clips that have children that move / change

• Keep display list shallow

Page 43: Flash Iphone Fitc 2010

Prevent Redraws

• Items moving over non-cached DisplayObjects

• Visual content changes

• Drawing API

• Children moving / changing

• ColorTransformations

• Removing from display list

Page 44: Flash Iphone Fitc 2010

Minimize Instance Allocations

• Reuse object instances

• Memory Allocation very expensive

• Reduces Garbage collection

• Reduces CPU / Initialization costs

Page 45: Flash Iphone Fitc 2010
Page 46: Flash Iphone Fitc 2010
Page 47: Flash Iphone Fitc 2010
Page 48: Flash Iphone Fitc 2010
Page 49: Flash Iphone Fitc 2010
Page 50: Flash Iphone Fitc 2010

Object Pooling

• Reuses Object instances

• Avoid constant initialization and garbage collection

• Particularly useful for DisplayObjects composited by GPU

Page 51: Flash Iphone Fitc 2010

Pooling DisplayObjects

• Re-use cached DisplayObjects

• Keep on stage (off screen)

• Can give major performance boosts

• PewPew

Page 52: Flash Iphone Fitc 2010

GameObjectPool.as

SoundManager.as

Page 53: Flash Iphone Fitc 2010

Time Management

• In General, ENTER_FRAME performs better than Timer

• Use single listener, and then dispatch

• SGF : TickManager.as

Page 54: Flash Iphone Fitc 2010

Event Dispatching

• Can be very expensive

• Requires several memory allocations

• Consider using callbacks in CPU intensive areas

• Consider Reusing Event instances

Page 55: Flash Iphone Fitc 2010
Page 56: Flash Iphone Fitc 2010

Event Propagation

• Can be very expensive, especially on display list instances.

• Event.stopPropagation();

• Event.stopImmediatePropagation();

Page 57: Flash Iphone Fitc 2010
Page 58: Flash Iphone Fitc 2010

Mouse / Touch Events

• Can disable with

• mouseEnabled

• mouseChildren

• Don’t use MouseEvent.MOUSE_MOVE

• Check Mouse position at interval

• Example

Page 59: Flash Iphone Fitc 2010

Can listen for MOUSE_UP MOUSE_DOWN events to toggle

Page 60: Flash Iphone Fitc 2010

Thibault Imbert

Optimizing Mobile Content for the Adobe Flash Platform

bytearray.org/?p=1363

Page 61: Flash Iphone Fitc 2010

Mike Chambers

[email protected]

www.mikechambers.comtwitter.com/mesh

All links at : http://www.mikechambers.com/blog/2009/10/17/resources-for-learning-more-about-flash-to-iphone/

Page 62: Flash Iphone Fitc 2010

http://www.flickr.com/photos/bbaunach/1055569383/Baby Crying

Photo credit.