Installation

This guide shows you how to install and import the Bazaarvoice Mobile SDK into your Android app.

Prerequisites

  • Signed Data Usage Amendment, if not already in place
  • Minimum Android deployment target of 5.0 (API Level 21)
  • Android Studio
  • Your Client ID
  • API key(s) for Bazaarvoice products you have enabled

Versioning

The Mobile SDK for Android is versioned so that we can release new features, bug fixes and improvements without compromising the stability of applications using older versions.

This table summarises the major version releases. For more information refer to the Mobile SDK for Android Github repo.

Version Release Date Status
1 Jul 26, 2012 Deprecated
2 Jan 31, 2013 Deprecated
3 Mar 8, 2016 Deprecated
4 May 4, 2016 Deprecated
5 Oct 31, 2016 Supported
6 Jan 23, 2017 Supported
7 June 18, 2018 Supported
8 October 1st, 2018 Supported
8.16.0 May 23rd, 2024 Latest

Deprecated

These versions should not be expected to return data and/or may experience service degradation. Documentation specific to these versions may no longer be available. These versions should not be used by any applications.

Supported

Supported versions continue to receive security and bug fixes, but applications using these versions should be upgraded to the latest version when possible to take advantage of new features. New applications should not use these versions.

Latest

This is newest version. New applications SHOULD use the most recent release of this version.

Installing with Gradle

📘

For manual installation using archive builds (.aar), use the latest archive version on the BVSDK Maven repository.

Add the following dependencies to include the Maven Central repository and add Bazaarvoice Mobile SDK modules. You only need to add the dependencies for the products you have an API key for.

dependencies {  
  implementation 'com.bazaarvoice.bvandroidsdk:analytics:{BV_SDK_VERSION}.+'  
  implementation 'com.bazaarvoice.bvandroidsdk:auth-iovation:{BV_SDK_VERSION}.+'  
  implementation 'com.bazaarvoice.bvandroidsdk:conversations:{BV_SDK_VERSION}.+'  
  implementation 'com.bazaarvoice.bvandroidsdk:curations:{BV_SDK_VERSION}.+'  
  implementation 'com.bazaarvoice.bvandroidsdk:curations-ui:{BV_SDK_VERSION}.+'  
  implementation 'com.bazaarvoice.bvandroidsdk:location:{BV_SDK_VERSION}.+'  
  implementation 'com.bazaarvoice.bvandroidsdk:recommendations:{BV_SDK_VERSION}.+'  
  implementation 'com.bazaarvoice.bvandroidsdk:store-notifications:{BV_SDK_VERSION}.+'
  implementation 'com.bazaarvoice.bvandroidsdk:common:{BV_SDK_VERSION}.+' 
}  
repositories {  
  mavenCentral()  
}

Replace the {tokens}, including brackets, with the appropriate values. Refer to the Installation guide for {BV_SDK_VERSION}.

Downloading the iovation SDK

Refer to the Device Fingerprinting topic to download and add the iovation SDK to your project. This SDK is required to ensure authenticity in user-generated content.


Configuring the BVSDK

Once you have installed the source code for the SDK, you are now ready to initialize the BVSDK with your API key(s) and environment (staging versus production).

1. Select configuration options

The table below will generate a configuration file for your SDK. The values you set will generate the necessary script and Mobile SDK intialization code to get you up and running quickly.

Each client application should have its own API key. If you need to generate a new key for Conversations please see Conversations Requesting API Keys.

For all other API keys or if you don't know your client ID, contact Bazaarvoice Support or your implementation team.


Products Production Staging
Curations
Conversations
Conversations for Stores
Product Recommendations & Advertising
Analytics Locale

📘

Enter your Client ID and at least one API key.

Download your configurations and add them to your assets directory.

Once this is done you may proceed to step 2.

2. Initialize the BVSDK

Create a class that extends android.app.Application, and initialize the Mobile SDK using its builder.

You can find a full list of build options in BVSDK.java.

      public class MyApplication extends Application {
        @Override
        public void onCreate(){
          super.onCreate();
          // BazaarEnvironment.PRODUCTION reads from bvsdk_config_prod.json
          // BazaarEnvironment.STAGING reads from bvsdk_config_staging.json
          BVSDK.builder(application, BazaarEnvironment.PRODUCTION)
            .logLevel(BVLogLevel.VERBOSE) // Optional: Set the log level. Default level is ERROR.
            .dryRunAnalytics(false)       // Optional: Set analytics to log only, not make a network request. Default is false.
            .okHttpClient(okHttpClient)   // Optional: Use you own okHttpClient instance
            .build();
        }
      }

App manifest file

Add the following to your AndroidManifest.xml file.

<!-- set the name of the class for the application entry -->
<application
  android:name=".MyApplication">
</application>

Bazaarvoice SDK dependencies

In case your app and our SDK use different versions of the same dependencies, we have compiled a list of the dependencies each of our modules has below to help debug.

If your app pulls in any com.android.support, com.google.android.gms, or com.gimbal.android.v2 modules, it would be best for you to look at the specific modules that we request from those packages below. Redeclare them in your build.gradle with the explicit version you would like. This will avoid any 'duplicate class' issues while compiling.

Analytics

 implementation "com.squareup.okhttp3:okhttp:X.X.X"
 implementation "com.google.android.gms:play-services-ads:X.X.X"
 implementation "com.android.support:support-annotations:X.X.X"

Common

Inherits from analytics, and adds:

implementation "com.google.code.gson:gson:X.X.X"
implementation "com.android.support:recyclerview-v7:X.X.X"

Advertising

Inherits from common, no additional dependencies.

Auth-Iovation

Inherits from conversations, and adds:

implementation('com.iovation.fraudforce.lib.FraudForce:fraudforce-lib-release-X.X.X:X.X.X@aar')

Conversations

Inherits from common, no additional dependencies.

Curations

Inherits from common, no additional dependencies.

Location

Inherits from common, and adds:

implementation "com.gimbal.android.v2:gimbal-sdk:X.X"
implementation "com.gimbal.android.v2:gimbal-slf4j-impl:X.X"
implementation "com.android.support:appcompat-v7:X.X.X"

Notifications

Inherits from common, and adds:

 implementation "com.android.support:appcompat-v7:X.X.X"

Recommendations

Inherits from common, no additional dependencies.

Store notifications

Inherits from location, notifications, and conversations. No additional dependencies.


Shrink, Obfuscate, and Optimize your App

Users often avoid downloading apps that seem too large. To help you reduce size of the app, Bazaarvoice Android SDK has now added support for R8 compiler to shrink, obfuscate and optimize your app.

When you set the minifyEnabled property to true, R8 perform these tasks for your project's release build type. This property is available in the app's build.gradle file as shown in the below code snippet:

When set to true, the R8 compiler removes some of the unused code. However, some situations are difficult for R8 to analyze correctly and it might remove code your app actually needs. To fix errors and force R8 to keep certain code, add a [-keep](https://www.guardsquare.com/manual/configuration/usage#keepoptions) line in the ProGuard rules file.

buildTypes {  
    release {  
        minifyEnabled true  
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'  
    }  
}

The Bazaarvoice Android SDK will configure its Proguard rules using proguard-rules.txt where the keep rules for BVConversations module are defined. Those keep rules tell R8 to not only keep that code in your app's final DEX but also retain its original naming. This is required to preserve the method/field (and its name) as well as the class name intact, and avoid incorrect obfuscation and errors while using BVConversations module.

Completing installation

After you've completed the above steps, the Bazaarvoice Mobile SDK should be configured and installed. If you encounter difficulties, contact Bazaarvoice Support or your implementation team.