Fixed in this release
- Fixed a hang due to a sampling race condition that occurred when an app's crash was uploaded to New Relic.
New in this release
- We are pleased to announce support for Dexguard.
- Full build time compatibility with Dexguard version 7.2.04 or higher
- Full instrumentation support
- De-obfuscated crash report stack traces
Fixes
- The New Relic Gradle plugin depends on the Android application or library plugin having been installed first. The New Relic plugin now throws a Gradle runtime exception, which includes instructions on how to fix the problem, if it is applied before Android.
- Interaction trace completion was blocked on the sampling tasks running during the interaction. Any running sample tasks are stopped immediately when the interaction trace completes.
Changes
- The Android agent now requires Proguard version 5.0 or higher for Proguard support
Fixes
- Fixes crashes when initializing JsonObject instances with null values. The class constructor now throws a JSONException if the passed JSON string argument is null.
- Fixes crashes that resulted from attempting to determine the root cause of an unhandled exception.
- Fixes very rare crashes when OkHttp2 returns a null Response object following a network request.
Improvements
Improved OkHttp2 error reporting
A set of OkHttp2 request exceptions, previously listed as Unknown errors, have been adapted to reportable error types.
Reduce upload attempts for cached crash reports
Crash reports that are collected, but cannot be immediately uploaded, are saved locally. Saved crashes are uploaded to the crash collectors as part of agent initialization, and if the upload was successful, the local copy is removed. Otherwise, the upload is tried again the next time the app is launched, and this would go on until the upload was successful. To limit accumulation, and reduce old or duplicated crash reports, the agent now limits retries to three attempts.
Fixes
- Fixes crash when initializing JsonArray instances with null values. Throws JSONException if the passed JSON string argument is null.
- Fixes certain crashes resulting from
NoClassDefFoundError
exceptions thrown by multi-dexed apps compiled for Dalvik on platforms prior to Lollipop (Android 5.0, API level 21).
Improvements
This release adds a new feature flag, DefaultInteractions, that controls whether automatically instrumented (default) interactions are collected by the agent. With auto-instrumented interactions disabled, only custom interactions (interactions created through the public New Relic agent API) will be recorded. This flag is enabled by default, and is disabled by calling
NewRelic.disableFeature(FeatureFlag.DefaultInteractions);
Fixes
- Fixes a problem reading a response body in asynchronous network requests via OkHttp, which was introduced by version 5.4.1.
Fixes
- Prevent duplication of the New Relic HTTP header used for cross application tracing ('X-NewRelic-Id') if the request is replayed through OkHttp
- The agent will now send the HTTP header 'X-NewRelic-Id' (used for cross application tracing) using exactly that casing (it was previously lowercased)
- Failed OkHttp requests will now correctly report the full error response body
Changes
This release will be the last to support the New Relic Eclipse plugin for Eclipse IDE's. Eclipse users are encouraged to use the Eclipse Gradle plugin or migrate to Android Studio. Eclipse users may continue to use this (5.4.1) or any previous agent release.
Improvements
- Interaction tracing can now be globally disabled with the new API method,
NewRelic.withInteractionTracing(boolean)
. This method should be called prior to starting the agent, but it can be changed any time thereafter. Interaction tracing will be disabled after the agent has started; interactions for any activity or methods executed prior to starting the agent may still appear in the Interactions page.
Fixes
- A bug introduced in the previous release that resulted in missing analytics data in crash reports has been fixed.
- The session ID is now correctly updated when the app returns to foreground. Unique session counts were not affected.
- Additional safeguards were added to prevent agent from starting or harvesting when app is in the background.
Improvements
- This release adds two new Insights attributes for the upcoming Mobile Version Trends Report:
install
, andupgradeFrom
. This allows tracking when a session includes a new install or a new upgrade. Theinstall
attribute recordstrue
if the app was a new installation. TheupgradeFrom
attribute tracks the last version of the application when an upgrade is detected.
Fixes
- Patched a GSON vulnerability that could result in null pointer exception in Json serialization during harvest.
Improvements
- Android Gradle plugin 1.4 compatibility (1.4.0-beta6)
- Google is working to improve the build system within Android Developer Toolkit (ADT) and as of version 1.4.0-beta2 a change was made that breaks compatibility with the New Relic Android agent. This update provides compatibility with the new beta and previous versions of the Android Gradle plugin.
Fixes
- With Strict Mode enabled in Android Studio, there may have been a resource leak detected with the Android agent installed. This has been corrected for Strict Mode compatibility and to prevent potential resource leaks.
- An edge case scenario was detected where an app left open past the scheduled timeout value would continue sending data on the standard harvest cycle rather than the timeout value. This was corrected to ensure the timeout count is reset and respected.
- A small number of network error types in the Android agent were found to be reporting invalid codes that resulted in missing exceptions on the Errors page for the app. This behavior was corrected and each type of exception is now properly displayed in the Errors screen.
- In version 1.3 of the Gradle plugin, Google made a change that requires the mapping.txt file to be in a specific format when creating multi-dexed apps. This release accounts for that and ensures building with the Android agent is supports multi-dex.
Improvements
- Retrofit compatibility - this release of the Android SDK adds support for the current beta version of the Retrofit library (2.0.0-beta2) and addresses a crash that may have occurred previously when making an HTTP request with this beta version.