FCA Upgrade from v4.2.4 to v6.0.0
This document will walk through upgrading the FIDO Client Adapter (FCA) sample application from HYPR SDK for Android version 4.2.4 to HYPR SDK for Android version 6.0.0. The important changes include:
- Migrating your application to Android X
- Updating required dependencies for HYPR SDK for Android
Android X
HYPR Android SDK Version 6.0.0 requires the Android X Support Libraries and replaces the old deprecated Android Support Libraries. You must migrate your existing application to Android X using the Android Studio migration function. We will demonstrate this process on the FCA v4.2.4 sample application.
- Click Refactor --> Migrate to Android X.... A popup displays the option to start the migration.

- Click Migrate. The Refactoring Preview pane displays pending changes at the bottom.

- Click Do Refactor to start the migration.
Once this process completes, the FCA sample application is migrated to Android X. The authenticators will not work properly until the next step, Dependencies, is finished.
Dependencies
- Copy all HYPR SDK included
.aar
libraries into thelibs
directory. Following is an example of thelibs
directory after the files have been copied:

- Update the dependency modifications in
app/build.gradle
. Here is an example of the file with modifications:
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0'
// Android
implementation 'androidx.multidex:multidex:2.0.1'
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'com.google.android.material:material:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
annotationProcessor 'androidx.lifecycle:lifecycle-compiler:2.2.0'
// GJON / POJO
implementation 'com.google.code.gson:gson:2.8.5'
implementation 'org.apache.commons:commons-lang3:3.5'
// RxAndroid
implementation group: 'io.reactivex.rxjava2', name: 'rxandroid', version: '2.0.2'
implementation group: 'io.reactivex.rxjava2', name: 'rxjava', version: '2.1.12'
implementation 'javax.annotation:jsr250-api:1.0'
// Retrofit
implementation 'com.squareup.retrofit2:retrofit:2.4.0'
implementation 'com.squareup.retrofit2:converter-gson:2.4.0'
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.4.0'
implementation 'com.squareup.okhttp3:logging-interceptor:3.9.0'
// HYPR
implementation(name: 'HyprCommonAdp', version: "6.0.0", ext: 'aar')
implementation(name: 'HyprBiometricPromptAdp', version: "6.0.0", ext: 'aar')
implementation(name: 'HyprPinAdp', version: "6.0.0", ext: 'aar')
implementation(name: 'HyprFaceVoiceAdp', version: "6.0.0", ext: 'aar')
implementation(name: 'HyprPalmAdp', version: "6.0.0", ext: 'aar')
implementation(name: 'HyprSilentAdp', version: "6.0.0", ext: 'aar')
implementation(name: 'HyprPresenceAdp', version: "6.0.0", ext: 'aar')
// Fingerprint Biometric Prompt
implementation 'androidx.biometric:biometric:1.0.1'
// Sensory SMMA
implementation(name: 'vvutils', version: "4.1.2.4", ext: 'aar')
implementation(name: 'datautils', version: "4.1.2.4", ext: 'aar')
implementation(name: 'smma', version: "4.1.2", classifier: 'android', ext: 'aar')
implementation(name: 'model', version: "2.1.0", classifier: 'combiner', ext: 'aar')
implementation(name: 'model', version: "2.1.0", classifier: 'face-pnn', ext: 'aar')
implementation(name: 'model', version: "2.1.0", classifier: 'voice-tssv-udp_enUS', ext: 'aar')
// These dependencies are required by Sensory SDK
implementation 'com.parse.bolts:bolts-android:1.1.4'
implementation 'org.slf4j:slf4j-api:1.7.25'
implementation 'commons-io:commons-io:2.5'
implementation 'com.fasterxml.uuid:java-uuid-generator:3.1.4'
// Palm
implementation 'com.intuit.sdp:sdp-android:1.0.6'
implementation(name: 'palm_sdk_core-4.0.2', ext: 'aar')
// HYPR Crypto
implementation(name: "crypto", version: "2.5.0", ext: 'aar') { transitive = true }
// HYPR ADP
implementation(name: "THPAgent", version: "2.5.0", ext: 'aar') { transitive = true }
implementation(name: "TeeClient", version: "2.5.0", ext: 'aar') { transitive = true }
implementation(name: "caCrypto", version: "2.5.0", ext: 'aar') { transitive = true }
}
Initialization Code Changes
The initialization method signature has changed. The HyprInit.getInstance().setup()
method is no longer supported or needed.
HyprInit.getInstance().setup();
The HyprInit.getInstance().initAdp()
method signature has changed to HyprInit.getInstance().initTrustData()
. Examples of each version are shown below.
4.2.4
void initAdp(@NonNull Context context,
@NonNull InitTrustDataCallback callback)
6.0.0
void initTrustData(@NonNull final Context context,
@NonNull final InitTrustDataCallback callback)
In the FCA sample app MainActivity.java
class, the following code changes occurred between 4.2.4 and 6.0.0.
4.2.4
// Setup HyprInit
HyprInit.getInstance().setup();
// Initialize ADP/TrustData
HyprInit.getInstance().initAdp(this, new HyprInit.InitTrustDataCallback() {
6.0.0
// Initialize ADP/TrustData
HyprInit.getInstance().initTrustData(this, new HyprInit.InitTrustDataCallback() {
Updated 10 months ago