- Resolves a crash in InputStream instrumentation when chunked transfer encoding is used.
- Custom interaction names, when specified, are now used in Crash interaction history trails.
NewRelic.crashNow()method to trigger a test crash quickly and easily.
Naming changes to Interaction Traces
We've changed the naming scheme for Interaction Traces to be more clear. Instead of "ActivityClass#onCreate", you'll see "Display ActivityClass". If you want to change the name of a running Interaction, just call
New API methods for starting and stopping Interaction Traces
We've added two new methods to the NewRelic class API to give you greater control over starting and stopping Interaction Traces. The
startInteraction() method now just takes a string, no context needed. Use
endInteraction() to stop a running interaction.
@SkipTrace annotation to exclude methods from default instrumentation
While automatic instrumentation is one of the more convenient features of the agent, there are a few cases where it can get in the way. Should you encounter one of these cases, simply add this annotation to the method in question, and the agent will skip it during compile time instrumentation.
API methods now check for bad values and throw IllegalArgumentException
Previously, our API methods would silently discard bad data without recording errors or metrics. We've changed this behavior to be more informative by throwing an exception when bad arguments are passed.
Android Gradle plugin 0.10 compatibility
Version 0.10.0 of the plugin introduced a subtle change that caused errors during build time that would produce ClassCastException errors at runtime. We’ve fixed this issue and verified we're also compatible with 0.11.
Some API methods exhibited race conditions under heavy utilization. These race conditions are now solved.
You may have noticed strange numbers in your application overview chart. We've isolated the cause of these numbers and fixed the underlying issue in the agent.
CPU vitals in Interaction traces.
We've added CPU vitals in interaction traces. You'll now be able to see your application's usage of the device's CPU(s) as a percentage of the total CPU time.
Restore compatibility for building with Java 7u55 and support Java 8.
Java 7u55 introduced a slight change that broke our build process. We've corrected this issue and added support for Java 8.
Applications without version numbers crashed the agent.
Strangely, it's possible to build an Android application without a version number defined in the manifest. We now detect this case and shut down the agent cleanly with an error message indicating we require a version number.
Encode custom Http(s) error response bodies.
Http(s) error response bodies are normally encoded to ease escaping. However, errors reported via the API were not encoded. We've fixed this so all errors should appear properly in the UI.
Better auto-naming support for Fragments.
Previously, separating fragments from the calling Activity required renaming the running interaction. Now, Fragments have first class treatment and will show up alongside Activities.
If you're using Square’s OkHttp library, you'll now see your HTTP transactions automatically appear on RPM. There’s no longer any need to use the agent API to track these transactions.
Clear all metric caches after a failed harvest cycle.
In rare cases where the agent is unable to connect to New Relic's servers, some metric caches persisted and caused unusually large metric numbers. Now, all these caches are cleared at the end of the cycle to prevent compounding aggregation.
Improved inflight interaction naming.
There are some cases in which renaming a running interaction did not fully rename the metric scope. This fix ensures all aspects of the interaction bear the new name.
Fixed an issue in Proguard bytecode handling.
While compiling Android apps with Proguard's optimizations turned on is discouraged, the agent does its best to support such optimizations. However, we mishandled one such case and have fixed it in this release.
Ensure interactions complete when an app leaves the foreground.
Previously, it was possible for an interaction to persist across application foreground/background lifecycles if a trace segment was still in flight. This resulted in interaction traces extending past the default 60-second limit. Now, interactions are stopped when the app leaves the foreground regardless of segment states.
Machine metrics continue generation upon app restore.
Machine metrics now continue to generate after an app has been in the background and enters the foreground. Previously, they were only generated from launch until the app entered the background.
Improve BitmapFactory instrumentation scoping.
BitmapFactory’s static method instrumentation is now scoped to more tightly to its package and class to prevent instrumentation of similar but unrelated method signatures.
Added more instrumentation to summary metrics.
Now all instrumented methods are included in summarized category metrics including those only present in background threads.
Added missing methods to HttpsUrlConnection instrumentation.
Several missing proxy methods have been added to our HttpsUrlConnection shim. This restores the ability to override default HTTPS behavior.
New API methods for adding cross application tracing headers to noticeHttpTransaction().
In case the New Relic agent doesn't support the HTTP API you're using, you can manually submit a transaction via the noticeHttpTransaction() method. With this release, this method now allows you to set the NR cross application tracing header for tracking purposes.
New API method for configuring logging verbosity.
You can now choose how verbose the agent will be at boot by chaining withLogLevel() before your NewRelic start() call. The default level is INFO.
New API method for renaming inflight interactions.
Call NewRelic.setInteractionName() at the beginning of your onCreate() method to set a custom name for your interaction. This usually defaults to the name of the Activity subclass.
Method tracing optimizations.
We’ve carefully reviewed the code involved in tracing instrumented methods and reduced its CPU and memory overhead substantially.
Call checkcast before invoking NR instrumentation.
This fixes an issue where the Dalvik VM refuses to load a class with our instrumentation in cases where the inbound object is not the expected type as determined by static code analysis.
Don't attempt to instrument constructors in subclasses of classes we normally instrument.
While we support instrumenting constructors by replacing the call to
Java 7u60 (pre-release) refactored the class in which we were storing our invocation dispatcher.
We've future proofed the agent by storing the dispatcher in another core class.
End to end instrumentation for your mobile applications.
Automatic instrumentation of important system objects and methods.
Customizability to allow for instrumentation of your most important objects and methods.
For a complete breakdown of new features visit: New Relic For Mobile Apps v2
New Relic for Android is now compatible with Android 2.2 (API Level 8)