The Rave SDK will always preserve your current user’s RaveID and credentials on upgrade.

Version-specific Upgrade Notes#

4.4.0 Upgrade Notes#

Maven Central & Migration#

  • The SDK is now published to Maven Central. This is the recommended way to integrate going forward.

  • New integrations should add the following to build.gradle:

    repositories {
        google()
        mavenCentral()
    }
    
    def raveVersion = "4.4.0"
    dependencies {
        implementation "co.ravesocial:rave-core:${raveVersion}"
        implementation "co.ravesocial:rave-xml-scene:${raveVersion}"
        implementation "co.ravesocial:rave-facebook-plugin:${raveVersion}" # if used
        implementation "co.ravesocial:rave-google-plugin:${raveVersion}"   # if used
    }
    
  • If your project previously relied on local AARs:

    • Replace local AAR dependency lines with the Maven coordinates above.

    • Remove flatDir { dirs 'libs' } once you no longer rely on local AARs.

    • Keep any app-specific ScenePack or demo pack as a module or separate artifact, as before.

  • Local AARs remain supported for backward compatibility, but Maven Central is strongly recommended to simplify dependency management and ensure forward compatibility.

Module Consolidation#

  • The standalone RaveUtils module has been removed.

  • The following classes have been consolidated into core modules for maintainability:

    • RaveCompat and RaveLog are now part of RaveSocial.

    • ResourceIdGenerator is now part of XMLScene.

  • No action is required. Class names and package paths remain unchanged, so existing imports will continue to work.

API Removals (Previously Deprecated)#

The following APIs were previously marked as deprecated and are now removed:

  • RaveSceneContext.showProgressDialog() → use RaveSocial.getProgress().show() instead.

  • RaveSceneContext.dismissProgressDialog() → use RaveSocial.getProgress().dismiss() instead.

  • RaveContacts.inviteToAppVia(...) → use RaveSharing.share(...) instead.

  • RaveContacts.addRaveContactsByUsername(...) → use RaveContacts.addContactsByUsername(...) instead.

If your app still references these methods, you must migrate to the replacements above to compile with 4.4.0.

Dependency Updates#

  • Core and plugin dependencies have been updated to their latest stable versions (OkHttp 5.1.0, AndroidX Security 1.1.0, WorkManager 2.10.3, Facebook SDK 18.1.3, Google Identity/Auth 1.5.0 / 21.4.0).

  • Ensure your app’s dependency tree resolves correctly if you pin versions of these libraries.

4.3.4 Upgrade Notes#

Background Service Migration#

  • PendingActionsSendingService and RaveSkinUnzippingService have been removed and replaced with WorkManager-based implementations:

    • PendingActionsWorker now handles connectivity-based pending action retries.

    • RaveSkinUnzipWorker handles skin asset unzipping safely in the background.

  • These changes ensure full compliance with Android 12+ background execution restrictions.

  • No manual action is required unless your app interacts directly with these services (which it should not under normal SDK usage).

Manifest Clean-up#

If your project previously referenced the following services in AndroidManifest.xml, they should now be removed:

<service android:name="co.ravesocial.sdk.internal.net.action.v2.pending.PendingActionsSendingService" />
<service android:name="co.ravesocial.sdk.service.RaveSkinUnzippingService" />

These services have been fully removed and are now handled internally using WorkManager.

RaveScheduler and ScheduledTask Removal#

  • RaveScheduler and ScheduledTask have been fully removed from the SDK, as they are no longer needed with the WorkManager-based architecture.

4.3.3 Upgrade Notes#

Migration to Credential Manager for Google Sign-In#

RaveGooglePlugin module now supports the modern Credential Manager API, recommended by Google for handling federated authentication like Sign-In with Google.

Dependency Updates#

The following dependencies are now required to support the updated sign-in flow:

// Provides a unified interface for credential management
implementation "androidx.credentials:credentials:1.5.0"
// Needed for credentials support from Play Services (Android 13 and below)
implementation "androidx.credentials:credentials-play-services-auth:1.5.0"
// Provides classes for managing Google ID tokens
implementation "com.google.android.libraries.identity.googleid:googleid:1.1.1"
// Authorize access to Google user data
implementation "com.google.android.gms:play-services-auth:21.3.0"

Why is this required?

  • These libraries integrate the Credential Manager framework with Google Identity Services.

  • This allows for a secure and consistent sign-in experience across Android versions.

Migration Instructions#

  • No changes are required in app logic if you already use Rave’s RaveGooglePlugin module.

  • Just ensure the updated dependencies are included in your app’s build.

  • Backend token verification remains unchanged.

RaveGooglePlugin now provides a future-proof, Google-recommended sign-in experience.

4.3.1 Upgrade Notes#

Restoration of Login Status Listener Behavior#

  • The behavior of RaveLoginStatusListener during SDK initialization has been restored to match pre-4.3.0 behavior.

  • The listener will now trigger only once during initialization, maintaining compatibility with existing integrations.

  • If tracking when the user syncs with the server post sdk init is required, developers can use RaveUsers.addCurrentUserObserver.

Deprecations#

Deprecated Login Listener Status Values#

The following values in RaveLoginStatusListener.RaveLoginStatus are deprecated and will be removed in a future release:

  • ERROR

  • NONE

These values haven’t been used since SDK 3.x and are no longer referenced by the SDK. If your code includes references to these values, they can now be safely removed. Clean-up is encouraged, as they will be fully removed in a future version.

Parameter deprecation in Login Listener#

  • The exception parameter in RaveLoginStatusListener.onLoginStatusChanged is now always null and should be ignored.

  • In a future version, this parameter will be removed from the method signature.

Dependency Update#

The SDK now requires the AndroidX Preference Library.

  • If your project does not already include it, you may need to add the following dependency:

    implementation 'androidx.preference:preference:1.2.1'
    

    Why is this required?

    • The SDK now uses the modern AndroidX preference system instead of legacy APIs to manage user settings.

    • This ensures better support for devices running API level 23+ and future-proofs the SDK for upcoming Android releases.

4.3.0 Upgrade Notes#

SDK Initialization Changes#

SDK initialization is now performed without requiring immediate network calls, improving startup time, especially in poor network conditions.

Impact on Login Listener Behavior#

  • Previously, RaveLoginStatusListener was triggered once during initialization due to a blocking network request.

  • New behavior:

    • The SDK first initializes in offline mode, triggering the login listener immediately, even before the server updates user data.

    • A second callback now occurs when the server finishes updating the user state.

  • If your implementation relies on a single callback, you may need to adjust your logic.

Removal of NetworkAvailableBroadcastReceiver#

  • The SDK no longer includes NetworkAvailableBroadcastReceiver.

  • Network connectivity is now handled using Android’s modern ConnectivityManager.NetworkCallback.

  • If your project references this API, you will need to migrate to the new approach.

v4.2.13 Upgrade Notes#

The deprecated method RaveContacts.setPhoneBookAutoUpdate was removed. Ensure you update your code to use the phonebook plugin instead.

v4.2.0 Upgrade Notes#

  • The SDK now handles all operations, including initialization, asynchronously. To adapt to this change, ensure that your codebase can handle asynchronous operations.

  • All SDK public method callbacks now execute within the same thread as the original calls, ensuring thread safety and predictable behavior. Review your callback implementations to ensure they remain compatible with this behavior.

  • If your application uses custom connect plugins, note that token storage v3 migration method has been removed, it now happens as part of the plugin token retrieval, so remove any calls to migrateV2TokenStorage.

  • Several settings have been deprecated as of version 2.8.0 and have now been removed from the SDK. To ensure your code works with the latest version, update your settings usage as follows:

Deprecated/Removed Setting

Replacement Setting

RaveSettings.RaveAndroidUseDialogOverlay

RaveSettings.Android.DialogOverlay

RaveSettings.RaveApplicationID

RaveSettings.General.ApplicationID

RaveSettings.RaveServerURL

RaveSettings.General.ServerURL

RaveSettings.RaveAutoSyncInterval

RaveSettings.General.AutoSyncInterval

RaveSettings.RaveAutoGuestLogin

RaveSettings.General.AutoGuestLogin

RaveSettings.RaveAutoCrossAppLogin

RaveSettings.General.AutoCrossAppLogin

RaveSettings.RaveLogLevel

RaveSettings.General.LogLevel

RaveSettings.RaveAllowForceDisconnect

RaveSettings.General.AllowForceDisconnect

RaveSettings.RaveAutoInstallConfigUpdates

RaveSettings.General.AutoInstallConfigUpdates

RaveSettings.RaveNetworkTimeout

RaveSettings.General.NetworkTimeout

RaveSettings.RaveConfigUpdateInterval

RaveSettings.General.ConfigUpdateInterval

RaveSettings.RaveThirdPartySource

RaveSettings.General.ThirdPartySource

RaveSettings.RaveDefaultResourcesPath

RaveSettings.General.DefaultResourcesPath

RaveSettings.RaveAutoSendGiftOnGrantedRequest

RaveSettings.General.AutoSendGiftOnGrantedRequest

RaveSettings.RaveSceneServerHost

RaveSettings.General.SceneServerHost

RaveSettings.RaveFBApplicationId

RaveSettings.Facebook.ApplicationId

RaveSettings.RaveFBReadPermissions

RaveSettings.Facebook.ReadPermissions

RaveSettings.RaveFBAlwaysUseLiveContacts

RaveSettings.Facebook.AlwaysLiveContacts

RaveSettings.RaveIOSBundleName

RaveSettings.IOS.BundleName

RaveSettings.RaveInitGameCenterOnStartUp

RaveSettings.IOS.InitGameCenterOnStartUp

RaveSettings.RaveIOSUseIDFAForDeviceID

RaveSettings.IOS.IDFAForDeviceID

v4.1.0 Upgrade Notes#

  • Android API 34 support has been added. Ensure your project targets API 34, update dependencies, and test for compatibility.

  • We replaced Facebook publishing with Facebook Share API. If your app relied on the publishing API, please update it accordingly.

  • The Twitter integration was completely removed. Make sure to remove any code related to Twitter integration, as it is no longer supported.

  • The RaveFriends, RaveFollowers, and user blocking methods convenience classes have been deprecated. Please refactor your code to replace the usage of RaveFriends and RaveFollowers with alternative approaches for similar functionality, such as contacts v1 methods.

  • The RaveSocial’s FileCripter has been removed. If your application relied on RaveSocial’s FileCripter, implement an alternative solution for file encryption and decryption.

v4.0.0 Upgrade Notes#

We increased the Android SDK min version, make sure now your app supports at least API 19.

Some of the util classes were removed from the core SDK, if your app was relying on that, please update accordingly.

The manifest permissions were also cleaned up to reduce the amount of permissions required for the SDK to work.

The following deprecated settings has been removed:

  • RaveSettings.General.DefaultNewUserName

  • RaveSettings.RaveFBAutoUpdateContactsOnConnect (replaced by RaveSettings.General.AutoSyncFriends)

  • RaveSettings.General.PhoneContactsUpdateInterval (replaced by RaveSettings.General.ContactsUpdateInterval)

  • RaveSettings.Google.ContactsUpdateInterval (replaced by RaveSettings.General.ContactsUpdateInterval)

  • RaveSettings.Facebook.ContactsUpdateInterval (replaced by RaveSettings.General.ContactsUpdateInterval)

v3.13.1 Upgrade Notes#

We removed the dependency on android-priority-jobqueue library in favor of WorkManager, the official deferred task library for Android.

If your project had previously included com.birbit:android-priority-jobqueue dependency as a Rave dependency you can safely remove it.

Add both androidx.security:security-crypto and androidx.work:work-runtime dependencies to your build.gradle.

v3.9.15 Upgrade Notes#

  • The SDK now handles all operations, including initialization, asynchronously. To adapt to this change, ensure that your codebase can handle asynchronous operations.

  • All SDK public method callbacks now execute within the same thread as the original calls, ensuring thread safety and predictable behavior. Review your callback implementations to ensure they remain compatible with this behavior.

v3.6.1 Upgrade Notes#

We removed all the dependencies on external storage from the Rave SDK for Android. That means unless your app requires external storage for some other reason, you should be able to remove the following permissions from your AndroidManifest.xml:

<uses-permission android:name=”android.permission.WRITE_EXTERNAL_STORAGE” /> <uses-permission android:name=”android.permission.READ_EXTERNAL_STORAGE” />

v3.5.1 Upgrade Notes#

The Rave Android SDK is now packaged in Android Archive (AAR) format. Remove any Rave submodules and jars from your project and compile the Rave AAR libraires by copying them from the SDK distribution ZIP into your project’s “libs” directory and adding the following to the dependencies section of your app’s build.gradle:

dependencies {
    ...
    compile(name: "RaveSocial", ext: "aar")
    compile 'com.facebook.android:facebook-android-sdk:4.25.0'
    compile(name: "RaveFacebookPlugin", ext: "aar")
    compile 'com.google.android.gms:play-services-identity:11.0.4'
    compile 'com.google.android.gms:play-services-auth:11.0.4'
    compile 'com.google.android.gms:play-services-plus:11.0.4'
    compile(name: "RaveGooglePlugin", ext: "aar")
    compile project(':BigFishScenePack')
    ...
}

Add a “flatDir” to the repositories section so the Gradle plugin can locate “libs” directory:

repositories {
    ...
    flatDir {
        dirs 'libs'
    }
    ...
}

If your project contains submodules for Facebook or Google SDKs you can remove them and let the Android Gradle Plugin resolve them.

For Unity projects, copy the Rave AAR libaries from the distribution ZIP into Assets/Plugins/Android/, or reimport the Rave Unity asset package. The Unity demo now builds and runs from within the Unity editor using the internal Android build system. Also, the Unity demo project now includes it’s own user.keystore for Android builds. Both store and key passwords are “bfcdemo”.

v3.01 Upgrade Notes#

There are minor but sweeping changes to some basic methods in the RaveSocial API. If you’re using the scene pack as the front-end to your integration you should be largely unaffected. If, however, you’re using login and other APIs directly there are some important changes to consider.

More listeners have been simplified to RaveCompletionListener. That means that success is represented by a null result for the exception. User cancellation is now representated by an instance of RaveCanceledException. Notable instances where the listener changed are RaveSocial.loginWith(), RaveSocial.connectTo(), RaveSocial.disconnectFrom().

Constants for referring to social network providers have been changed (e.g. Constants.SOCIAL_PROVIDER_FACEBOOK is now RaveConstants.CONNECT_PLUGIN_FACEBOOK). Some methods that referred to providers in their name now refer instead to plugins to more accurately reflect the extensible nature of Rave.

v2.8 Upgrade Notes#

Considerations for upgrading the Rave SDK for an Android project include changes to a number of scene listeners, removal of the Settings Scene, and minor changes to the gifting API.

  • NOTICE: Both Google and Facebook SDKs have been updated to their respective latest versions as of July 2014.

  • LoginSceneListener and AccountInfoSceneListener - onSceneComplete() - Additional boolean parameter canceled as well as some other parameters have been added. The canceled parameter is used to determine if a scene was successfully completed or canceled/backed out of.

  • SettingsScene - This scene has been completely removed and all of its functionality has been merged into RaveAccountInfoScene, which previously inherited its functionality

  • RaveGifts.sendGiftWithKeyToContactsAndShareVia() - The interactive boolean parameter for this function has been removed. The functionality it provided has been made automatic.

Additional considerations specific to Big Fish Games are listed below.

  • BigFishActivity.reportUserPicture() - This static function has been moved from BigFishActivity, which no longer exists in the scene pack, to BigFishScenePack.java.

  • BigFishMessageAlertDialogBuilder and all other dialog classes have been removed. Built-in platform dialogs are now the standard for all BigFish dialogs.

  • BigFishDialogScene.DismissHandler.onDismiss() - Additional boolean parameter canceled has been added. This additional parameter is used to determine if a scene was successfully completed or canceled/backed out of. o

Using Facebook Tokens From Previous Non-Rave Integration#

Rave will automatically find and use an active Facebook session on startup if the session was created using the default session storage in the Facebook SDK. If the session did not use default storage, Rave provides an API which can be used to set the token to use. When using the explicit token setting method, it should only be used once so an integrator should delete the token from local storage once handed off to Rave for initialization. Either method will result in an automatic login to Rave either for the existing user linked to the Facebook account or a new Rave user will be created and linked to the Facebook account.

Explicit Token Setting Method#

Use the AuthenticationManager to get the Facebook Login Provider and set the token directly:

FacebookLoginProvider fbLoginProvider = new FacebookLoginProvider(context);
fbLoginProvider.useTokenForRaveUpgrade(myToken);
RaveSocial.addLoginProvider(fbLoginProvider);

This must be called before Rave initialization. The easiest location to set this is usually in the ScenePack class unless Rave is being used without a ScenePack.

Note

The explicit token method only works on Android for users having the Facebook app installed.