Version 100.1.0 of ArcGIS Runtime SDK for Qt, also known as Update1, is the first update to version 100.0.
This topic describes what's new and changed in this release and provides a list of known issues. See Related Topics at the end of this topic for release notes for previous versions.
Due to a revamped architecture and improved API, changes are required to use projects that were built with version 10.2.6.
The following changes and enhancements have been added to the SDK to further enhance the developer experience and create a more Qt-like development environment.
New SDK IDE integration process
Previous versions of ArcGIS Runtime SDK for Qt made use of .prf files for setting up the various qmake variables, build options, and link options. These files were directly copied into the mkspecs/features folder of your Qt installation. In addition, QML plugins were directly copied into the Qt installation's qml folders. The copying was performed by the post installer app that automatically launches after the SDK setup process is complete. These copy steps were required so that Qt could have a reliable way of discovering the ArcGIS Runtime SDK for Qt on the development machine. This worked reliably, but had some drawbacks, such as making support for side by side installation and plugin revisions difficult. Starting with version 100.1, .prf files and QML plugins are no longer copied into the kits. Rather, the .prf files have been converted to pri files, so you can use the include() qmake function to include the ArcGIS Runtime SDK for Qt in your Qt apps. In addition, you should use the addImportPath() function to add the various QML plugins to the application engine's import path. If you create a new 100.1.0 template app, you can see this new workflow. In addition, this process is explained in detail in the Qt best practices topic of the guide.
Migrating from 100.0 to 100.1
Due to the changes in the SDK IDE integration process described in the previous section, there are a few steps that must be done to upgrade from 100.0. The first step is to run the post installer app, which is in the tools folder of the SDK installation. When it runs, the post installer will notify you if 100.0 files are present in your Qt kit, and will offer to remove them for you. It is recommended that you accept this, as it will remove old 100.0 references from your Qt installation. Failing to do this step could result in unexpected issues when trying to use the newer version of the SDK. After this option is accepted, proceed with the rest of the post installer. Once complete, a few changes to your project's .pro and main.cpp file will need to be made. Those changes are described in the Qt best practices topic of the guide.
100.1 supports revisions, meaning that you can install 100.1, and either import 100.1 or 100.0. You do not need to maintain separate installations of 100.0 and 100.1 on your development machine, as you can seamlessly switch between the new version and older versions with only the 100.1 installation. For this reason, it is recommended that when you want to begin migrating your apps from 100.0 to 100.1, to simply uninstall 100.0, install 100.1, and follow the above migration steps. If you must keep concurrent installations of 100.0 and 100.1 on your development machine, the post installer must be re-run each time you want to build your app for each version of the SDK to ensure that the proper version is picked up by Qt.
New Sample Viewer
The sample viewer is redesigned with a new UI that works well on all platforms and devices. It showcases some of the new capabilities of Qt Quick Controls 2 and also features many architectural improvements, which should improve quality and performance.
Android file paths containing spaces
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.
Map view attribution text may show raw HTML text in place of hyperlinks
Instead of seeing hyperlinked text that points to the data providers' websites, the attribution text shows raw HTML defining the hyperlink. This behavior can be seen in the Web Tiled Layer sample.
Maps, layers, and general
- Enabling High DPI (Qt::AA_EnableHighDpiScaling) on Android is causing the MapView to scale up/down on high resolution devices.
- Uninstall of one version of the API only (e.g. C++ or QML) is not currently supported. If you uninstall only one API you may still see QtCreator templates and documentation for this product.
- The uninstaller on macOS may report that some files could not be removed when, in fact, they were removed.
- Installing only the C++ API and not the QML API does not install the Toolkit.
- 3D military symbol text is sometimes clipped on Windows or macOS. They are not clipped in 2D.
API changes since 100.0.0
There have been many additions to the API to support new capabilities. There was also a bit of rearranging. Here are some of those.
- Version 100.1 introduces new internal changes for versioning to help make migrating from one version of ArcGIS Runtime to another easier for the future. While side-by-side installations are supported, you may run into some scenarios where the ArcGIS Runtime QML plugin import statement may not allow for you to import 100.1 when you also have 100.0 installed. This is because the qmlimportscanner can detect the version 100.0 plugin before the 100.1 plugin, causing 100.1 import statements to fail. If you want to migrate to version 100.1, you will need to go into your Qt kit, and navigate to the qml folder. Remove the Esri folder, and this should now be able to import either 100.0 or 100.1 without any further issues. This will only be an issue when version 100.0 is installed side-by-side with another version of ArcGIS Runtime. All future versions of ArcGIS Runtime versions will have a more seamless way of upgrading between releases.
- The signatures of certain signals in the C++ API have been updated to include additional arguments. If you are already connecting to these signals using the newer Qt 5 syntax your code will still compile but you may wish to update the connection to include the additional parameters. If you are connecting using the older SIGNAL/SLOT syntax your code will still compile but the connection will be invalid - you should receive a warning message at run time. In this case, you must update your connection syntax. The affected signals are:
- C++ Model role enums have been moved. Now role enums no longer exist at the global Esri::ArcGISRuntime namespace level, but they are nested inside of their corresponding model class. So, any code referencing these roles may need to be updated to prefix the model class before the enum values.
- The Toolkit's QML plugin path in the SDK setup does not match the GitHub repo. Therefore, when including the Toolkit PRI file (which only needs to be done for iOS with Qt 5.9), the path will need to be changed to reflect the differing folder names.