Download PDF
Download page Mobile RUM Supported Environments.
Mobile RUM Supported Environments
This page lists the supported environments for the following mobile agents:
Android Agent
Supported Environments | Name | Supported Version(s) |
---|---|---|
Operating System | Android | >= 2.3.3 |
Architecture | arm64-v8a, armeabi, armeabi-v7a, mips, mips64, x86, and x86_64 | - |
Frameworks | Ant | - |
Gradle | 0.6.3 - 8.0 | |
Maven | >= 3.1.1 | |
Crash Reporters | Mobile RUM does not officially support 3rd-party crash reporters. | N/A |
HTTP Libraries | HttpURLConnection /HttpsURLConnection | - |
HttpClient | - | |
OkHttp | 2.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 Version | Minimum Android Agent Version |
---|---|
0.6.3 | 3.8.2.0 |
0.7.3 - 0.9.2 | 3.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.0 | 4.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 |
7.0 | 22.2.0 |
8.0 | 23.4.0 |
Recommendations
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.
Android Studio Support
- Android Studio 2.1.0 - 2.9.9, 3.2.1 - 3.9.9 (Not supported: 3.0.0 - 3.2.0, >= 4.0)
iOS Agent
Supported Environments | Name | Supported Version(s) |
---|---|---|
Operating System | iOS | >= 9 |
Architecture | Apple 32-bit ARM, Apple 64-bit A7 | - |
Framework | Xcode | >= 12.5 |
Crash Reporters | Mobile RUM does not officially support 3rd-party crash reporters. | N/A |
Apple WatchKit Extension Environments | watchOS | 1 |
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. | - |
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 customizedSession
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
withinstrumentedSession
. 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
}
}
Xamarin Agent
Supported Environments | Name | Supported Version(s) |
---|---|---|
Operating System | Android | >= 2.3.3 |
iOS | >= 9 | |
Architecture | Xamarin.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 Reporters | Mobile RUM does not officially support 3rd-party crash reporters. | N/A |
Apple WatchKit Extension Environments | Not supported | - |
HTTP Libraries | N/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 Environments | Name | Supported Version(s) |
---|---|---|
Operating System | Android | 4.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 | - | |
Framework | Apache Cordova | >= 7 |
Crash Reporters | Mobile RUM does not officially support 3rd-party crash reporters. | N/A |
Apple WatchKit Extension Environments | Not supported | - |
HTTP Libraries | Android:
| - |
iOS:
| - |
React Native Agent
Supported Environments | Name | Supported Version(s) |
---|---|---|
Operating System | Android | >= 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) | - | |
Framework | React Native | >= 0.60 and <= 0.70.6(with React Native Agent >= 20.10.1) < 0.60 (with React Native Agent 20.7.0) |
Crash Reporters | Mobile RUM does not officially support 3rd-party crash reporters. | N/A |
Apple WatchKit Extension Environments | Not supported | - |
HTTP Libraries | Android:
| - |
iOS:
| - |