Digging Deep: Using BlackBerry Theme Studio 6 to Build Themes for BlackBerry 7 – Part 1

Theme Development

BlackBerry® Theme Studio provides a suite of design tools that allow designers and developers to create themes for BlackBerry® smartphones. With BlackBerry Theme Studio v6.0, theme developers were able to target BlackBerry® smartphones running software versions up to and including BlackBerry® 6. As some of you may have heard, developers have made great strides in creating themes for BlackBerry 7 OS devices despite the lack of a BlackBerry Theme Studio release that officially supports these devices. How did they do it? Some BlackBerry theme advocates were able to determine the anatomy of how BlackBerry Theme Builder creates and compiles themes, and then interrupt and modify the process to have it create themes for unreleased device resolutions.

Will Research In Motion (RIM®) let me modify BlackBerry Theme Studio to create themes for OS 7 devices?

Absolutely! Note that the method proposed in this workaround is by no means easy. It will require considerably more effort to get even basic themes working, but it can be used as a means to create themes until an official BlackBerry Theme Studio is released that supports BlackBerry 7 OS devices. Although these steps are being provided, this method of creating themes is essentially unsupported. Theme creation and stability will entirely be the responsibility of the developer; no bugs will be logged against this method of creating themes.

If Liquid Graphics broke theme support, then how can themes be made?

For the most part, the anatomy of a theme has stayed relatively unchanged between OS releases. With the introduction of BlackBerry 7 OS, several screens now use a completely new mechanism to create the UI, known as Liquid Graphics. Because of this large change, some features and functionalities supported in previous OS themes may be unsupported. This would be a limitation of BlackBerryTheme Studio 6.0 not being aware of how themes are expected in BlackBerry 7 OS. For example, both the phone and home screens previously used SVG for layouts and actions; in BlackBerry 7 OS, the phone screens no longer use SVG at all, while the home screen only uses SVG for layout purposes. All animations on the home screen and the layout of the phone screens are handled by Liquid Graphics.

Understanding how BlackBerry Theme Builder works

For the sake of simplicity, I will be referring to the BlackBerry Theme Studio 6.0 installation directory (wherever you may have chosen to install it on your system) as <ThemeStudio>.

Once BlackBerry Theme Builder is launched, it starts off by determining which devices and theme types are supported by reading bundled property files:

1) <ThemeStudio>\resources\devices\device_profiles.properties
This file contains a list of information for all supported BlackBerry smartphone models, including a link to a file which describes the characteristics of each device and a thumbnail view of the device.

2) <ThemeStudio>\resources\devices\blackberry\BB<Model>.properties
One of these files is included for each device model/series supported by BlackBerry Theme Studio. It lets BlackBerry Theme Builder know information about the device, such as display resolution, supported fonts, et cetera.

3) <ThemeStudio>\resources\theme\<ThemeDir>\<Model><ThemeType>.properties
Once BlackBerry Theme Builder reads the list of supported devices (1) and determines their properties (2), the next step is to determine which themes are available for each device. All found theme types will be displayed in the splash screen’s Select Layout Type drop-down. These themes will be based off the .thm file located in the same directory as this file.

After BlackBerry Theme Builder launches, and you make your changes to the theme and export your created masterpiece, BlackBerry Theme Builder does the following:

1) Analyzes the theme for any changes from the base theme (the default theme loaded by BlackBerry Theme Builder before any modifications are made).

2) Any changes found results in certain files being created during the export process by BlackBerry Theme Builder.

  • Layout changes: SVG and associated PME files are created.
  • Image changes/additions: New image files are included.

The more modifications that are made, the more files that will be exported (one image file for each image that is added). The SVG files are used to specify the layout, behavior, and reference the appropriate image files for the various icons, backgrounds, and other UI components.

3) These files are exported to the current user’s Windows® temp directory in a folder named with the following format:
pz_<5-RandomLetters>

Also, a properties file will be exported to the temp directory in the following format:
pz_<5-RandomLetters>.properties

4) BlackBerry Theme Builder then compiles these files into the theme COD file and stores that COD in another folder in the Windows temp directory with the same naming format.

5) BlackBerry Theme Builder then copies the COD to the defined output directory along with the required installation files (JAD, ALX etc) and deletes the two directories created in Step 4 from the file system entirely.

By now you should have a good idea of how BlackBerry Theme Builder figures out which devices should be supported and what happens in the theme export process behind the scenes. This should serve as a good base for the next section where we go into how to actually interrupt the build process for BlackBerry Theme Studio to create themes for devices that are not originally supported. Stay tuned for part 2 of this blog post series!

Got any questions about building BlackBerry themes in the meantime? Let us know in the comments!

About garett

Garett is a member of the Developer Relations team and has been with BlackBerry since 2008. He specializes in app monetization (Payment, Advertising, Analytics SDKs) and Push development. He is one of the individuals involved with the forums (gbeukeboom), Issue Tracker and can be found tweeting from @BlackBerryDev with the ^GB signature.

Join the conversation

Show comments Hide comments
+ -
blog comments powered by Disqus