Skip To Content

License your app

In this topic

With a developer account, you can download and install an ArcGIS Runtime SDK and immediately have access to all of the functionality in the API for development and testing purposes. However, any map in your app will be watermarked (as pictured below) and debug messages will appear saying that your app is licensed for developer use only.

Runtime watermark

To deploy an app, you must license it at either the Basic or Standard level. When deploying Runtime technology, costs are incurred only at the Standard level. Usage of ArcGIS Online services may also incur costs. For details, see Terms of Use - FAQ and Plans. For an overview of the current ArcGIS Runtime licensing model, see Licensing your Runtime app.

License your app for deployment by adding a few lines of code, as described in the following sections. After this is done, the watermark and debug messages will no longer display and your app is ready to be deployed.

The following table shows which functionality will work for each license level:

License levelAvailable functionality

Developer (development and testing only)

All functionality (watermarks and debug messages will be generated)


All functionality except:

  • Local locators (geocoding)
  • Local routing
  • Local editing (such as geodatabase and geopackage editing)
  • Local geodatabase sync operations with an upload


All functionality

License your app at the Basic level

  1. Read the end user license agreement.
  2. Go to and sign into your ArcGIS for Developers account.

    If you do not have access to an ArcGIS for Developers account then you can obtain a client ID by contacting the Esri office that serves you. If you're in the United States, call Esri at 1-800-447-9778. Then skip to Step 5.

  3. Once you're logged in, the Applications section displays. If you haven’t already done so, register your app by clicking the Register New Application button. On the page that displays, complete the fields, then click Register New Application.

    In the page that displays, a client ID appears for your app.

  4. Copy the client ID.
  5. Use the following code to set the client ID in your app in a location in your project that comes before any ArcGIS Runtime functionality is used:


Your app is now licensed at the Basic level for deployment.

License your app at the Standard level

You can license your app at the Standard level in one of two ways:

Use ArcGIS Online or Portal for ArcGIS to license your app

Users of your app can unlock its Standard level functionality for up to 30 days by authenticating with their organizational account on ArcGIS Online or with their Portal for ArcGIS. The app will then work in a disconnected mode for up to 30 days. Follow these steps to license your app this way:

  1. Obtain and set the client ID for your app by following all of the Basic level licensing steps.
  2. Allow the app user to authenticate with ArcGIS Online or Portal for ArcGIS. You must do this before any Standard level ArcGIS Runtime functionality is used. As part of the process, save the license information in preparation for your app being used in an offline environment for up to 30 days. This is achieved as follows:

       * Sets up a sign in UI that allows the user to sign in to a portal via OAuth. OAuth is the recommended authentication
       * method to sign in to a portal. After successful sign in the obtained UserCredentials are used to set the license
       * level to standard by retrieving a LicenseInfo object from an authenticated Portal instance (see
       * setStandardLicenseWithLicenseInfo() method).
      private void signInWithOAuth() {
        mOAuthView = new OAuthView(this, PORTAL_URL, CLIENT_ID, OAUTH_EXPIRATION_NEVER,
            new CallbackListener<UserCredentials>() {
              public void onError(Throwable e) {
                MessageDialogFragment.showMessage(getString(R.string.oauth_login_failed), getFragmentManager());
              public void onCallback(UserCredentials credentials) {
                if (credentials != null) {
                } else {
                  MessageDialogFragment.showMessage(getString(R.string.oauth_login_failed), getFragmentManager());
       * This method attempts to set the license level of the application to LicenseLevel.Standard. Standard license level
       * is set by retrieving a LicenseInfo object from an authenticated Portal instance. The authenticated Portal instance
       * is created with the UserCredentials obtained from the previous OAuth sign in step.
      private void setStandardLicenseWithLicenseInfo(UserCredentials credentials) {
        Portal portal = new Portal(PORTAL_URL, credentials);
        PortalInfo portalInfo = null;
        try {
          portalInfo = portal.fetchPortalInfo();
        } catch (Exception e) {
          MessageDialogFragment.showMessage(getString(R.string.standard_license_failed), getFragmentManager());
        LicenseInfo licenseInfo = portalInfo.getLicenseInfo();
        LicenseResult licenseResult = ArcGISRuntime.License.setLicense(licenseInfo);
        LicenseLevel licenseLevel = ArcGISRuntime.License.getLicenseLevel();
        if (licenseResult == LicenseResult.VALID && licenseLevel == LicenseLevel.STANDARD) {
          MessageDialogFragment.showMessage(getString(R.string.standard_license_succeeded), getFragmentManager());
        } else {
          MessageDialogFragment.showMessage(getString(R.string.standard_license_failed), getFragmentManager());

  3. If you saved the license information on local storage, your app can be started in an offline environment. You need to license your app with the following code:

    // set the client ID
    // Add code here to fetch the saved license information from local storage
    String loadedString = "string fetched from local storage”;
    // Create a LicenseInfo object from the JSON string
    LicenseInfo licenseInfo = LicenseInfo.fromJson(loadedString);
    // Apply the license
    // The applicaton is now licensed at Standard level

  4. The saved license information will allow your app to be used offline for a period of 30 days, after which the license information will expire. The app must reconnect to ArcGIS Online or Portal for ArcGIS for new license information to be obtained and a new 30 day period to start. If an app attempts to use expired license information, it will only function with Basic level functionality.

Your app is now licensed for deployment with Standard functionality.

Use a license code to license your app

  1. Obtain and set the client ID for your app by following all of the Basic level licensing steps.
  2. Obtain a license code by contacting the Esri office that serves you. You can also obtain a client ID from this Esri office if you don't have access to an ArcGIS for Developers account. If you're in the United States, call Esri at 1-800-447-9778.
  3. Using the following code sample, set the license code in your app after you set the client ID and before any ArcGIS Runtime functionality is used:

    // set the Client ID first
    // example license code; obtain an actual license code from customer service or your Esri distributor
    String licenseCode = "runtimestandard,101,rux00000,none,XXXXXXX";
    // enable Standard level functionality in your app using your license code

Your app will now function offline or online with Standard functionality without any time limitations.

Attribute Esri in your app

You are required to attribute Esri in your app using the following guidelines:

  • About and Credit screens must include the following text: "Mapping API provided by Esri ArcGIS Runtime SDK for Android".
  • Map data—All map data used in an application must be attributed in About and Credit screens using the Copyright Text section of the REST endpoint(s) being used. For example, ESRI_Imagery_World_2D service must use Copyright:© 2013 ESRI, i-cubed, GeoEye.
  • Esri logo—If your application uses data served by Esri through ArcGIS Online, you must display a logo on the map. For examples of such data, see this ArcGIS Online page.