Skip to content

Commit 0b6f346

Browse files
authored
prepare for release 4.0.0 (#475)
1 parent e2e765b commit 0b6f346

File tree

3 files changed

+75
-18
lines changed

3 files changed

+75
-18
lines changed

CHANGELOG.md

+68-11
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,62 @@
11
# Optimizely Android X SDK Changelog
22

3+
4+
## 4.0.0
5+
January 17th, 2024
6+
7+
### New Features
8+
9+
The 4.0.0 release introduces a new primary feature, [Advanced Audience Targeting]( https://docs.developers.optimizely.com/feature-experimentation/docs/optimizely-data-platform-advanced-audience-targeting) enabled through integration with [Optimizely Data Platform (ODP)](https://docs.developers.optimizely.com/optimizely-data-platform/docs)
10+
([#431](https://github.com/optimizely/android-sdk/pull/431),
11+
[#440](https://github.com/optimizely/android-sdk/pull/440),
12+
[#444](https://github.com/optimizely/android-sdk/pull/444),
13+
[#445](https://github.com/optimizely/android-sdk/pull/445),
14+
[#448](https://github.com/optimizely/android-sdk/pull/448),
15+
[#470](https://github.com/optimizely/android-sdk/pull/470)).
16+
17+
You can use ODP, a high-performance [Customer Data Platform (CDP)]( https://www.optimizely.com/optimization-glossary/customer-data-platform/), to easily create complex real-time segments (RTS) using first-party and 50+ third-party data sources out of the box. You can create custom schemas that support the user attributes important for your business, and stitch together user behavior done on different devices to better understand and target your customers for personalized user experiences. ODP can be used as a single source of truth for these segments in any Optimizely or 3rd party tool.
18+
19+
With ODP accounts integrated into Optimizely projects, you can build audiences using segments pre-defined in ODP. The SDK will fetch the segments for given users and make decisions using the segments. For access to ODP audience targeting in your Feature Experimentation account, please contact your Customer Success Manager.
20+
21+
This version includes the following changes:
22+
23+
* New API added to `OptimizelyUserContext`:
24+
- `fetchQualifiedSegments()`: this API will retrieve user segments from the ODP server. The fetched segments will be used for audience evaluation. The fetched data will be stored in the local cache to avoid repeated network delays.
25+
- When an `OptimizelyUserContext` is created, the SDK will automatically send an identify request to the ODP server to facilitate observing user activities.
26+
27+
* New APIs added to `OptimizelyClient`:
28+
- `sendODPEvent()`: customers can build/send arbitrary ODP events that will bind user identifiers and data to user profiles in ODP.
29+
- `createUserContext()` with anonymous user IDs: user-contexts can be created without a userId. The SDK will create and use a persistent `VUID` specific to a device when userId is not provided.
30+
31+
For details, refer to our documentation pages:
32+
33+
* [Advanced Audience Targeting](https://docs.developers.optimizely.com/feature-experimentation/docs/optimizely-data-platform-advanced-audience-targeting)
34+
35+
* [Client SDK Support](https://docs.developers.optimizely.com/feature-experimentation/v1.0/docs/advanced-audience-targeting-for-client-side-sdks)
36+
37+
* [Initialize Android SDK](https://docs.developers.optimizely.com/feature-experimentation/docs/initialize-sdk-android)
38+
39+
* [OptimizelyUserContext Android SDK](https://docs.developers.optimizely.com/feature-experimentation/docs/optimizelyusercontext-android)
40+
41+
* [Advanced Audience Targeting segment qualification methods](https://docs.developers.optimizely.com/feature-experimentation/docs/advanced-audience-targeting-segment-qualification-methods-android)
42+
43+
* [Send Optimizely Data Platform data using Advanced Audience Targeting](https://docs.developers.optimizely.com/feature-experimentation/docs/send-odp-data-using-advanced-audience-targeting-android)
44+
45+
### Breaking Changes
46+
47+
* `ODPManager` in the SDK is enabled by default. Unless an ODP account is integrated into the Optimizely projects, most `ODPManager` functions will be ignored. If needed, `ODPManager` can be disabled when `OptimizelyClient` is instantiated.
48+
* minimum Android API level requirements upgraded to 21 or higher.
49+
50+
### Bug Fixes
51+
* support arbitrary client names to be included in logx and odp events. ([#459](https://github.com/optimizely/android-sdk/pull/459)).
52+
* Added catch block to capture resource not found exception. ([#460](https://github.com/optimizely/android-sdk/pull/460)).
53+
* Added a proguard rule to suppress warning for java.beans.Transient. Upgraded Java to 11. ([#471](https://github.com/optimizely/android-sdk/pull/471)).
54+
* Added a proguard rule to keep ODPEvent and added sample codes for ODP. ([#456](https://github.com/optimizely/android-sdk/pull/456)).
55+
56+
### Functionality Enhancements
57+
- Update Github Issue Templates ([#461](https://github.com/optimizely/android-sdk/pull/461))
58+
59+
360
## 4.0.0-beta3
461
September 20th, 2023
562

@@ -215,7 +272,7 @@ Using Java SDK 3.7.0
215272
September 30th, 2020
216273

217274
- This build has support for audience evaluation by version. It also supports number 'greater than or equal to' and 'less than or equal to'.
218-
- This build also supports getting the current config string.
275+
- This build also supports getting the current config string.
219276

220277
For a complete list see the [release notes](https://github.com/optimizely/java-sdk/releases/tag/3.6.0) for java sdk 3.6.0
221278

@@ -224,7 +281,7 @@ Using Java SDK 3.6.0
224281
## 3.6.0
225282
July 13th, 2020
226283

227-
This build has support for Feature JSON. It also includes an update to the test application
284+
This build has support for Feature JSON. It also includes an update to the test application
228285
with feature flag example and package level log setting.
229286

230287
Using Java SDK 3.5.0
@@ -352,10 +409,10 @@ This minor release updates the SDK to use the Optimizely Java SDK 3.1.0 which in
352409
## 3.0.1
353410
April 23, 2019
354411

355-
This patch release fixes some git hub issues mentioned below.
412+
This patch release fixes some git hub issues mentioned below.
356413

357414
### Bug Fixes
358-
* The Logger security exception is handled a little more cleanly for logging. ([#270](https://github.com/optimizely/android-sdk/pull/270))
415+
* The Logger security exception is handled a little more cleanly for logging. ([#270](https://github.com/optimizely/android-sdk/pull/270))
359416
* There was the possibility to start too many intents for event handling. ([#268](https://github.com/optimizely/android-sdk/pull/268))
360417
* The proguard rules have been cleaned up and tested. ([#266](https://github.com/optimizely/android-sdk/pull/266))
361418
* This also includes using Optimizely Java SDK 3.0.1. The Java SDK patch allows for using the Optimizely Android aar with older versions of org.json which are included in the android framework.
@@ -421,7 +478,7 @@ This is the release candidate for the 3.0 SDK, which includes a number of improv
421478

422479
### New Features
423480
* Support for number-valued and boolean-valued attributes. ([#213](https://github.com/optimizely/java-sdk/pull/213))
424-
* Support for audiences with new match conditions for attribute values, including “substring” and “exists” matches for strings; “greater than”, “less than”, exact, and “exists” matches for numbers; and “exact”, and “exists” matches for booleans.
481+
* Support for audiences with new match conditions for attribute values, including “substring” and “exists” matches for strings; “greater than”, “less than”, exact, and “exists” matches for numbers; and “exact”, and “exists” matches for booleans.
425482
* Built-in datafile version compatibility checks so that SDKs will not initialize with a newer datafile it is not compatible with. ([#209](https://github.com/optimizely/java-sdk/pull/209))
426483
* Audience combinations within an experiment are unofficially supported in this release.
427484

@@ -435,18 +492,18 @@ This is the release candidate for the 3.0 SDK, which includes a number of improv
435492
* fix for exact match when dealing with integers and doubles. Created a new Numeric match type.
436493
* make a copy of attributes passed in to avoid any concurrency problems. Addresses GitHub issue in Optimizely Andriod SDK.
437494
* allow single root node for audience.conditions, typedAudience.conditions, and Experiment.audienceCombinations.
438-
495+
439496
## 3.0.0-RC
440497
November 9, 2018
441498

442499
This is a RC candidate for major release 3.0.0 with support of new audience match types.
443500
### New Features
444501
* Support for number-valued and boolean-valued attributes. ([#213](https://githu
445502
b.com/optimizely/java-sdk/pull/213))
446-
* Support for audiences with new match conditions for attribute values, including “substring” and “exists” matches for strings; “greater than”, “less than”, exact, and “exists” matches for numbers; and “exact”, and “exists” matches for booleans.
503+
* Support for audiences with new match conditions for attribute values, including “substring” and “exists” matches for strings; “greater than”, “less than”, exact, and “exists” matches for numbers; and “exact”, and “exists” matches for booleans.
447504
* Built-in datafile version compatibility checks so that SDKs will not initialize with a newer datafile it is not compatible with. ([#209](https://github.com/op
448505
timizely/java-sdk/pull/209))
449-
* Audience combinations within an experiment are unofficially supported in this
506+
* Audience combinations within an experiment are unofficially supported in this
450507
release.
451508

452509
### Breaking Changes
@@ -479,7 +536,7 @@ Update credits
479536
## 2.1.0
480537
August 2nd, 2018
481538

482-
This release is the 2.x general availability launch of the Android SDK, which includes a number of significant new features that are now stable and fully supported. [Feature Management](https://developers.optimizely.com/x/solutions/sdks/reference/?language=android#feature-introduction) is now generally available, which introduces new APIs and which replaces the SDK's variable APIs (`getVariableBoolean`, etc.) with the feature variable APIs (`getFeatureVariableBoolean`, etc.).
539+
This release is the 2.x general availability launch of the Android SDK, which includes a number of significant new features that are now stable and fully supported. [Feature Management](https://developers.optimizely.com/x/solutions/sdks/reference/?language=android#feature-introduction) is now generally available, which introduces new APIs and which replaces the SDK's variable APIs (`getVariableBoolean`, etc.) with the feature variable APIs (`getFeatureVariableBoolean`, etc.).
483540

484541
The primary difference between the new Feature Variable APIs and the older, Variable APIs is that they allow you to link your variables to a Feature (a new type of entity defined in the Optimizely UI) and to a feature flag in your application. This in turn allows you to run Feature Tests and Rollouts on both your Features and Feature Variables. For complete details of the Feature Management APIs, see the "New Features" section below.
485542

@@ -518,7 +575,7 @@ optimizelyManager.initialize(this, new OptimizelyStartListener() {
518575
```
519576

520577
### Deprecations
521-
* Version 2.1.0 deprecates the Variable APIs: `getVariableBoolean`, `getVariableFloat`, `getVariableInteger`, and `getVariableString`
578+
* Version 2.1.0 deprecates the Variable APIs: `getVariableBoolean`, `getVariableFloat`, `getVariableInteger`, and `getVariableString`
522579

523580
* Replace use of the Variable APIs with Feature Management's Feature Variable APIs, described above
524581

@@ -633,7 +690,7 @@ April 25, 2018
633690

634691
- Release 1.6.1
635692

636-
This is a patch release for 1.6.0 and 1.5.1 Optimizely SDKs.
693+
This is a patch release for 1.6.0 and 1.5.1 Optimizely SDKs.
637694

638695
### Bug Fixes
639696
* Fix for the following issue:

README.md

+6-6
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ repositories {
3333
}
3434
3535
dependencies {
36-
implementation 'com.optimizely.ab:android-sdk:3.13.4'
36+
implementation 'com.optimizely.ab:android-sdk:4.0.0'
3737
}
3838
```
3939

@@ -45,12 +45,12 @@ OptimizelyManager optimizelyManager = OptimizelyManager.builder()
4545
.withSDKKey("my_sdk_key")
4646
.withDatafileDownloadInterval(TimeUnit.MINUTES.toSeconds(15))
4747
.build(getApplicationContext());
48-
48+
4949
optimizelyManager.initialize(this, null, (OptimizelyClient optimizely) -> {
5050
OptimizelyClient optimizely = optimizelyManager.getOptimizely();
51-
51+
5252
Variation variation = optimizely.activate("background_experiment", userId);
53-
53+
5454
optimizely.track("sample_conversion", userId);
5555
});
5656
@@ -104,11 +104,11 @@ This project includes 5 library modules and a test app.
104104

105105
### Android Studio
106106

107-
Android Studio is an IDE that wraps gradle. Everything you can do in Android Studio can be done from the command line tools.
107+
Android Studio is an IDE that wraps gradle. Everything you can do in Android Studio can be done from the command line tools.
108108

109109
You can import this project into Android Studio by opening Android Studio and selecting `Import Project` from the first dialog or from the `File` menu. Simply select the project's root `build.gradle` file and Android Studio will do the rest.
110110

111-
Tests can be run by right clicking the file in the project pane or by clicking the method name in source and selecting run. You will be prompted to create an AVD or connect a device if one isn't connected.
111+
Tests can be run by right clicking the file in the project pane or by clicking the method name in source and selecting run. You will be prompted to create an AVD or connect a device if one isn't connected.
112112

113113
### Contributing
114114

build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ ext {
7171
build_tools_version = "30.0.3"
7272
min_sdk_version = 21
7373
target_sdk_version = 33
74-
java_core_ver = "4.0.0-beta2"
74+
java_core_ver = "4.0.0"
7575
android_logger_ver = "1.3.6"
7676
jacksonversion= "2.11.2"
7777
annotations_ver = "1.2.0"

0 commit comments

Comments
 (0)