Apps built with ArcGIS Maps SDK for Qt are self-contained. For example, deploying a Windows app does not add keys to the Windows registry. Deploying apps can be as simple as copying and pasting your app's executable files along with other dependent files to a different machine or device. Likewise, uninstalling can be as simple as deleting the files. The SDK lets you build and deploy self-contained, stand-alone apps or build and deploy capabilities into existing software.
Follow the steps below to ensure you have licensed the capabilities that your app uses and that you understand associated costs.
License the capabilities you included in the app. The License topic describes license levels and costs associated with deployment.
Attribute Esri in your app. For details, see the attribution section in the License topic.
Prepare your app:
For Android, compile your app, and then use the
androiddeployqtdeployment tool provided by the Qt Company to create an Application Package (APK) or Android App Bundle (AAB). If publishing to the Google Play store, consult the Android documentation for a checklist of items to review before publishing.
For iOS, build your Qt project, open the output
.xcodeprojfile in Xcode, and create an
.ipaby archiving your app. Note that apps can be distributed either through an in-house enterprise program or by submitting your app to the App Store.
For macOS, compile your app, and use the Mac deployment tool provided by the Qt Company. This tool bundles the dependencies into an application bundle.
For Linux, compile your app. Place the executable and any associated resources such as packages, data, or client files, inside a folder you intend to use as a deployment folder. You can get details from the article Linux deployment on the Qt Company's website.
For Windows, build your Qt project. , and use the Windows deployment tool provided by the Qt company. This tool creates a deployable folder containing all the dependencies needed to run the app.
For Linux and Windows, if you are using Local Server, use the Local Server Deployment Builder tool that was installed on your development machine with Local Server.
If your application uses Local Server to create local map services and the input map files use third-party fonts, you must make sure those third-party fonts are installed on each client machine where your application will run.
The deployment folder now contains everything you need to deploy your app. To distribute and deploy your app, copy and paste the deployment folder onto each of your end-user's machines or devices. Each deployment folder can be self-contained and consists of the following:
- Your app executable
- Supporting platform and framework libraries required by your app
- Runtime components and libraries
- Supporting files, such as data for local use
Test the app by running it from this location.
Deploying specialized symbols
You may need to deploy specialized symbols, such as military symbol dictionaries, for use with your ArcGIS Runtime app.
You have two options for including these symbols in your deployment.
- The ArcGIS for Defense group hosts the following ArcGIS Online items that contain .stylx files with military symbols. Use the support matrix to find and download the supported stylx file for your version of ArcGIS Maps SDK for .NET. Once downloaded, you can include the files in your app deployment. Logic in your app, of course, would be required to locate and use the included files as needed.
- Add logic to your app that prepares the app for offline use by downloading the files and storing them locally. You can access these resources when your user is online either by programmatically downloading them or accessing them as portal items, reading their contents, and storing them locally. The following code example shows how to access some of the hosted military symbol items.
// Get the ArcGIS Online portal (default if no URL is provided) Portal* portal = new Portal(this); // Get the military symbol items (use their unique item IDs) PortalItem* itemMil2525c = new PortalItem(portal, "ef95f95470db437f80ea764a9d05203b", this); PortalItem* itemMil2525d = new PortalItem(portal, "c78b149a1d52414682c86a5feeb13d30", this); // Asynchronously fetches the data for these items and saves it to a specified filePath. // The signal emitted when fetching data is completed is Item::fetchDataCompleted(bool success) itemMil2525c->fetchData(outMil2525cDataPath); itemMil2525c->fetchData(outMil2525dDataPath);
Deploying to the Apple AppStore using MFi Accessories
The Apple AppStore has guidelines and restrictions for apps that communicate with MFi accessories (for example an external GPS receiver). Apps that use NMEA data need to satisfy the Apple requirements to be accepted in the store. Apps need to declare support via PPID in their submission and the MFi provider needs to list the bundle ID so Apple can cross-reference it. For more information see Apple's MFi Program site.