diff --git a/README.md b/README.md index aa9b51592d1364705cc572f4fef14981b61204df..4d403f4ea75220dbd1b631f50a2dd13a7016cb50 100644 --- a/README.md +++ b/README.md @@ -51,25 +51,72 @@ Here’s a clean and concise documentation section based on your instructions: --- -### Step 2: Add the Dependency +#### Step 2: Add the Dependency Add the required SDK dependency to your `build.gradle`: ```gradle dependencies { - implementation("uz.myid.sdk.capture:myid-capture-sdk:2.4.1") + implementation("uz.myid.sdk.capture:myid-capture-sdk:2.4.2") } ``` +Due to the advanced validation support (in C++ code), we recommend that the integrator app performs [multi-APK split](#multi-apk-split) to optimize the app size for individual architectures. + +Average size (with Proguard enabled): + +| ABI | Size | +|-------------|:--------:| +| armeabi-v7a | 10.0 Mb | +| arm64-v8a | 10.5 Mb | +| universal | 20.4 Mb | + +# + If you are using **VideoIdentification** entry mode, also include: ```gradle dependencies { - implementation("uz.myid.sdk.capture:myid-video-capture-sdk:2.4.1") + implementation("uz.myid.sdk.capture:myid-video-capture-sdk:2.4.2") } ``` -After syncing your project, you can access all SDK classes in your source code. +Average size (with Proguard enabled): + +| ABI | Size | +|-------------|:--------:| +| armeabi-v7a | 15.6 Mb | +| arm64-v8a | 16.7 Mb | +| universal | 38.2 Mb | + +**Note**: The average sizes were measured by building the minimum possible wrappers around our SDK. +Different versions of the dependencies, such as Gradle or NDK, may result in slightly different values. + +#### Multi-APK split + +C++ code needs to be compiled for each of the CPU architectures (known as "ABIs") present on the Android environment. Currently, the SDK supports the following ABIs: + +* `armeabi-v7a`: Version 7 or higher of the ARM processor. Most recent Android phones use this +* `arm64-v8a`: 64-bit ARM processors. Found on new generation devices +* `x86`: Used by most tablets and emulators +* `x86_64`: Used by 64-bit tablets + +The SDK binary contains a copy of the native `.so` file for each of these four platforms. +You can considerably reduce the size of your `.apk` by applying APK split by ABI, editing your `build.gradle` to the following: + +```gradle +android { + splits { + abi { + enable true + reset() + include 'x86', 'x86_64', 'arm64-v8a', 'armeabi-v7a' + universalApk false + } + } +} +``` +Read the [Android documentation](https://developer.android.com/build/configure-apk-splits) for more information. ### 1.3 Permissions @@ -179,15 +226,19 @@ the SDK requires the input of passport data and date of birth for user identific - **Debug** is used to sandbox. - **Production** is used to production. -**Note 1.5.** `MyIdEntryType` contains **Identification**, **VideoIdentification** and **FaceDetection** types. +**Note 1.4.** `MyIdEntryType` contains **Identification**, **VideoIdentification** and **FaceDetection** types. - **Identification** is used to identify the user through the MyID services. - **VideoIdentification** is used to identify the user through the MyID services. Requires the `myid-video-capture-sdk` dependency. - **FaceDetection** is used to detect a face and returns a picture (bitmap). -**Note 1.6.** `MyIdCameraShape` contains **[Circle](images/screen03.jpg)** +**Note 1.5.** `MyIdCameraShape` contains **[Circle](images/screen03.jpg)** and **[Ellipse](images/screen04.jpg)** types. +**Note 1.6.** If the user sends a **passport data** to the SDK, the **residency** must be handled by the **client**. If `residency = MyIdResidency.UserDefined` is sent, the SDK will treat the user as **Non-Resident**. + +**Note 1.7.** If the SDK **does not receive a passport data** and receives `residency = MyIdResidency.UserDefined`, the SDK displays the **MyID passport input screen**. If the user enters a **PINFL**, the screen will show a **checkbox** allowing the user to select **Resident** or **Non-Resident**. + ### 1.2 Handling callbacks ```kotlin