Really four books in one, each dealing with various aspects and ways of applying Flash to mobile devices, which not surprisingly consists of more than just cell phones. The authors provide a good introduction by reviewing the mobile system landscape, which has one noticeable characteristic: It is highly fractured, with several unusual bottlenecks that constrain software development and wider adoption, as well as innovation.
There are two major reasons for this fracturing: The mobile device manufacturers themselves working to protect product differentiation, and the communications providers, primarily the telephone companies. The authors use the euphemism of ‘walled gardens’ to describe these limitations, but the reality is that they have been around for some time for all sorts of reasons, and are not likely to disappear soon.
Software developers for PCs benefit from a very large set of standards based practices and technical methodologies to develop products for markets that in aggregate make for a reasonably frictionless ecosystem. These do not (yet) exist or cannot be applied to the mobile marketplaces. Flash’s ubiquity can be exploited to help establish and expand a common design approach for specific mobile markets, and this book outlines specifically how this can be done. It is also perhaps the best integrating review of the mobile systems market from a software perspective generally, and exploiting Flash particularly.
As the authors clearly demonstrate, a unified code base cannot exist in this arena. Instead, Flash has to be adapted in various ways to accommodate the many device manufacturers. This book shows how that is done, either with overviews, sample code, or using third party tools that, in many cases, are described in some detail. This has resulted in several Flash ‘flavors’, collectively given the covering name of Flash Lite. All of these use varying subsets of ActionScript2; ActionScript3 is not yet available for mobile devices.
Developing a mobile software product is best done initially with an emulator, of which there are several. All of the major ones are reviewed with details that are most welcome, including screen shots and step by step procedures. Products are then moved to the actual target mobile devices after they work on the emulator, which is the only practical way to validate the design and code. Testing on a device is usually a demonstration of the Heisenberg Uncertainty principal, and the authors provide tips and techniques on how to prepare for and handle problems when in the device’s closed environment.
PC developers seldom have to concern themselves with performance or power issues: Memory is plentiful and cheap, disks are cheaper, processors have more than one core, and power is plentiful. None of these are the case in a mobile device, and careful attention has to be paid to resource management and processor demands. The authors outline ways to reduce draining batteries and exhausting memory, as well as tools to help profile performance to optimize resource utilization.
Testing mobile software is addressed in some detail. Mobile devices, particularly cell phones, can’t have their hoods opened as readily as can be done with regular PCs, resulting in some unusual testing constraints. Test driven development may be a catch phrase for some, but it is a necessity for mobile software development, and the authors outline specific methods to make sure this is done right.
One interesting aspect of mobile device usage is that they typically are upgraded (i.e., replaced), particularly cell phones, at a much smaller rate than PCs are. Thus, creating better user experiences and richer mobile applications will be applicable for small initial market segments, mainly the high end smart phones and their like. Still, increased horsepower for all mobile devices is inexorable. The authors move the Adobe curtain a bit to show what is being developed for Flash 10, particularly as these improvements relate to mobile devices of all kinds. There is a learning curve in learning how to develop mobile software, and some of this experience cannot be carried forward directly, such as trying to use ActionScript2 conventions in an ActionScript3 environment. Knowing about these will help the prepared to be ready when the parade catches up to them.
One last item is using Flash in the iPhone. Apple’s high Not Invented Here mentality officially bans Flash from the iPhone. But there is a way to project Flash content in the iPhone, and the book outlines how it is done. That alone is worth the price of this four in one book.
This book is highly recommended for anyone who wants to be successful in exploiting Flash in a mobile environment. It has specific and detailed here and now information that can be used and applied immediately, outlines development, testing, packaging and deployment processes and procedures, and points to a future, based on the proven Flash ecosystem, that will very likely happen sooner than later.
Example code, including complete projects that can be used as design templates, and additional reference material is available on the book’s website for download, organized in chapters. Additionally, the publisher maintains a forums section on their website for this and other related books.
This is a large technical book with many topics that are covered in varying levels of detail. It is not light reading, and in some places the writing is a bit rough.
Flash on Devices by Elad Elrom, Scott Janousek and Thomas Joos, friendsofEd (an Apress company),ISBN 9781430219040, 713 pages in 15 chapters in four parts. Available online from Amazon and Barnes and Noble, and in eBook form from friendsofEd.