View on GitHub

sensibill-android-documentation

Migration Guide

  1. Migration from 1.22.x to 1.23.0
  2. Migration from 1.21.1 to 1.22.0
  3. Migration from 1.20.0 to 1.21.1
  4. Migration from 1.20.x to 1.21.0
  5. Migration from 1.19.x to 1.20.x
  6. Migration from 1.14.x to 1.20.x
  7. Migration from 1.16.x to 1.19.x
  8. Migration from 1.14.x to 1.16.x
  9. Migration from 1.13.x to 1.14.x

1.22.x to 1.23.0

AndroidX is a major improvement to the original Android Support Library, which is no longer maintained. androidx packages fully replace the Support Library by providing feature parity and new libraries. Reference

It is recommended to use official guides when making migrating to AndroidX. The following links are a good start:

AndroidX Overview - https://developer.android.com/jetpack/androidx

Migrating to AndroidX - https://developer.android.com/jetpack/androidx/migrate

Before:

myTransactionDataObserver = TransactionDataObserver { transaction ->
            when (transaction.status) {
                // ...
            }
        }

After:

myTransactionDataObserver = TransactionDataObserver.fromLambda { transaction ->
            when (transaction.status) {
                // ...
            }
        }

Note: Due to our Kotlin conversion, tighter restrictions are now placed on Nullability in some interfaces. For example, the transaction parameter that comes in the notify method is now non-null.

Before:

 myTokenProvider = TokenProvider { oldToken, userId, listener ->
            // ...
        }

After:

 myTokenProvider = TokenProvider.fromLambda { oldToken, userId, listener ->
            // ...
        }
val builder = InitializationBuilder(context, DefaultEnvironment.BETA_SANDBOX)
    .certificatePinning(false)
    .build()
SensibillSDK.initialize(builder, ...)

And for SensibillAuth as follows:

val auth = SensibillAuthBuilder(context, sensibill_env, oauthSettings)
    .certificatePinning(false)
    .build()

1.21.1 to 1.22.0

Will run into a build time error More than one file was found with OS independent path 'META-INF/proguard/coroutines.pro if using a build tool less than 3.5.3.

Note: If updating the gradle version is not possible, adding the following rule to your build.gradle can potentially mitigate the issue:

android {
...
    packagingOptions {
        pickFirst('META-INF/proguard/coroutines.pro')
    }
...
}

1.21.0 to 1.21.1

1.20.x to 1.21.0

1.19.x to 1.20.x

1.14.x to 1.20.x

Build Dependency Changes

Package / Class Name Change

Deprecated Function

1.16.x to 1.19.x

1.14.x to 1.16.x

Build Dependency Changes

Package / Class Name Change

1.14.x 1.16.x
com.getsensibill.oauthclient.OauthUser com.getsensibill.oauthclient.OauthSession

Deprecated Function

Deprecated function Reason
InitializationBuilder.transactionDataObserver Transaction Data Observer is no longer added to the InitializationBuilder. Added to SensibillSDK directly (SensibillSDK.addTransactionDataObserver())
InitializationBuilder.receiptDataObserver Receipt Data Observer is no longer added to the InitializationBuilder. Added to SensibillSDK directly (SensibillSDK.addReceiptDataObserver())

Notes for Migration

before:

        // Create Observers
        myTransactionDataObserver = MyTransactionDataObserver()
        myReceiptDataObserver = MyReceiptDataObserver()

        // Add to initializer
        initializationBuilder.transactionDataObserver(myTransactionDataObserver)
        initializationBuilder.receiptDataObserver(myReceiptDataObserver)

        // Initialize
        mInitializer = initializationBuilder.build()
        SensibillSDK.getInstance().initialize(mInitializer)

after:

        // Create Observers
        myTransactionDataObserver = MyTransactionDataObserver()
        myReceiptDataObserver = MyReceiptDataObserver()

        // Initialize
        SensibillSDK.getInstance().initialize(mInitializer)

        // Add to SDK
        SensibillSDK.addTransactionDataObserver(myTransactionDataObserver)
        SensibillSDK.addReceiptDataObserver(myReceiptDataObserver)
SensibillSDK.removeTransactionDataObserver(myTransactionDataObserver)
SensibillSDK.removeReceiptDataObserver(myReceiptDataObserver)

1.13.x to 1.14.x

Feature Added

ReceiptCaptureActivityBuilder used to create intent for ReceiptCapture

Function Name Change

Old Function Name New Function Name
OAuthSettings.getApikey() OAuthSettings.getApiKey()
SensibillSDK.getInstance() SensibillSDK.INSTANCE (in Java)

Package / Class Name Change

Migration to core module

1.13.x 1.14.x
com.getsensibill.sensibillsdk.interfaces.OnTrackEventListener com.getsensibill.core.analytic.OnTrackEventListener
com.getsensibill.sensibillsdk.tracker.events.AnalyticsEvent com.getsensibill.core.analytic.OnTrackEventListener
com.getsensibill.sensibillsdk.utilities.base.ActivityLifecycleListener com.getsensibill.core.ActivityLifecycleListener
com.getsensibill.sensibillsdk.interfaces.TokenProvider com.getsensibill.tokenprovider.TokenProvider
com.getsensibill.sensibillsdk.utilities.Transaction com.getsensibill.core.analytic.Transaction
com.getsensibill.sensibillsdk.utilities.TransactionDataObserver com.getsensibill.core.TransactionDataObserver
com.getsensibill.sensibillsdk.InitializationBuilder com.getsensibill.core.InitializationBuilder
com.getsensibill.sensibillsdk.Initializer com.getsensibill.core.Initializer
com.getsensibill.sensibillsdk.SensibillSDK com.getsensibill.core.SensibillSDK
com.getsensibill.sensibillsdk.interfaces.LoginError com.getsensibill.core.LoginError
com.getsensibill.sensibillsdk.interfaces.SDKStartup com.getsensibill.core.SDKStartup

Migration to UI module

1.13.x 1.14.x
com.getsensibill.sensibillsdk.SBMainTabsFragment com.getsensibill.ui.SBMainTabsFragment
com.getsensibill.sensibillsdk.receipt.capture.ReceiptCaptureActivity com.getsensibill.ui.receipt.capture.ReceiptCaptureActivity
com.getsensibill.sensibillsdk.receipt.controllers.detail.ReceiptDetailActivity com.getsensibill.ui.receipt.controllers.detail.ReceiptDetailActivity
com.getsensibill.sensibillsdk.receipt.controllers.detail.ReceiptDetailActivity com.getsensibill.ui.receipt.controllers.detail.ReceiptDetailActivity

Deprecated Function

SensibillSDK.isInitialized() - removed, now use SensibillSDK.state() to check state of SDK. Check migration notes for details

SensibillSDK.login() - removed, replaced to use SensibillSDK.start(). Check migration notes for details

Notes for migration

Update Package Names
SensibillSDK object
SensibillSDK.verifyToken removed
SensibillSDK.login(accessToken, username, cb) -> ‌SensibillSDK.start(username, cb)
SensibillAuth.startLibrary()
Authentication
TokenProvider is the only way to Initialization

before:

     mSensibillAuth.startLibrary(mInitializer, username, listener)

after:

     if (SensibillSDK.getState() == CoreState.INITIALIZED) {
         SensibillSDK.start(username, listener)
     }