Skip to content

Releases: launchdarkly/android-client-sdk

2.14.0

18 Dec 02:42
722d0cb
Compare
Choose a tag to compare

[2.14.0] - 2020-12-17

Added

  • Added LDConfig.Builder.setPollUri configuration setter that is equivalent to the now deprecated setBaseUri.
  • Added LDConfig.getPollUri configuration getter that is equivalent to the now deprecated getPollUri.
  • Added LDClient.doubleVariation for getting floating point flag values as a double. This is preferred over the now deprecated floatVariation.

Fixed

  • Improved event summarization logic to avoid potential runtime exceptions. Thanks to @yzheng988 for reporting (#105).
  • Internal throttling logic would sometimes delay new poll or stream connections even when there were no recent connections. This caused switching active user contexts using identify to sometimes delay retrieving the most recent flags, and therefore delay the completion of the returned Future.

Changed

  • The maximum delay the internal throttling logic could delay a flag request has been reduced to 60 seconds.

Deprecated

  • Deprecated LDConfig.Builder.setBaseUri and LDConfig.getBaseUri, please use setPollUri and getPollUri instead.
  • Deprecated LDClient.floatVariation, please use doubleVariation for evaluating flags with floating point values.

2.13.0

07 Aug 21:07
3c8a6c1
Compare
Choose a tag to compare

[2.13.0] - 2020-08-07

Added

  • Allow specifying additional headers to be included on HTTP requests to LaunchDarkly services using LDConfig.Builder.setAdditionalHeaders. This feature is to enable certain proxy configurations, and is not needed for normal use.

2.12.0

29 May 20:09
86d3922
Compare
Choose a tag to compare

[2.12.0] - 2020-05-29

Added

  • Added a new configuration option, maxCachedUsers to LDConfig. This option allows configuration of the limit to how many users have their flag values cached locally in the device's SharedPreferences.

Fixed

  • Fixed a NPE that could occur when calling a variation methods with a flag key that does not exist locally or is of the wrong type. This issue could only occur if a null fallback value was provided.
  • Previously, the SDK manifest required the SET_ALARM permission. This permission was never used, so it has been removed.

Changed

  • For polling requests, the SDK uses OkHttp with a cache configured. Previously the cache directory was set to the main application cache directory. This has been changed to a subdirectory of the application cached directory.

Deprecated

  • Packages that contained only deprecated classes. flagstore, flagstore.sharedprefs, gson, response, and tls.

2.11.0

28 Feb 18:19
dfbdc7c
Compare
Choose a tag to compare

[2.11.0] - 2020-02-28

Added

  • The SDK now periodically sends diagnostic data to LaunchDarkly, describing the version and configuration of the SDK, the Android API SDK version number, and performance statistics. No credentials, Android device IDs, or other identifiable values are included. This behavior can be disabled with LDConfig.Builder.setDiagnosticOptOut(boolean) or configured with LDConfig.Builder.setDiagnosticRecordingInterval(int).
  • New LDConfig.Builder field setters setWrapperName(String) and setWrapperVersion(String). These allow a library wrapping the SDK (for example, the React Native SDK) to identify itself for usage data.

Fixed

  • Fixed an issue where in some cases the future associated with an init or identify call would never complete if the network status or foreground state changed before the future had completed. Also improved test coverage of this behavior.

Deprecated

  • UserSummaryEventSharedPreferences, SummaryEventSharedPreferences, FeatureFlagFetcher, Util, and Debounce. These classes were only intended for internal SDK use, and will be removed in the next major release to reduce the number of exposed classes.

2.10.0

30 Jan 18:20
2c523ca
Compare
Choose a tag to compare

[2.10.0] - 2020-01-30

Added

  • The SDK now specifies a uniquely identifiable request header when sending events to LaunchDarkly to ensure that events are only processed once, even if the SDK sends them two times due to a failed initial attempt.

Deprecated

  • All classes in sub-packages, which were only intended for use by the SDK. These classes will be removed in the next major release.
  • LDCountryCode, as well as LDUser setters that took LDCountryCode as an argument. The String overloads should be used instead, as these will be removed in the next major release. Until that release the additional validation on the country fields will remain, see the Javadoc for more information.

2.9.1

03 Jan 21:14
4af59d0
Compare
Choose a tag to compare

[2.9.1] - 2020-01-03

Fixed:

  • Removed possibility of fatal SecurityException on Samsung devices that would be triggered when the SDK attempted to register an alarm to trigger a future poll when the application process already had 500 alarms registered. This limit is only present on Samsung's versions of Android Lollipop and later. The SDK will now catch this error if it occurs to prevent killing the host application.
  • Rarely, the client would deliver its initial "identify" event to LaunchDarkly immediately rather than waiting for the configured flush interval.
  • Fixed some malformed Javadoc comments.

2.9.0

25 Oct 21:07
89d944d
Compare
Choose a tag to compare

[2.9.0] - 2019-10-25

Added

  • Added support for new LaunchDarkly experimentation features. See LDClient.track(String, JsonElement, Double) for recording numeric metrics.
  • Substantially improved test coverage for SDK behavior in different Application states (network connectivity and backgrounding).

Fixed

  • The Future returned by LDClient.identify could not complete as intended for certain connectivity states. When in a background state this could not complete until the next background polling cycle, or never if background polling was disabled.

2.8.5

29 Jul 22:44
e52f4ef
Compare
Choose a tag to compare

[2.8.5] - 2019-07-29

Added:

  • Added a CircleCI badge to the project readme.

Fixed

  • Fix a bug introduced in 2.8.0 that could cause the SDK to enter a bad state where it would no longer connect to the flag stream if identify() was called rapidly.
  • Reverted an unintentional behavior change introduced in 2.8.0 when LDClient.init is given zero as the timeout argument. Before 2.8.0, this would not wait for initialization and return the client immediately. For 2.8.0-2.8.4 this was changed to wait indefinitely for initialization, 2.8.5 restores the earlier behavior.

2.8.4

14 Jun 19:58
c67be5d
Compare
Choose a tag to compare

[2.8.4] - 2019-06-14

Fixed

  • Deadlock when waiting on main thread for identify call.
  • ConcurrentModificationException caused by PollingUpdater or ConnectivityReceiver iterating over LDClient instances during initialization.

2.8.3

22 May 20:51
1a177c5
Compare
Choose a tag to compare

[2.8.3] - 2019-05-22

Added

  • Improved error handling on flag store migration.

Fixed

  • ClassCastException when migrating flag store from certain early Android SDK versions.