Upgrading to 10.0 beta 4

This document lists the major changes that affect applications that were built using the 10.0 beta 3 release of the BlackBerry 10 Native SDK. Upward compatible changes are not listed here.

For more information about functionality that is new in this release, see the 10.0 beta 4 Release Notes.

API changes

The following changes affect applications that use certain APIs:

  • Nfc_se_reader_set_technology_types in nfc_se_access.h in the libnfc.so library has been replaced with the following GS MA-compliant APIs:
    • NFC_API nfc_result_t nfc_se_set_uicc_active();
    • NFC_API nfc_result_t nfc_se_get_active_se_type(secure_element_id_type_t *activeSEType);

    The Nfc_se_reader_set_technology_types API remains in the libnfc.so library for upward compatibility. In addition, Universal Integrated Circuit Card (UICC) APIs and functions have changed but these changes are binary-compatible. UICC is the smart card used to securely hold personal data such as payment information. For more information, see UICC Payment API changes.

The following constant was deprecated:

  • AbstractAnimation::RepeatForever was deprecated. A new class, AnimationRepeatCount, contains the constant Forever. This property is exposed to QML using a context object.

API behavior changes

The following API behavior has changed and you might need to change your app to adjust to the new behavior:

Changes to font sizes

If you are using system font sizes, you do not need to make changes to your app. If you are using custom font sizes, you might need to adjust your UI or change your app to use system font sizes. For more information about system fonts, visit Typography.

Changes to list items

The font sizes, height, and divider assets of list items have changed. If you are using standard list items in your app, you do not need to make changes to your app. If you have custom list items, you might need to adapt to the new sizes and assets.

Changes to title bars

Screen showing a blue TitleBar.

The title bar has changed color and is now blue. If you are using the core TitleBar, you do not need to make changes to your app. You can set the branded property to TriBool.True to change the appearance of the title bar to be consistent with BlackBerry UI guidelines. The TriBool class is an enumerated type that you can use to set the branded property. The branded property specifies whether the TitleBar should be blue or not. If the theme is dark, the TitleBar will remain dark. If the theme is bright, the TitleBar can be either blue or bright. However, the blue color is the default for bright themed apps.

The following C++ code will change the appearance of the title bar to blue:


In QML, you can use the branded property to change the appearance of the title bar. For example, this TitleBar will be blue:

    titleBar: TitleBar {
        visibility : Overlay
        title : "This is a page title"
        branded: TriBool.True


You can set the theme by adding <cascadesTheme>dark</cascadesTheme> to your bar-descriptor.xml file.

If you've implemented a custom title bar, you might notice that your UI needs adjustment. If you have standard buttons in your custom title bar, they will stay gray, while your title bar is blue, and they will be slightly misaligned. The assets for the background are two gradient images. One image is horizontal and one image is vertical. Unfortunately, the background property supports only one background image, so you can use one of two approaches. You can merge the two images by hand, create your new asset and then use that. Or you can add two ImageView objects on top of each other, which will potentially introduce a performance degradation.

Changes to dialog boxes

Screen showing a blue SystemDialog.

Dialog boxes are also changing to blue, but you do not need to make any changes to your app unless you need to ensure that your dialog box contrasts sufficiently with your UI. There are no changes to notifications or toasts.

Changes to layout behavior

  • Fill alignment on a child belonging to a StackLayout: 

    Alignment=Fill is now treated the same as a positive spaceQuota

  • Margins between a child and the parent container:

    Margins have been enabled to adjust the spacing between the side of a container and the child object (in a StackLayout and a DockLayout). Previously, margins were only used between children in a StackLayout. You should remove margin values where they don't have any meaning. This will only affect the explicit margins, not the internal margin-hints. 

Momentics IDE changes

If you already have the BlackBerry 10 Native SDK installed, you can install the latest version without uninstalling the previous version. However, you must select the latest version to use.

  1. Start the IDE.
  2. In Windows and Linux, on the Window menu, click Preferences. In Mac OS, on the Momentics menu, click Preferences.
  3. Click QNX.
  4. In the Select SDK dropdown, select the latest SDK. For example, select BlackBerry 10 Native SDK for beta 4. This option is available from the drop-down menu on the toolbar as well.
  5. Click Apply.
  6. Click OK.

If you experience problems upgrading from an older version of the SDK, consider uninstalling the previous version before installing the latest BlackBerry 10 Native SDK. For example, if you receive the error message "QML preview is unavailable ", this might indicate that you are using an older version of the SDK that is not compatible with the current version.

The following changes affect the Momentics IDE. You may be required to rebuild your application, re-apply template changes, or make changes to your .pro file.

  • The lib/qt4/lib/ libraries have been renamed for version 4.8.4. For example, lib/qt4/lib/libQtCore.so.4.8.3 is now lib/qt4/lib/libQtCore.so.4.8.4.

  • The libicuuc.so.46 library has been replaced with the libicuuc.so.49 library. You must use libicuuc.so.49. On the device, both libicuuc.so.46 and libicuuc.so.49 exist. This allows applications that dynamically linked against libicuuc.so.46 to continue to work.

  • BlackBerry mkspecs for Qt have moved from the unsupported directory to the parent directory. You don't have to do anything for your projects to continue to run, but existing projects that specify unsupported/blackberry-armle-qcc and can now use blackberry-armlev7-qcc. New projects will use the new mkspecs by default.

  • When you create a New > BlackBerry Cascades C++ Project, shared libraries are now pre-compiled into one library that is pre-loaded, which helps decrease start-up time. The changes to the project templates only affect applications built using the Device-Release configuration. Applications built using the Device-Debug and Simulator-Debug configurations should not pre-compile their libraries as this can cause issues for debugging. For more information, see Compiling libraries and resources.

UICC Payment API changes

The following changes affect the public UICC Payment APIs in the bps layer. In most cases, the API is still source compatible (for example, adding a const flag or changing from uint32_t to size_t), so you can just rebuild your app.

  • nfc_se_open_logical_channel_direct() has pAID declared as const and uses a different enum type, lengths use size_t.
  • nfc_se_session_open_logical_channel() has pAID declared as const, lengths use size_t.
  • nfc_se_channel_transmit_apdu() has pSendAPDUBuffer declared as const, lengths use size_t.
  • nfc_se_session_open_basic_channel responseLen() uses size_t.
  • nfc_se_session_get_atr -> size_t for atr_max_size and pAtr_size.
  • nfc_se_channel_get_transmit_data –> size_t for bufferSize, which was renamed to bufferLength.

The following functions were removed from nfc_se_access.h in libnfc.so.1:

  • nfc_se_reader_get_service ( std::uint32_t hSEReader, std::uint32_t* phSEService )
  • nfc_se_service_get_state ( std::uint32_t hSEService, secure_element_manager_state_type_t* state )
  • nfc_se_service_init ( std::uint32_t* phSEService, std::uint32_t context )
  • nfc_se_service_shutdown ( std::uint32_t hSEService )

The signatures of the following functions were changed in nfc_se_access.h in libnfc.so.1:

Old C++:

nfc_se_service_get_num_readers (std::uint32_t hSEService, 
                                std::uint32_t* pNumberOfReaders) 

New C++:

nfc_se_service_get_num_readers (std::uint32_t* pNumberOfReaders )

Old C++:

nfc_se_service_get_readers (std::uint32_t hSEService, 
                            std::uint32_t* phReaders, 
                            std::uint32_t* pNumberOfReaders ) 

New C++:

nfc_se_service_get_readers (std::uint32_t* phReaders, 
                            std::uint32_t* pNumberOfReaders ) 

Old C++:

nfc_se_channel_is_basic_channel (std::uint32_t hSEchannel )

New CC++:

nfc_se_channel_is_basic_channel (std::uint32_t hSEchannel, 
                                 bool* isBasicChannel )

Old C++:

nfc_se_channel_is_closed (std::uint32_t hSEChannel )

New C++:

nfc_se_channel_is_closed (std::uint32_t hSEChannel, 
                          bool* isClosed )

Old C++:

nfc_se_reader_is_secure_element_present (std::uint32_t hSEReader )

New C++:

nfc_se_reader_is_secure_element_present (std::uint32_t hSEReader, 
                                         bool* present )

Old C++:

nfc_se_session_is_session_closed (std::uint32_t hSESession )

New C++:

nfc_se_session_is_session_closed (std::uint32_t hSESession, 
                                  bool* isClosed ) 

Last modified: 2015-03-31

Got questions about leaving a comment? Get answers from our Disqus FAQ.

comments powered by Disqus