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.
- Improved thread safety in the API
Some API methods exhibited race conditions under heavy utilization. These race conditions are now solved.
- Summary metrics occasionally exhibited bad values
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.
- Fixed a rare build crash where newly constructed objects go unused and are later optimized down by ProGuard.
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 , we don't support doing this in subclasses. For now, we ignore these cases but may return to adding inline instrumentation to constructors in the future.
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.
- Fixed rare bug in Eclipse where all projects are built with New Relic regardless of agent jar presence.
- Added support for ProGuard with Ant builds.
- Clarified naming of unknown carriers on Android