Setting Android and BlackBerry Playbook icons in Adobe AIR app
UPDATE: the most recent SDK has supposedly resolved many of the issues addressed in this article. You can learn more about the new BlackBerry Tablet OS SDK here.
If you are targetting both the Android and BlackBerry platforms, by way of Adobe AIR and Flash Builder’s new Burrito features, be prepared for some frustrating times (which isn’t surprising given the ‘beta’ tag assigned to this technology).
The latest snag I ran into dealt with icons. Sure, Android icons were simple enough. Just uncomment the icons node in the app.xml file. The default BlackBerry app icon was not so simple for a number of reasons.
Problem #1: there is a lot of conflicting information on whether to use a 90×90 dimension png or a 72×72. You’ll find most examples use 90×90, but there’s been recent references to 72×72. The latter definitely looks the part when viewing it on the simulator.
Notice that the 72×72 (to the left) has a drop shadow below it. The 90×90, on the other hand does not. This, to me, strongly suggests that the target size of icons should be 72×72.
Problem #2: if you have all of the Android icons setup and defined in the app.xml, you will find that the smallest one is used for the BlackBerry app icon. More research pointed to creating a ‘blackberry-tablet-icon.png’ image that sits in the same directory as your app. Turns out that this only works if you comment out the icons node in the app.xml file. This is unacceptable as I’m not going to comment and uncomment those values each time I switch between the Android and BlackBerry platforms.
The solution I came up with for this problem is to simply reorder the icon asset nodes so the one you want to use for the BlackBerry is listed first (example below).
Notice that the 72×72 icon is listed first as I want BlackBerry to use this for my app on the Playbook.
Hopefully this is just a temporary bug and something that can be cleared up later as it is far from intuitive and leaves you in the uncomfortable position of not knowing with 100% certainty that it will actually work in the end.