See the following for the list the supported environments for Android, iOS, Xamarin, and Cordova:


Mobile RUM Support

Android Agent

Supported EnvironmentsNameSupported Version(s)
Operating SystemAndroid>= 2.3.3
Architecturearm64-v8a, armeabi, armeabi-v7a, mips, mips64, x86, and x86_64-
Frameworks  Ant-
Gradle>= 0.6.3
Maven3.1.1
Crash ReportersMobile RUM does not officially support 3rd-party crash reporters.N/A

HTTP Libraries

    
HttpURLConnection/HttpsURLConnection-
HttpClient-
OkHttp2.2.0 - 3.9.0
ch.boye.httpclientandroidlib-
retrofit-
retrofit2-
Other HTTP libraries can be added by using the agent SDK. See Customize the Android Instrumentation for more information.-


Android Gradle Plugin VersionMinimum Android Agent Version
0.6.33.8.2.0
0.7.3 - 0.9.23.8.3.0
0.10.0 - 0.12.0

3.9.0.0

1.1.2 - 1.1.3

4.0.3.3

1.3.0 - 1.4.04.0.7
1.5.0 - 2.2.0

4.2.0*

2.3.0 - 3.4.0 (forces Build Tools 25.0.0 or higher)4.2.9
>= 3.4.1>= 20.7.1

Recommendations for Android Agent Versions

  • If your project uses Android Gradle Plugin version < 3.4.1, use Android Agent 20.4.0.

  • If your project uses Android Gradle Plugin version >= 3.4.1, use Android Agent >= 20.7.1.

*Android Agent Plugin versions before 4.2.9 are not compatible with Android Build Tools versions >=24 because of the Java 8 bytecode generated in class files.

iOS Agent

Supported EnvironmentsNameSupported Version(s)
Operating SystemiOS>= 9
ArchitectureApple 32-bit ARM, Apple 64-bit A7-
FrameworkXCode>= 8
Crash ReportersMobile RUM does not officially support 3rd-party crash reporters.N/A

Apple WatchKit Extension Environments

watchOS1
HTTP Libraries
NSURLConnection-
NSURLSession-
Alamofire - Initialize the iOS Agent before initializing Alamofire to ensure that network requests are monitored. If you need to make a network request(s) prior to iOS Agent initialization, see Alamofire Guidelines.-
Other HTTP libraries can be added by using the agent SDK. See Customize the iOS Instrumentation for more information.-

Xamarin Agent

Supported EnvironmentsNameSupported Version(s)
Operating SystemAndroid>= 2.3.3
iOS

>= 9

ArchitectureXamarin.Android Supported CPU Architectures-

Apple 32-bit ARM, Apple 64-bit A7 - See 32/64-bit platform considerations for information regarding the correct architecture for your iOS version.-
Framework.NET - Mono>= 4.8
Crash ReportersMobile RUM does not officially support 3rd-party crash reporters.N/A

Apple WatchKit Extension Environments

Not supported-
HTTP LibrariesN/A - The Xamarin Agent does not support automatic instrumentation for network requests made with any library. You will need to manually instrument HTTP network requests regardless of what library is used.-

Cordova Plugin

Supported EnvironmentsNameSupported Version(s)
Operating SystemAndroid4.4 - 8.1
iOS

>= 9

Architecture

Android: arm64-v8a, armeabi, armeabi-v7a, mips, mips64, x86, and x86_64

-
iOS: Apple 32-bit ARM, Apple 64-bit A7-
FrameworkApache Cordova>= 7
Crash ReportersMobile RUM does not officially support 3rd-party crash reporters.N/A

Apple WatchKit Extension Environments

Not supported-
HTTP Libraries

Android:

  • HttpURLConnection/HttpsURLConnection
  • HttpClient
  • OkHttp
  • ch.boye.httpclientandroidlib
-

iOS:

  • NSURLConnection
  • NSURLSession
-

React Native Agent

Supported EnvironmentsNameSupported Version(s)
Operating SystemAndroid>= 4.1 (with React Native Agent >= 20.10.1)
iOS

>= 11 (with React Native Agent >= 20.10.1)

Architecture

Android: arm64-v8a, armeabi, armeabi-v7a, mips, mips64, x86, and x86_64

-
iOS: Apple 64-bit A7 (with React Native Agent >= 20.10.1)-
FrameworkReact Native

>= 0.60 (with React Native Agent >= 20.10.1)

< 0.60 (with React Native Agent 20.7.0)

Crash ReportersMobile RUM does not officially support 3rd-party crash reporters.N/A

Apple WatchKit Extension Environments

Not supported-
HTTP Libraries

Android:

  • HttpURLConnection/HttpsURLConnection
  • HttpClient
  • OkHttp
  • ch.boye.httpclientandroidlib
-

iOS:

  • NSURLConnection
  • NSURLSession
-

Alamofire Guidelines

If you need to use Alamofire to make a network request(s) prior to initializing the iOS Agent, you can use the following sample code as a guideline for making the necessary changes.

To ensure that Alamofire network requests made after iOS agent initialization will be instrumented, you can initialize a custom instance of Session (the principle class defined in Alamofire 5, renamed from previous Alamofire versions). This will create a new instance of URLSession, which can be instrumented by the iOS Agent. Any Alamofire network requests made prior to the agent initialization and creation of the Session instance cannot be instrumented by the agent.

  • The order of operations in this code is very important. See the inline comments.
  • This code assumes you are initially creating a customized instance of Session (which is common practice). If not, you can eliminate the first usage of customized Session and defer its creation until after the iOS agent initialization.
  • You can test this code by going to https://www.google.com/?q=request%202, which is instrumented because it occurs after the replacement of mySession with instrumentedSession. The other two requests are not instrumented.
import UIKit
import Alamofire
import ADEUMInstrumentation

var mySession:Session?					// customized Session singleton

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
    
	func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
		// Override point for customization after application launch.

		// create customized instance of AF Session
		let myConfiguration = URLSessionConfiguration.af.default
		mySession = Session(configuration: myConfiguration)
		
		let myUrl1 = URL(string: "https://www.google.com/?q=request%201")!
		let urlRequest1 = URLRequest(url: myUrl1)
		
		// the first network request prior to ADEumInstrumentation.initWith will not be instrumented
		mySession?.request(urlRequest1 as URLRequestConvertible).response {
			response in debugPrint(response)
			
			// initialize iOS agent
			let config = ADEumAgentConfiguration(appKey: "XX-XXX-XXX-XXX")
			config.loggingLevel = .all
			ADEumInstrumentation.initWith(config)
			
			// update our Session instance singleton, instrumentedSession, so that URLSession will be instrumented
			let myConfiguration = URLSessionConfiguration.af.default
			let instrumentedSession = Session(configuration: myConfiguration)
			// replace mySession with instrumentedSession
			mySession = instrumentedSession
			
			// subsequent requests use updated mySession from instrumentedSession, so should be instrumented
			let myUrl2 = URL(string: "https://www.google.com/?q=request%202")!
			let urlRequest2 = URLRequest(url: myUrl2)
			mySession?.request(urlRequest2 as URLRequestConvertible).response {
				response in debugPrint(response)
			}
		}
		// has instrumentedSession been created yet? Indeterminate. If not, this request won't be instrumented
		let myUrl3 = URL(string: "https://www.google.com/?q=request%203")!
		let urlRequest3 = URLRequest(url: myUrl3)
		mySession?.request(urlRequest3 as URLRequestConvertible).response {
			response in debugPrint(response)
		}
		return true
	}
    
}
CODE