---
title: "Nutrient 3 migration guide"
canonical_url: "https://www.nutrient.io/guides/android/migration-guides/pspdfkit-3-migration-guide/"
md_url: "https://www.nutrient.io/guides/android/migration-guides/pspdfkit-3-migration-guide.md"
last_updated: "2026-06-09T10:25:14.340Z"
description: "Follow this guide to smoothly transition from version 2.x to 3.0 of the Nutrient Android SDK, featuring key updates and new initialization processes."
---

# Migrate to Nutrient 3.0 with ease

This article provides a set of guidelines to migrate from version 2.x to version 3.0 of Nutrient Android SDK. It also highlights the biggest changes and features introduced in this milestone version.

## Initialization

We’ve simplified the way to initialize the Nutrient framework by removing the license key from configuration files and passing it through the bundle to the fragment. Instead of having to pass the license key as part of [`PdfConfiguration`](https://www.nutrient.io/api/android/nutrient/com.pspdfkit.configuration/-pdf-configuration/index.html) or [`PdfActivityConfiguration`](https://www.nutrient.io/api/android/nutrient/com.pspdfkit.configuration.activity/-pdf-activity-configuration/index.html), the framework will now be initialized automatically by reading the license key from your `AndroidManifest.xml` file.

To migrate from previous solution, add a `<meta-data android:name="nutrient_license_key">` tag to your `AndroidManifest.xml` file and change `PSPDFActivityConfiguration.Builder` to `PdfActivityConfiguration.Builder` without the license key parameter:

```xml

<application..>

    <meta-data
        android:name="nutrient_license_key"
        android:value="license_goes_here"/>

</application>

```

The framework will then run the initialization process for you before the applications starts. If you still want to do it manually with [`PSPDFKit.initialize()`](https://www.nutrient.io/api/android/nutrient/com.pspdfkit/-nutrient/initialize.html), you’re free to do so — just omit the `<meta-data>` tag. However, due to changed configuration objects, you _must_ call the initialization method before using Nutrient calls if you do not want to use the `<meta-data>` approach.

Read more about initialization in the [integrating Nutrient](https://www.nutrient.io/sdk/android/getting-started.md) guide.

## Renamed classes

We dropped the `PSPDF` prefix from all our classes to be more in line with standard Android and Java APIs. We also changed capitalization to be in line with standard Android APIs — as such, `PSPDFDocument` became `PdfDocument`, `PSDPDFActivity` is now `PdfActivity`, `PSPDFFragment` is now `PdfFragment`, etc. All other classes have been renamed in similar way. The full list can be found at the [end of this guide](#list-of-renamed-classes).

## Updated dependencies

We’ve updated RxJava to 2.0.8 and RxAndroid to 2.0.1. All public-facing methods are now using the new RxJava 2 types of Observable, Flowable, Single, and Completable. RxJava 2.0 is more performant and brings future proofing as a benefit. For a comprehensive overview of the changes in RxJava 2, have a look at [the official RxJava 2 documentation](https://github.com/ReactiveX/RxJava/wiki).

If you’re using the recommended Maven repository approach to add Nutrient to your project, you don’t have to do anything — the dependency will be updated automatically.

You must first [log in to the Nutrient Portal](https://my.nutrient.io/users/sign_in) before accessing the Maven repository.

If you’re not using our Maven repository, make sure you update dependencies to the new version:

```groovy

    implementation 'io.reactivex.rxjava2:rxjava:2.0.8'
    implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'

```

If you must translate Nutrient RxJava 2.0 calls into RxJava 1.0-compatible calls, you can use the [RxJava2Interop](https://github.com/akarnokd/RxJava2Interop) library.

## New activity Initialization

Starting `PdfActivity` is now encouraged through the use of the new `PdfActivityIntentBuilder` class, which replaces the old `PSPDFActivity.IntentBuilder` class. Most of the static `PSPDFActivity#showDocument()` calls — with the exception of two of the most used ones — have been removed in favor of using the intent builder.

Example:

### KOTLIN

```kotlin

val intent = PdfActivityIntentBuilder.fromUri(context, documentUri).configuration(config).activity(CustomActionsActivity.class).passwords("some_password").contentSignatures("some_doc_signature").build()

context.startActivity(intent)

```

### JAVA

```java

final Intent intent = PdfActivityIntentBuilder.fromUri(context, documentUri).configuration(config).activity(CustomActionsActivity.class).passwords("some_password").contentSignatures("some_doc_signature").build();

context.startActivity(intent);

```

See our [PdfActivity](https://www.nutrient.io/guides/android/basics/using-activity.md) guide for more details.

## Opening documents

We’ve moved `PSPDFKit.openDocument` calls to the [`PdfDocument`](https://www.nutrient.io/api/android/nutrient/com.pspdfkit.document/-pdf-document/index.html) class:

### KOTLIN

```kotlin

// Old call.
val document = PSPDFKit.openDocument(context, documentUri);

// New call.
val document = PdfDocument.openDocument(context, documentUri);

```

### JAVA

```java

// Old call.
PSPDFDocument document = PSPDFKit.openDocument(context, documentUri);

// New call.
PdfDocument document = PdfDocument.openDocument(context, documentUri);

```

`PSPDFKit.invalidatePageCache` and `PSPDFKit.invalidateDocumentCache` have also moved to a more natural location inside the [`PdfDocument`](https://www.nutrient.io/api/android/nutrient/com.pspdfkit.document/-pdf-document/index.html) class. They are now named [`PdfDocument#invalidateCache()`](https://www.nutrient.io/api/android/nutrient/com.pspdfkit.document/-pdf-document/invalidate-cache.html) and [`PdfDocument#invalidateCacheForPage(pageIndex)`](https://www.nutrient.io/api/android/nutrient/com.pspdfkit.document/-pdf-document/invalidate-cache-for-page.html).

## List of Renamed classes

- `PSPDFActivity` → `PdfActivity`

- `PSPDFDocument` → `PdfDocument`

- `PSPDFFragment` → `PdfFragment`
  - `convertViewRectToPDFRect()` → `convertViewRectToPdfRect()`
  - `convertPDFRectToViewRect()` → `convertPdfRectToViewRect()`
  - `convertViewPointToPDFPoint()` → `convertViewPointToPdfPoint()`
  - `convertPDFPointToViewPoint()` → `convertPdfPointToViewPoint()`
  - `getVisiblePDFRect()` → `getVisiblePdfRect()`

- `PSPDFPreferences` → `PSPDFKitPreferences`

- `PSPDFDocumentMetadata` → `DocumentMetadata`

- `PDFVersion` → `PdfVersion`

- `PSPDFTextBlock` → `TextBlock`

- `PSPDFLibrary` → `PdfLibrary`

- `PSPDFAnnotationManager` → `AnnotationManager`

- `PSPDFProcessor` → `PdfProcessor`

- `PSPDFProcessorTask` → `PdfProcessorTask`

- `PSPDFProcesorException` → `PdfProcessorException`

- `PSPDFSearchOptions` → `SearchOptions`

- `PSPDFSearchResult` → `SearchResult`

- `PSPDFTextSearch` → `TextSearch`

- `PSPDFException` → `PSPDFKitException`

- `PSPDFNotInitializedException` → `PSPDFKitNotInitializedException`

- `PSPDFInitializationFailedException` → `InitializationFailedException`

- `PSPDFInvalidLayoutException` → `InvalidLayoutException`

- `PSPDFInvalidLayoutException` → `InvalidLayoutException`

- `PSPDFInvalidPasswordException` → `InvalidPasswordException`

- `PSPDFInvalidSignatureException` → `InvalidSignatureException`

- `PSPDFMissingDependencyException` → `MissingDependencyException`

- `PSPDFYouTubeActivity` → `PdfYouTubeActivity`

- `PSPDFDrawableManager` → `PdfDrawableManager`

- `PSPDFDrawableProvider` → `PdfDrawableProvider`

- `PSPDFDrawable` → `PdfDrawable`

- `PSPDFOutlineView` → `PdfOutlineView`

- `PSPDFThumbnailBar` → `PdfThumbnailBar`

- `PSPDFThumbnailGrid` → `PdfThumbnailGrid`

- `PSPDFSearchView` → `PdfSearchView`

- `PSPDFViews` → `PSPDFKitViews`

- `PdfActivity#getPSPDFViews()` → `PdfActivity#getPSPDFKitViews()`

- `PDFUtils` → `PdfUtils`
  - `createPDFRectUnion()` → `createPdfRectUnion()`

- `PagePDF` → `PagePdf`

- `PDFBox` → `PdfBox`

- `URIAction` → `UriAction`

- `HUDViewMode` → `HudViewMode`

- `PSPDFDocumentEditor` → `PdfDocumentEditor`

- `PSPDFDocumentEditorListener` → `PdfDocumentEditorListener`

- `PSPDFDocumentEditorListenerCallbacks` → `PdfDocumentEditorListenerCallbacks`
---

## Related pages

- [10 3 Migration Guide](/guides/android/migration-guides/10-3-migration-guide.md)
- [10 4 Migration Guide](/guides/android/migration-guides/10-4-migration-guide.md)
- [10 5 Migration Guide](/guides/android/migration-guides/10-5-migration-guide.md)
- [2024 9 Migration Guide](/guides/android/migration-guides/2024-9-migration-guide.md)
- [2024 8 Migration Guide](/guides/android/migration-guides/2024-8-migration-guide.md)
- [Pspdfkit 2 1 Migration Guide](/guides/android/migration-guides/pspdfkit-2-1-migration-guide.md)
- [Migrate to electronic signatures](/guides/android/migration-guides/migrating-to-electronic-signatures.md)
- [Nutrient 10 Migration Guide](/guides/android/migration-guides/nutrient-10-migration-guide.md)
- [Pspdfkit 2024 2 Migration Guide](/guides/android/migration-guides/pspdfkit-2024-2-migration-guide.md)
- [Pspdfkit 2024 1 Migration Guide](/guides/android/migration-guides/pspdfkit-2024-1-migration-guide.md)
- [Pspdfkit 2024 3 Migration Guide](/guides/android/migration-guides/pspdfkit-2024-3-migration-guide.md)
- [Pspdfkit 2024 4 Migration Guide](/guides/android/migration-guides/pspdfkit-2024-4-migration-guide.md)
- [Pspdfkit 2024 7 Migration Guide](/guides/android/migration-guides/pspdfkit-2024-7-migration-guide.md)
- [Pspdfkit 2024 6 Migration Guide](/guides/android/migration-guides/pspdfkit-2024-6-migration-guide.md)
- [Pspdfkit 4 4 Migration Guide](/guides/android/migration-guides/pspdfkit-4-4-migration-guide.md)
- [Pspdfkit 3 1 Migration Guide](/guides/android/migration-guides/pspdfkit-3-1-migration-guide.md)
- [Pspdfkit 5 1 Migration Guide](/guides/android/migration-guides/pspdfkit-5-1-migration-guide.md)
- [Pspdfkit 5 2 Migration Guide](/guides/android/migration-guides/pspdfkit-5-2-migration-guide.md)
- [Pspdfkit 5 3 Migration Guide](/guides/android/migration-guides/pspdfkit-5-3-migration-guide.md)
- [Pspdfkit 6 1 Migration Guide](/guides/android/migration-guides/pspdfkit-6-1-migration-guide.md)
- [Pspdfkit 5 5 Migration Guide](/guides/android/migration-guides/pspdfkit-5-5-migration-guide.md)
- [Migration guide for Android SDK 4 features](/guides/android/migration-guides/pspdfkit-4-migration-guide.md)
- [Pspdfkit 6 3 Migration Guide](/guides/android/migration-guides/pspdfkit-6-3-migration-guide.md)
- [Pspdfkit 6 2 Migration Guide](/guides/android/migration-guides/pspdfkit-6-2-migration-guide.md)
- [Pspdfkit 7 Migration Guide](/guides/android/migration-guides/pspdfkit-7-migration-guide.md)
- [Pspdfkit 6 4 Migration Guide](/guides/android/migration-guides/pspdfkit-6-4-migration-guide.md)
- [Pspdfkit 5 Migration Guide](/guides/android/migration-guides/pspdfkit-5-migration-guide.md)
- [Pspdfkit 8 7 Migration Guide](/guides/android/migration-guides/pspdfkit-8-7-migration-guide.md)
- [Pspdfkit 6 Migration Guide](/guides/android/migration-guides/pspdfkit-6-migration-guide.md)
- [Pspdfkit 6 6 Migration Guide](/guides/android/migration-guides/pspdfkit-6-6-migration-guide.md)
- [Pspdfkit 8 6 Migration Guide](/guides/android/migration-guides/pspdfkit-8-6-migration-guide.md)
- [Pspdfkit 8 9 Migration Guide](/guides/android/migration-guides/pspdfkit-8-9-migration-guide.md)
- [Pspdfkit 8 Migration Guide](/guides/android/migration-guides/pspdfkit-8-migration-guide.md)
- [Pspdfkit 8 8 Migration Guide](/guides/android/migration-guides/pspdfkit-8-8-migration-guide.md)
- [Upgrading](/guides/android/advanced-integration/upgrading.md)

