3

I'm trying to develop a Nativescript plugin for integrating Fabric Digits. At first, following the Digits tutorial I have edited the platform/android/include.gradle like they said (also adding my API_KEY in the platform/android/AndroidManifest.xml).

Since, this did not work, I found and manually added digits.aar, twittercore.aar and fabric.aar (the digits library plus its dependencies) into my plugin platform/android directory.

My plugin index.android.js is the following

"use strict";
var application = require("application");
module.exports = {
authenticateUser: function () {
    try {
        var Digits = com.digits.sdk.android;
       var success = function(session, phone) {
            console.log("autentication success", session, phone);
        };
        var error = function(err) {
            console.log("autentication success", err);
        };

         var TwitterConfig = com.twitter.sdk.android.core.TwitterAuthConfig;
         var TwitterCore = com.twitter.sdk.android.core.TwitterCore;
          var Fabric = io.fabric.sdk.android.Fabric;
         var cf = new TwitterConfig("KEY", "SECRET")
         Fabric.with(application.android.context, [new TwitterCore(cf), new Digits.Digits.Builder().build()]);
        var callback = new Digits.AuthCallback({success:success, failure:error});
    } catch(err2) {console.log("err22", err2)}

  }
}

The app in which I want to use my plugin, defines a simple button that, once tapped, should call my authenticateUser function:

import { Component } from "@angular/core";
var Digits = require("nativescript-digits");
@Component({
selector: "my-app",
templateUrl: "app.component.html",
})
export class AppComponent {
public counter: number = 16;

public get message(): string {
    if (this.counter > 0) {
        return this.counter + " taps left";
    } else {
        return "Hoorraaay! \nYou are ready to start building!";
    }
}

public onTap() {
    this.counter--;
     var k = new Digits();
     k.authenticateUser();

 }
}

However, tapping on the button, it gives me the following error:

Error: java.lang.NoClassDefFoundError: com.digits.sdk.android.DigitsSessionVerifier$VerificationCallback
JS:     com.digits.sdk.android.DigitsSessionVerifier.<init>(DigitsSessionVerifier.java:34)
JS:     com.digits.sdk.android.Digits.onPreExecute(Digits.java:265)
JS:     io.fabric.sdk.android.InitializationTask.onPreExecute(InitializationTask.java:44)
JS:     io.fabric.sdk.android.services.concurrency.AsyncTask.executeOnExecutor(AsyncTask.java:611)
JS:     io.fabric.sdk.android.services.concurrency.PriorityAsyncTask.executeOnExecutor(PriorityAsyncTask.java:43)
JS:     io.fabric.sdk.android.Kit.initialize(Kit.java:69)
JS:     io.fabric.sdk.android.Fabric.initializeKits(Fabric.java:439)
JS:     io.fabric.sdk.android.Fabric.init(Fabric.java:383)
JS:     io.fabric.sdk.android.Fabric.setFabric(Fabric.java:341)
JS:     io.fabric.sdk.android.Fabric.with(Fabric.java:312)
JS:     com.tns.Runtime.callJSMethodNative(Native Method)
JS:     com.tns.Runtime.dispatchCallJSMethodNative(Runtime.java:1022)
JS:     com.tns.Runtime.callJSMethodImpl(Runtime.java:907)
JS:     com.tns.Runtime.callJSMethod(Runtime.java:895)
JS:     com.tns.Runtime.callJSMethod(Runtime.java:879)
JS:     com.tns.Runtime.callJSMethod(Runtime.java:871)
JS:     com.tns.gen.android.view.View_OnClickListener.onClick(android.view.View$OnClickListener.java)
JS:     android.view.View.performClick(View.java:5201)
JS:     android.view.View$PerformClick.run(View.java:21163)
JS:     android.os.Handler.handleCallback(Handler.java:746)
JS:     android.os.Handler.dispatchMessage(Handler.java:95)
JS:     android.os.Looper.loop(Looper.java:148)
JS:     android.app.ActivityThread.main(ActivityThread.java:5443)
JS:     java.lang.reflect.Method.invoke(Native Method)
JS:     com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
JS:     com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)

Does anyone know why?

Thanks.

Vadim Kotov
  • 8,084
  • 8
  • 48
  • 62

0 Answers0