3

我正在尝试开发一个用于集成 Fabric Digits 的 Nativescript 插件。首先,按照 Digits 教程,我像他们说的那样编辑了 platform/android/include.gradle(还在 platform/android/AndroidManifest.xml 中添加了我的 API_KEY)。

因为,这不起作用,我找到并手动添加了 digits.aar、twittercore.aar 和 fabric.aar(数字库及其依赖项)到我的插件平台/android 目录中。

我的插件 index.android.js 如下

"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)}

  }
}

我想在其中使用我的插件的应用程序定义了一个简单的按钮,一旦点击,应该调用我的 authenticateUser 函数:

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();

 }
}

但是,点击按钮,它给了我以下错误:

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)

有谁知道为什么?

谢谢。

4

0 回答 0