You can configure the build to add your EUM account information so that you can automatically upload your ProGuard or DexGuard mapping files for crash reports with each build.

This is the recommended way of managing these types of mapping files, although manual modes are available for uploading mapping files. If you do not use ProGuard or DexGuard to obfuscate your files you can ignore this section. See Configure ProGuard to Prevent Obfuscation and Class Removal.

DexGuard Limitation

DexGuard mapping files must be in the default location. This means that your DexGuard configurations should not specify --printMapping, which changes where to print the mapping file.

Upload to the SaaS EUM Server

If you are using the SaaS EUM Server, you just need to provide your account name and license key to automate uploading as shown below.

adeum {
	url COLLECTOR_URL // For SaaS it's optional to set your region's endpoint. Default is https://api.eum-appdynamics.com. See https://docs.appdynamics.com/display/PAA/SaaS+Domains+and+IP+Ranges for a list of regions. For on-prem it is the public collector URL.
   account { 
		licenseKey EUM_LICENSE_KEY name EUM_ACCOUNT_NAME 
		}
	proguardMappingFileUpload { 
		failBuildOnUploadFailure false enabled true // This specifies whether the entire build should fail if mapping file upload fails. Enabled refers to whether auto-uploading of mapping file is enabled.
		} 
	excludeClasses = ['android.support.multidex.*', 'okio.**'] // This specifies any classes customers would like to exclude from auto-instrumentation. The notation is standard java package/class specification used in Gradle.
	enabledForDebugBuilds = true // Whether auto-instrumentation is enabled for debug builds, true by default.
	enabledForReleaseBuilds = true // Whether auto-instrumentation is enabled for release builds, true by default.
	webViewCallbackCrashReportingEnabled = false // Auto-instrumentation is enabled for WebChromeClient and WebViewClient
...


// This block specifies how to handle native crashes. By default, this is not enabled.
	nativeCrashHandling {
		if (BUILD_NDKLIB) {
			enabled = true
			symbolUpload { 
				variantLibraryPaths = ["appRelease": "ndkLib/obj/local"] 
			}
		}
	}
}
JAVA

Upload to the On-Premises EUM Server

If you are using an on-premises deployment, in addition to supplying your account name and license, you must also assign the URL to your on-premises EUM Server to the url property as shown:

adeum{  
    // The account information is also needed for on-prem deployments.
    account {
      name "The EUM Account Name from the License screen"
      licenseKey "The EUM License Key from the License screen"
    }
    ...
    // Add this information to point to the on-prem EUM Server.
    url "https://<your-on-prem-eum-server>:7001"
}
TEXT

Modify the Default Upload Behavior

You can also modify the default upload behavior for both on-premises and SaaS deployments. For on-premises deployments, you will need to provide the URL to your on-premises EUM Server with the url property.

The configuration example below sets failBuildOnUploadFailure to true, so that the build will fail if the upload to the URL specified by url is unreachable. The object proguardMappingFileUpload is used for both Proguard and DexGuard mapping files. If you don't want your build to fail because the ProGuard or DexGuard mapping file couldn't be uploaded, do not modify the default setting.

adeum{  
    ...
    // Add this information to point to the on-prem EUM Server.
    url "https://<your-on-prem-eum-server>:7001"
 
   // Add this information if you want to modify upload behavior.
    proguardMappingFileUpload {
      failBuildOnUploadFailure true // If true, will fail build. Defaults to false.
      enabled true //enables automatic uploads.  Defaults to true
    }
}
TEXT

Configure Proguard to Prevent Obfuscation and Class Removal

If you use ProGuard to verify or optimize your code, add the following lines to the ProGuard configuration file proguard-rules.pro under Gradle Scripts to prevent ProGuard from obfuscating or removing classes needed for proper instrumentation.

-keep class com.appdynamics.eumagent.runtime.DontObfuscate
-keep @com.appdynamics.eumagent.runtime.DontObfuscate class * { *; }
TEXT