This topic provides a list of new capabilities and known issues at 10.2.6.
Support for OAuth2
ArcGIS Runtime SDK for Qt 10.2.6 adds support for OAuth 2.0 authentication. For general information about OAuth 2.0 in ArcGIS and how to use it in different scenarios, see ArcGIS Online Authentication.
Using Qt WebEngine in your Windows app
If you use Qt WebEngine in your Windows app, your deployed app may encounter a crash due to the Qt bug 42083 titled WebEngine deployment issue on Windows. Please see the bug report for a discussion and possible work-around for this issue.
Using multiple Qt versions on Mac OS X
It is possible to install multiple versions of the Qt Company’s Qt Framework (i.e. multiple Qt kits) on the same development machine. On Mac OS X, installing and using both Qt 5.4.1 and Qt 5.5 with the ArcGIS Runtime SDK for Qt can lean to compatibility issues.
The difficulty can occur after running the ArcGIS Runtime SDK post-installer for both kits, because both kits will link to the same libEsriRuntimeQt.dylib. For example, you install Qt 5.4.1 and run the post-installer. You then install Qt 5.5 and run the post-installer. Now you can build and run an app for Qt 5.5, but building and running an app with Qt 5.4.1 will not work because as it is linking to a library that is configured to run with Qt 5.5. As a result an error will occur similar to the following:
QObject: Cannot create children for a parent that is in a different thread. (Parent is QmlArcGISTiledMapServiceLayer(0x7fa0f311c5d0), parent's thread is QThread(0x7fa0f1c1f350), current thread is QThread(0x7fa0f1d33560)
You can re-enable development for a Qt kit by re-running the post installer and selecting the folders containing the version of Qt you would like to use.
Migrating existing apps
To use projects built with version 10.2.5, some minor changes are required to source and project files.
ANGLE and DirectX on Windows
Windows only: Starting with 10.2.6, ArcGIS Runtime SDK for Qt for Windows builds use ANGLE instead of OpenGL to enable DirectX on Windows. Because the 10.2.6 SDK libraries for Windows don't include OpenGL libraries, your 10.2.5 app will crash when Qt attempts to access OpenGL libraries by default rather than ANGLE libraries. To tell Qt to use ANGLE by default, add this code at the beginning of your app. To see exactly where to place this code, see the main.cpp source file in the Runtime SDK C++ and QML template applications.
// Force usage of OpenGL ES through ANGLE on Windows
You need a Qt Prebuilt Component (a kit) that includes ANGLE support to develop 10.2.6 apps on Windows. Please refer to the System requirements topic for details.
Changes to prf file names in project files
The post installer copies Qt project feature (*.prf) files into the Qt kits on your development machine. Prior to ArcGIS Runtime 10.2.6 for Qt, these files had the same name from release to release. To support side-by-side installations in the future, the file names now include version numbers.
In existing QML Qt project files, you will see a line that looks like this.
CONFIG += c++11 arcgis_runtime_qml
CONFIG += c++11 arcgis_runtime_qml10_2_6
Side-by-side installation with 10.2.5 is not supported
Version 10.2.5 and any related Beta release of the ArcGIS Runtime SDK for Qt may not be installed with any later release on the same machine. This means that you may not install version 10.2.6 if 10.2.5 is on the same machine. We plan to support side-by-side installations in upcoming releases.
Important issues addressed in this release
- Fixed an issue preventing connections to ArcGIS 10.3 servers.
- Improved connection speed to some secure services.
- Fixed a crash that occurred when a secure token expired.
- Fixed issues relating to setting credentials on various layers and tasks.
- Fixed an issue setting of a definition expression on a feature layer.
- Fixed an issue with getting distinct values from a feature layer.
- Fixed an issue honoring default values of a layer in a local sync geodatabase.
- Enabled editing of standalone tables in a feature service.
Developing Android QML apps is not supported on Red Hat Enterprise Linux 6.x.
If you are using Red Hat Enterprise Linux 6.x and the Esri-provided build of the Qt SDK, you must copy two folders from the Qt SDK installation folder to the folder containing the executable before running your app for the first time from Qt Creator. The folders are the plugins/platform folder and the qml folder. This is covered in the Guide topic Install and set up on Linux.
Due to a missing attribute in Qt Creator 2.7.2 (which is required for Red Hat Enterprise Linux 6.x) an edit must be made to the wizard template XML. Browse to the templates location in two folders, ~/.config/QtProject/qtcreator/templates/wizards/ArcGISRuntimeQmlTemplate and ~/.config/QtProject/qtcreator/templates/wizards/ArcGISRuntimeQtTemplate. In both folders, modify the file wizard.xml to delete the class="qmakeproject" attribute from the wizard tag in the XML. This attribute is supported in Qt Creator 3 but not present in Qt Creator 2.7.2. This is covered in the Guide topic Add a map to your app.
Positioning support via geoclue is unavailable in the Esri-provided Qt SDK RHEL 6. If you need this functionality you can build the Qt SDK yourself from source with this option enabled.
Users may encounter the following issue when building for Android: SDK Build Tools revision (19.0.3) is too low for project 'projectname'. This is because regardless of the target API version (eg. 17), Qt Creator requires the Android SDK Build Tools Rev 19.1
Interoperability between identical object instances from both the C++ and QML APIs is not supported. For example, passing a Point geometry object from QML to C++ and performing geometry operations on that Point in C++ is not supported.
The Qt QNetworkConfigurationManager property isOnline does not work on Linux platforms.
There are a number of C++ classes (such as Geoprocessing) that have not yet been exposed to the QML API, but are intended for release in the future.
When automatically completing code in the code editor, sometimes Qt Creator will offer the names of signals that are not members of the class or component you are working with. When in doubt, refer to the Runtime SDK for Qt API documentation to see the signals associated with various classes and components.
Putting a MouseArea over the Map prevents propagation of mouse events to the area of the Map under the MouseArea.
There are some issues to watch for when working with the Android app template in Qt Creator on Windows. Due to a Qt Company bug relating to when there are spaces in the file path referenced in the Android .prf file, we added logic to the Android deployment process to copy the .so file into the users output build folder. This is the temporary solution for Android until this is fixed by the Qt Company. However, the process can still fail if the output folder has a space in it.
For WMSDynamicMapServiceLayer, only the URL property is exposed in QML. This allows you to display a WMS layer, but no other properties are available in this release.
For ArcGISImageServiceLayer, only the URL property is exposed in QML. This allows you to display an Image Service, but no other properties or methods are available in this release.
In some components, a JSON property is exposed. Only the setter works. The getter does not work. This is due to the C++ API not exposing a toJson method. In instances where JSON cannot be retrieved from the component, consult the C++ API reference for the corresponding QML API class to determine whether the toJson method is exposed.
The DynamicLayerInfo for individual layers in a service are not retrieved from the service. For example, attempting to obtain the DrawingInfo or TimeOptions (through dynamicLayerInfos) from an ArcGISDynamicMapServiceLayer will return null objects.
Setting credentials in identity manager on iOS fails silently unless ignoreSslErrors is true.
When using PortalDownloadItemData and specifying a responseFilename, the contents of the file are not always available when the status changes to Enums.PortalRequestStatusCompleted. This can happen when attempting to read file contents when handing the statusChanged signal (using FileFolder.readJsonFile. The workaround is to not to write a file via the API and instead use the responseText property then write to the output file.
The QML type Map emits a signal called extentChanged when the extent of the map is changed. The signal returns no parameters. This signal does not appear in the QML API doc.