Upgrading to 10.1 beta 1

This document lists the major changes that affect applications that are upgrading from the 10.0 Gold release to the 10.1 beta 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.1 beta 1 Release Notes.

When you upgrade to version 10.1 of the SDK, you should remove all previous versions of the Native SDK before upgrading to the latest version.

Deprecated libraries and functions

Pickers

The libfilepicker library has been replaced by the libbbcascadespickers library. If you are using the  libfilepicker  library, you must use the  libbbcascadespickers library instead. The following functions have been removed:

  • The defaultSaveFileName property has been removed. Use defaultSaveFileNames instead.

  • The defaultSaveFileName() function has been removed. Use defaultSaveFileNames() instead.

  • The setDefaultSaveFileName() function has been removed. Use setDefaultSaveFileNames() instead.

  • The ViewMode class has been removed. Use FilePickerViewMode instead.

Locale

The libbbsystemlocale library has been replaced by the equivalent APIs in the libbbsystem library. If you are using the libbbsystemlocale library to query and listen for changes to the system locale, you must use the libbbsystem library instead. The following changes are required:

  • Replace links to libbbsystemlocale in makefiles with libbbsystem. For example, HelloWorld.pro should now have the following line:

    LIBS += -lbbsystem
  • Replace #include <bb/system/locale/Notifier> with the following:

    #include <bb/system/LocaleHandler>
  • Replace references to bb::system::locale::Notifier() with bb::system::LocaleHandler().

  • Replace references to the bb::system::locale::Type enumeration with the bb::system::LocaleType::Type enumeration as follows:

    • Replace references to bb::system::locale::Messages with bb::system::LocaleType::Messages.

    • Replace references to bb::system::locale::Region with bb::system::LocaleType::Region.

  • Replace each call to the bb::system::locale:getCurrent() function with a call to the locale() function on a bb::system::LocaleHandler object as follows:

    bb::system::LocaleHandler lh(bb::system::localType::Region);
    QLocale locale = lh.locale();

NFC

The following deprecated functions have been removed from the libnfc.so.1 library:

  • The nfc_get_bluetooth_handover_data() function has been removed. Use nfc_get_handover_bluetooth_mac_address() , nfc_get_handover_bluetooth_device_name() , and nfc_get_handover_bluetooth_device_class() functions instead, after getting nfc_ndef_message_t from nfc_target_t.

  • The nfc_get_handover_transport () function has been removed. Use the nfc_get_handover_transport_type() function instead, after getting nfc_ndef_message_t from nfc_target_t.

Releasing your app

The following changes may be required to build your app for release:

  • If you have developed an app using an SDK version prior to the Gold version, your app might not build in the Device-Release build configuration. Add the Q_DECL_EXPORT macro to the int main() line in your main.cpp file:

    Q_DECL_EXPORT int main(int argc, char **argv) 

    This code has been added to the templates in the Gold release of the Native SDK.

  • If you still can't build your app in the Device-Release build configuration, make sure that you aren't writing to the assets directory. The assets directory is read-only in release builds. If you want to change something in the assets directory, you must copy it to the data folder first. For more information about the file system, see File system access.

Changes to UI guidelines

There are new guidelines for using the ActivityIndicator. Many applications are showing the activity indicator as soon as the page content starts to load. This practice results in some cases where the activity indicator is shown even if the loading time is very short, which adds some unnecessary screen flicker.

You should minimize the display of activity indicators as much as possible. When the application is loading local content, it should not need to use an ActivityIndicator. If the local content still takes too long to load, you should try to find the source and optimize the loading of that content instead of showing an ActivityIndicator. If you cannot reduce the load time of your app, consider using a delay of two seconds before displaying an ActivityIndicator.

The following code sample demonstrates the recommended technique:

Page {
    Container {
        id: root
        layout: DockLayout {

        }
        Button {
            onClicked: {
                root.onDoneLoading()
            }
        }
        ActivityIndicator {
            id: indicator
            preferredHeight: 500
            horizontalAlignment: HorizontalAlignment.Center
            verticalAlignment: VerticalAlignment.Center
            running: false
        }
        ImageView { // Place holder for the real app content
            id: content
            visible: false
            imageSource: "asset:///images/app_content.png"
        }
        onCreationCompleted: {
            timer.start(2000)
        }
        function onDoneLoading() {
            timer.stop()
            content.visible = true
        }

    }
    attachedObjects: [
        QTimer {
            id: timer
            singleShot: true
            onTimeout: {
                indicator.running = true
            }

        }
    ]
}

Last modified: 2015-07-24



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

comments powered by Disqus