Optimizely Classic Android SDK Changelog
September 26, 2016
New Preview Mode APIs:
- Added a new method
Optimizely.enablePreview(boolean). The flag toggles whether or not the Optimizely floating 'O' is visible.
- Added a new method
Optimizely.launchPreview(PendingIntent). This method will launch the Optimizely Preview UI. The provided Pending Intent will be used to relaunch the application after variations are selected and set in the Preview UI. When using this method Optimizely will kill and restart the entire process when restarting. Running Services are killed in addition to Activities.
- Now the edit mode activation gesture is disabled by default. To toggle it on or off use
- The deprecated method
OptimizelyEventListener#onExperimentViewed()has been removed. Use
OptimizelyEventListenerreferences are not stored as weak references. This allows listeners to be anonymous inner classes.
July 22, 2016
- Fixes bug that caused user ID to be reset on every cold start of app under some circumstances. Users manually setting a PPID were not affected. This only affects unique vistor counts in your results.
July 12, 2016
- Optimizely Service: Optimizely SDK now has an internal Android Service that is used for I/O such as saving and sending events. This will ensure that events created by users when there is no internet connectivity will get sent to us eventually even if the the user never opens the app again. Currently, the service will flush events once per day. In the future this may be configurable.
- Optimizely Attributes: We added additional logging to help you properly use Optimizely Attribute APIs before starting Optimizely.
- Portrait Lock: We have removed portrait lock with users building for Android TV.
May 24, 2016
We have added an exciting feature to allow developers/testers to set different variations from the app itself. You can also see the events that will be sent to the Optimizely backend. Changing variations while in preview mode is now instantaneous.
You can now create Optimizely Attributes for Android in the project dashboard. These attributes can be used to segment results on the results page and for audience targeting. There are new APIs to get and set the value for attributes.
- You can set an attribute’s value by using either
Optimizely.setValueForAttributeId(String, String, Context)or
Optimizely.setValueForAttributeApiName(String, String, Context)before starting Optimizely. Use
Optimizely.setValueForAttributeApiName(String, String)after starting Optimizely.
- You can get an attribute’s current value by using either
Optimizely.getAttrtibuteValueForAttributeApiName(String, Context)before starting Optimizely. Use
Optimizely.getAttrtibuteValueForAttributeApiName(String, String)after starting Optimizely.
You can get a copy of all attributes by calling
Optimizely.getAttributes(). This replaces the previous
OptimizelyAttribute.java- Represents an Optimizely Attribute.
registerPlugin is not deprecated anymore. Due to a compiler change in Android Studio 2.0 we cannot find arbitrary classes that implement OptimizelyPlugin in an app’s Dex file at runtime. Plugins in development will need to use Optimizely#registerPlugin(OptimizelyPlugin) to add the plugin to the Optimizely Plugin Manager.
- Session per visitor per week are not calculated correctly.
- Integrations such as Localytics and Mixpanel will continue to work with Android Studio 2.0 and the new Jack compiler.
- We are enabling registerPlugin Api so that you can register plugins directly
- In Android 2.0, in edit mode, Live Variables and Code Blocks are only registered when you navigate to the view that uses them. In the previous versions, Live Variables and Code Blocks were registered on app start
- If this is inconvenient, Optimizely.registerClassWithOptlyFields(Class…) can be used to register classes with Live Variables and Code Blocks at any point during the app’s execution.
Optimizely.getDimensions()is now deprecated. Please use
OptimizelyDimension.javais now deprecated. Please use the
In order to enable preview, you can add
Optimizely.enablePreview() in your code similar to
Optimizely.enableEditor(). You can only use one of these API calls at a time.
March 8, 2016
- Adjusts bundled Proguard rules so that they only keep the minimum required by Optimizely and work with our new modules.
- Fixes issue where SDK would not start up while starting asynchronously due to thread pool starvation.
February 29, 2016
- Gives visibility back to public API method
Optimizely.trackViewGoal(String)which is used to track view goals when using Fragments.
February 25, 2016
- Developer Improvements: We want to enable customers to use the offline conversions API to its full potential, so we've exposed essential parameters needed to send offline conversion events.
Optimizely.getDimensions()- get an ArrayList of all OptimizelyDimensions in the SDK.
Optimizely.setUniversalUserId(Context, String)- your custom Universal User Id for the end user. Set the universalUserId to identify the end user across devices. More info can be found here
Optimizely.optimizelyEndUserId(Context)- read only property to get the Optimizely End User Id created by the Optimizely SDK.
- New Classes:
- OptimizelyDimension.Java - A representation of the data in an individual Optimizely Dimension. Read more about Dimensions here.
- Performance Improvements:
- Added a way to selectively include Optimizely SDK code to reduce method counts against DEX issues.
- Improved performance for SDK startup
- Upgraded to OKHTTP version 3
- Fixed an issue with tracking revenue goals with an empty string description.
Optimizely.setUserId(Context, String)are now deprecated. Please use either
January 5, 2016
- Fix Audience evaluator bug.
December 21, 2015
- Fixes internal task queueing error
December 14, 2015
- Fixes crash when handling GSON failure during SDK disabling. This only selects a few specific devices
December 7, 2015
- Handles GSON crash when it creating GSON adapter. GSON crashes will cause the SDK to disable itself and not crash the host app
November 30, 2015
- Fixes incompatibility with edit or preview mode on older Android devices (API 17 and below)
November 25, 2015
- Optimizely will no longer completely disable itself if there are no running esperiments, which prevented users from starting the editor
November 12, 2015
- Optimizely will not disable itself if it crashes on the main thread for debug builds, only for release builds
- Adjusted OkHttp dependency for increased stability
November 6, 2015
Announcements: Twitter Fabric Integration. We're excited to announce our partnership with Fabric, Twitter's modular mobile platform that makes it easy for developers to install and maintain SDKs within their apps. Find out more here
- Developer Improvements. We've added a litany of testing methods to our SDK to help you debug your experiments much more quickly and easily
- isUserInAudience - Check if the user is in a particular audience
- getExperimentDataById - Get an experiment's metadata with that experiment's ID
- resetUserBucketing - Remove a user's bucketing information for all experiments
- forceVariationOfExperiment - Force a user into a certain experiment variation Read more in-depth descriptions here
- Manual activation. You can now manually specify, in code, when you want your experiments to activate (by default, all active experiments are activated when start Optimizely is called). Some important use cases include setting additional targeting metadata before activating an experiment and only bucketing users who visit a certain activity in your app Read more in-depth descriptions here
- Code Block Callbacks in Edit Mode. Please note that code block callbacks will only work in edit mode
- Automatic Crash Disabling. Our Android SDK is now more stable than ever!
- Optimizely-related crashes in the main thread will cause Optimizely SDK disable itself on that device until an Optimizely SDK version change or an app version change
- Optimizely-related crashes in background threads will cause the thread to quietly shut down
- Optimizely SDK automatically disables itself for that session if no running experiments are detected on app start
- Improved preview mode access from URL scheme consistency
- Improved visual editor button resizing consistency
- Fixed counting bug affecting custom events when used with UUID
October 16, 2015
is deprecated in favor of:
- Added Fabric properties to core as well as bundle
October 15, 2015
- Added Fabric properties
October 14, 2015
- Proguard configuration for SDK is now bundled with the SDK
- Fixes conflict between Proguard and Gson
- Removes unecessary elements from the library's Manifest
October 6, 2015
- Remove backup settings from AndroidManifest.xml
October 5, 2015
- Audience targeting. Improve your app’s retention by creating audiences of similar users and targeting them with relevant content.
- Connection-free changes. Make changes to Live Variables and Code Blocks without connecting your device to Optimizely.
- Streamlined goal setting. Save time during instrumentation with a faster and more accurate goal selection experience.
- Multi-target goals. Accurately test entirely different variations by connecting multiple view or tap events to a single goal.
- Advanced preview and QA modes. Release new features confidently with a rebuilt preview mode that allows you to simulate a live user experience in real time.
- Analytics integrations. See your Android experiment results in your Google Analytics, Mixpanel, Localytics, or Amplitude dashboard.