AOT Compilation Optimization

This post will talk about a small optimization that developers can do within their code to reduce the amount of time taken for AOT compilation of their application I would recommend developers to read this post to understand what is meant by AOT compilation.

One of the intermediate steps in AOT compilation requires LLVM to process the LLVM bytecode and to optimized LLVM bytecode. In case one of your function has a lot of actionscript code (~30000 lines) then the corresponding LLVM code is around 1.3 million lines. LLVM is known to perform badly (compilation time) on large functions. As a recommendation, actionscript developers should break down on large function into smaller functions to reduce the AOT compilation time. They need not change any code, just break a large function into many smaller functions to reduce AOT compilation time significantly.

Supporting languages with unicode characters

Flash provides great support for rendering text with a great set of API. Flash also allows developers to render text in various languages so that developers can build localized applications. Flash allows developers to render text in languages like Japanese or Chinese whose character set contains unicode characters. There is a small subtlety that developers need to be aware of when targeting localized versions of their applications on iOS.

Continue reading…

Embedding assets in your mobile application

Traditionally flash developers have been more focused on the browser to deliver their content. While delivering the content through the browser, developers generally embedded their assets within the root swf. Honestly, there is no other way except loading these images off their servers but this could have resulted in a lag whilst the content was running

With AIR however, developers need to make certain changes to their applications to make them more apt for deployment on mobile devices. With AIR, developers get access to the file system and the assets for their content can be accessed off the file system instead of being embedded within the root swf. Assets for the application should be packaged along with the application and then should be accessed on demand by simply loading them using a Loader.

Continue reading…

Exception Support in iOS Native Extensions

Up to AIR 3.3, it was not possible to handle exceptions inside the Cocoatouch Static Library in an ANE. AIR 3.4 onwards, it is possible to use the Objective C @try-@catch-@finally syntax inside one’s native library. The native developer can now also use C++ try-catch blocks successfully. The only thing to keep in mind while using exceptions in native code on iOS is that the exceptions should be handled inside the ANE itself. The AIR runtime will not catch the exceptions thrown by extensions.

You can download the latest AIR SDK with support for handling exceptions in a Native Extension  from  http://labs.adobe.com/technologies/flashplatformruntimes/

Installing/Uninstalling iOS AIR applications on iOS devices using ADT

With AIR 3.4, it would be possible to use ADT to install AIR applications on the iOS devices (i.e iPod, iPhone and iPad) from both desktop operating systems (i.e MAC and Windows). Prior to AIR3.4,  developers have to use iTunes, XCode etc to install the iOS AIR applications and that was a cumbersome process.

This new capability will make the install/uninstall process a lot more seamless. To install/uninstall an iOS AIR application on the device, simply follow the following instructions:

First of all, we need to know the number of devices, along with their device-id’s, which are attached to the machine. This can be done using the following ADT command.

adt -devices -platform ios
List of attached devices:
Handle	DeviceClass	DeviceUUID					DeviceName
   22	iPhone  	24d9b6fd...................a861117a7866510	myiPhone
   23	iPod    	24d9b6fd...................a861117a7866510	myIpod

The handle in the output of the above command is the device-id to be used to install/uninstall application in that particular device.

Once, we have the information about the devices attached to the machine we can use the following command to install the application on the device.

adt -installApp PLATFORM-OPTION PLATFORM-SDK-OPTION? DEVICE-OPTION? -package 
eg. adt -installApp -platform ios -device  <device-id>  -package /path/to/my.ipa

In case only one device is attached, there is no need to specify -device argument.

adt -installApp -platform ios -package /path/to/my.ipa

Similarly to uninstall the application from the ios device, use the following command line

adt -uninstallApp   PLATFORM-OPTION PLATFORM-SDK-OPTION? DEVICE-OPTION? -appid 
eg. adt -uninstallApp -platform ios -device <device-id>   -appid com.adobe.myapp

In case only one device is attached, there is no need to specify -device argument.

adt -uninstallApp -platform ios -appid com.adobe.myapp

NOTE:
<app-id> is specified in the application descriptor file (app.xml) within the <id> tag . If you create your project using Flash Builder, by default it would be the same as your app name.