Plugin_not_installed error on Android for FingerprintAIO

I have been successfully using the cordova-plugin-fingerprint-aio plugin and the Ionic native wrapper for a while. Now when I run on an Android device I get a ‘plugin_not_installed’ error:

WARN: Native: tried calling FingerprintAIO.isAvailable, but the FingerprintAIO plugin is not installed.
WARN: Install the FingerprintAIO plugin: 'ionic cordova plugin add cordova-plugin-fingerprint-aio'

The plugin works fine on iOS so it is not an issue with platform ready, or including the provider in the app module.

I have tried uninstalling/reinstalling the plugin, the native wrapper and the android platform.

Relevant code:

import {FingerprintAIO} from '@ionic-native/fingerprint-aio/ngx'

constructor(
    protected fingerprintAIO: FingerprintAIO
)
this.fingerprintAIO.isAvailable().then(result => {

    // Something

}).catch(error => {

    console.log('Unable to check fingerprint feature availability', error, JSON.stringify(error))

})

Info:

Ionic:

   Ionic CLI                     : 5.4.14 (/Users/me/.nvm/versions/node/v13.1.0/lib/node_modules/ionic)
   Ionic Framework               : @ionic/angular 4.11.7
   @angular-devkit/build-angular : 0.803.22
   @angular-devkit/schematics    : 8.3.22
   @angular/cli                  : 8.3.22
   @ionic/angular-toolkit        : 2.1.1

Cordova:

   Cordova CLI       : 8.1.2 (cordova-lib@8.1.1)
   Cordova Platforms : android 7.1.4, browser 6.0.0, ios 5.1.1
   Cordova Plugins   : cordova-plugin-ionic-keyboard 2.2.0, cordova-plugin-ionic-webview 4.1.3, (and 28 other plugins)

Utility:

   cordova-res (update available: 0.9.0) : 0.8.1
   native-run                            : 0.3.0

System:

   Android SDK Tools : 26.1.1 (/Users/me/Library/Android/sdk)
   ios-deploy        : 1.10.0
   ios-sim           : 8.0.2
   NodeJS            : v13.1.0 (/Users/me/.nvm/versions/node/v13.1.0/bin/node)
   npm               : 6.12.1
   OS                : macOS Catalina
   Xcode             : Xcode 11.3 Build version 11C29

Plugins:

com-sarriaroman-photoviewer 1.1.18 "PhotoViewer"
cordova-plugin-add-swift-support 2.0.2 "AddSwiftSupport"
cordova-plugin-advanced-http 2.3.1 "Advanced HTTP plugin"
cordova-plugin-app-version 0.1.9 "AppVersion"
cordova-plugin-appavailability 0.4.2 "AppAvailability"
cordova-plugin-camera 4.1.0 "Camera"
cordova-plugin-device 2.0.3 "Device"
cordova-plugin-device-motion 2.0.1 "Device Motion"
cordova-plugin-file 6.0.2 "File"
cordova-plugin-file-transfer 1.7.1 "File Transfer"
cordova-plugin-fingerprint-aio 3.0.1 "FingerprintAllInOne"
cordova-plugin-inappbrowser 3.2.0 "InAppBrowser"
cordova-plugin-ionic-keyboard 2.2.0 "cordova-plugin-ionic-keyboard"
cordova-plugin-ionic-webview 4.1.3 "cordova-plugin-ionic-webview"
cordova-plugin-ios-camera-permissions 1.2.0 "iOS Permissions"
cordova-plugin-media 5.0.3 "Media"
cordova-plugin-nativestorage 2.3.2 "NativeStorage"
cordova-plugin-photo-library 2.2.1 "Photo Library"
cordova-plugin-safariviewcontroller 1.6.0 "SafariViewController"
cordova-plugin-secure-storage 3.0.1 "SecureStorage"
cordova-plugin-shake 0.7.0 "Shake Gesture Detection"
cordova-plugin-splashscreen 5.0.3 "Splashscreen"
cordova-plugin-statusbar 2.4.3 "StatusBar"
cordova-plugin-telerik-imagepicker 2.2.4 "ImagePicker"
cordova-plugin-whitelist 1.3.4 "Whitelist"
cordova-plugin-youtube-video-player 2.3.0 "CordovaYoutubeVideoPlayer"
cordova-sqlite-storage 3.1.0 "Cordova sqlite storage plugin - cordova-sqlite-storage plugin version"
cordova-support-google-services 1.3.2 "cordova-support-google-services"
info.protonet.imageresizer 0.1.1 "Image Resizer"
nl.x-services.plugins.backgroundaudio 1.0.1 "BackgroundAudio"
phonegap-plugin-multidex 1.0.0 "Multidex"
phonegap-plugin-push 2.3.0 "PushPlugin"
sentry-cordova 0.17.0 "Sentry"

package.json

{
  "name": "appname",
  "version": "1.4.8",
  "description": "appdesc",
  "license": "SEE LICENSE IN license.txt",
  "author": "",
  "homepage": "",
  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e"
  },
  "private": true,
  "dependencies": {
    "@angular/common": "8.2.14",
    "@angular/core": "8.2.14",
    "@angular/forms": "8.2.14",
    "@angular/platform-browser": "8.2.14",
    "@angular/platform-browser-dynamic": "8.2.14",
    "@angular/router": "8.2.14",
    "@ionic-native/app-availability": "5.19.1",
    "@ionic-native/app-version": "5.19.1",
    "@ionic-native/camera": "5.19.1",
    "@ionic-native/core": "5.19.1",
    "@ionic-native/device": "5.19.1",
    "@ionic-native/facebook": "5.7.0",
    "@ionic-native/file": "5.19.1",
    "@ionic-native/file-transfer": "5.19.1",
    "@ionic-native/fingerprint-aio": "5.22.0",
    "@ionic-native/google-plus": "5.7.0",
    "@ionic-native/http": "5.19.1",
    "@ionic-native/image-picker": "5.19.1",
    "@ionic-native/image-resizer": "5.19.1",
    "@ionic-native/in-app-browser": "5.19.1",
    "@ionic-native/ionic-webview": "5.19.1",
    "@ionic-native/media": "5.19.1",
    "@ionic-native/native-storage": "5.19.1",
    "@ionic-native/photo-library": "5.19.1",
    "@ionic-native/photo-viewer": "5.19.1",
    "@ionic-native/push": "5.19.1",
    "@ionic-native/safari-view-controller": "5.19.1",
    "@ionic-native/secure-storage": "5.19.1",
    "@ionic-native/shake": "5.22.0",
    "@ionic-native/splash-screen": "5.19.1",
    "@ionic-native/sqlite": "5.19.1",
    "@ionic-native/status-bar": "5.19.1",
    "@ionic-native/twitter-connect": "5.7.0",
    "@ionic-native/youtube-video-player": "5.19.1",
    "@ionic/angular": "4.11.7",
    "@ionic/core": "4.11.7",
    "@ionic/storage": "2.2.0",
    "@sentry/cli": "^1.49.0",
    "@sentry/wizard": "1.0.2",
    "ajv": "6.10.2",
    "angular-linky": "1.2.2",
    "angular-mentions": "file:../angular-mentions2/dist/angular-mentions/angular-mentions-1.0.2.tgz",
    "com-sarriaroman-photoviewer": "1.1.18",
    "cordova-android": "7.1.4",
    "cordova-browser": "^6.0.0",
    "cordova-ios": "^5.1.1",
    "cordova-plugin-add-swift-support": "2.0.2",
    "cordova-plugin-advanced-http": "2.3.1",
    "cordova-plugin-app-version": "0.1.9",
    "cordova-plugin-appavailability": "0.4.2",
    "cordova-plugin-camera": "4.1.0",
    "cordova-plugin-device": "2.0.3",
    "cordova-plugin-device-motion": "^2.0.1",
    "cordova-plugin-file": "6.0.2",
    "cordova-plugin-file-transfer": "1.7.1",
    "cordova-plugin-fingerprint-aio": "3.0.1",
    "cordova-plugin-inappbrowser": "3.2.0",
    "cordova-plugin-ionic-keyboard": "2.2.0",
    "cordova-plugin-ionic-webview": "4.1.3",
    "cordova-plugin-ios-camera-permissions": "1.2.0",
    "cordova-plugin-media": "5.0.3",
    "cordova-plugin-nativestorage": "2.3.2",
    "cordova-plugin-photo-library": "git+https://github.com/dride/cordova-plugin-photo-library.git",
    "cordova-plugin-safariviewcontroller": "1.6.0",
    "cordova-plugin-secure-storage": "3.0.2",
    "cordova-plugin-shake": "^0.7.0",
    "cordova-plugin-splashscreen": "5.0.3",
    "cordova-plugin-statusbar": "2.4.3",
    "cordova-plugin-telerik-imagepicker": "git+https://github.com/Telerik-Verified-Plugins/ImagePicker.git",
    "cordova-plugin-whitelist": "1.3.4",
    "cordova-plugin-youtube-video-player": "git+https://github.com/ihadeed/CordovaYoutubeVideoPlayer.git",
    "cordova-sqlite-storage": "3.2.0",
    "cordova-support-google-services": "1.3.2",
    "core-js": "3.6.3",
    "flatted": "2.0.1",
    "hammerjs": "2.0.8",
    "info.protonet.imageresizer": "^0.1.1",
    "ios-deploy": "1.10.0",
    "moment": "2.24.0",
    "ngx-socket-io": "3.0.1",
    "nl.x-services.plugins.backgroundaudio": "^1.0.1",
    "nl2br-pipe": "1.2.3",
    "phonegap-plugin-multidex": "1.0.0",
    "phonegap-plugin-push": "2.3.0",
    "rxjs": "6.5.4",
    "rxjs-compat": "6.5.4",
    "sentry-cordova": "^0.17.0",
    "socket.io": "2.3.0",
    "socket.io-client": "2.3.0",
    "throttle-debounce": "2.1.0",
    "tsickle": "0.34.3",
    "zone.js": "0.10.2"
  },
  "devDependencies": {
    "@angular-devkit/architect": "~0.803.22",
    "@angular-devkit/build-angular": "~0.803.22",
    "@angular-devkit/build-ng-packagr": "~0.803.22",
    "@angular-devkit/core": "~8.3.22",
    "@angular-devkit/schematics": "~8.3.22",
    "@angular/cli": "~8.3.22",
    "@angular/compiler": "^8.2.14",
    "@angular/compiler-cli": "^8.2.14",
    "@angular/language-service": "^8.2.14",
    "@ionic/angular-toolkit": "^2.1.1",
    "@types/jasmine": "^3.5.0",
    "@types/jasminewd2": "^2.0.8",
    "@types/node": "^13.1.6",
    "codelyzer": "^5.2.1",
    "jasmine-core": "^3.5.0",
    "jasmine-spec-reporter": "~4.2.1",
    "karma": "^4.4.1",
    "karma-chrome-launcher": "^3.1.0",
    "karma-coverage-istanbul-reporter": "^2.1.1",
    "karma-jasmine": "^3.1.0",
    "karma-jasmine-html-reporter": "^1.5.1",
    "ng-packagr": "^5.7.1",
    "protractor": "~5.4.0",
    "ts-node": "^8.6.1",
    "tslib": "^1.10.0",
    "tslint": "^5.20.1",
    "typescript": "^3.5.3"
  },
  "cordova": {
    "plugins": {
      "cordova-plugin-file-transfer": {},
      "cordova-plugin-app-version": {},
      "cordova-plugin-nativestorage": {},
      "cordova-plugin-ios-camera-permissions": {
        "CAMERA_USAGE_DESCRIPTION": "This app needs camera access",
        "MICROPHONE_USAGE_DESCRIPTION": "This app needs microphone access",
        "PHOTOLIBRARY_ADD_USAGE_DESCRIPTION": "This app needs write-access to photo library",
        "PHOTOLIBRARY_USAGE_DESCRIPTION": "This app needs read/write-access photo library access"
      },
      "cordova-plugin-safariviewcontroller": {},
      "cordova-plugin-secure-storage": {},
      "cordova-sqlite-storage": {},
      "cordova-plugin-appavailability": {},
      "cordova-plugin-telerik-imagepicker": {
        "PHOTO_LIBRARY_USAGE_DESCRIPTION": "This app needs read photo library access"
      },
      "cordova-support-google-services": {},
      "phonegap-plugin-push": {
        "ANDROID_SUPPORT_V13_VERSION": "27.+",
        "FCM_VERSION": "17.0.+"
      },
      "cordova-plugin-add-swift-support": {},
      "cordova-plugin-photo-library": {
        "PHOTO_LIBRARY_USAGE_DESCRIPTION": "To choose pictures"
      },
      "cordova-plugin-ionic-webview": {
        "ANDROID_SUPPORT_ANNOTATIONS_VERSION": "27.+"
      },
      "cordova-plugin-youtube-video-player": {},
      "cordova-plugin-inappbrowser": {},
      "cordova-plugin-ionic-keyboard": {},
      "cordova-plugin-camera": {
        "ANDROID_SUPPORT_V4_VERSION": "27.+"
      },
      "cordova-plugin-advanced-http": {
        "OKHTTP_VERSION": "3.10.0"
      },
      "cordova-plugin-device": {},
      "cordova-plugin-file": {},
      "cordova-plugin-media": {
        "KEEP_AVAUDIOSESSION_ALWAYS_ACTIVE": "NO"
      },
      "cordova-plugin-splashscreen": {},
      "cordova-plugin-statusbar": {},
      "cordova-plugin-whitelist": {},
      "com-sarriaroman-photoviewer": {},
      "cordova-plugin-shake": {},
      "info.protonet.imageresizer": {},
      "nl.x-services.plugins.backgroundaudio": {},
      "sentry-cordova": {
        "SENTRY_ANDROID_SDK_VERSION": "1+"
      },
      "cordova-plugin-fingerprint-aio": {
        "FACEID_USAGE_DESCRIPTION": "Login now..."
      }
    },
    "platforms": [
      "browser",
      "android",
      "ios"
    ]
  },
  "config": {
    "ionic_generate_source_map": "true"
  }
}

Any suggestions would be much appreciated, thanks.

Sir during add Android platform check plugin is added in Android folder or not.i think during add platform it’s skip the fingerprint plugin to Android platform.

Yes, you are correct, I have checked and the plugin is not being installed into the Android platform. Unfortunately I do not know why it is being skipped when I add the plugin.

I have resolved this, the plugin has been silently updated to require Cordova Android v8.0.0+. To use the current version of the plugin, update the android platform or install an old version of the plugin:

ionic cordova plugin add git+https://github.com/NiklasMerz/cordova-plugin-fingerprint-aio#f8e5588011506b4a386cbfa16346cd6b5ab85349 --variable FACEID_USAGE_DESCRIPTION="Login now..."

Using this version will mean the latest Ionic native wrapper package will not contain the correct FingerprintOptions interface for you.

1 Like