我需要开发与sdk android native集成的nativescript应用。

我在android studio中创建了一个示例应用程序并生成了一个aar文件,然后使用此文件构建了一个nativescript插件。

最后,我将该插件包含在nativescript应用中。

当我尝试访问aar文件中公开的方法时,收到一条消息,指出该方法不是函数。

我第一次尝试使用以下课程创建aar

(Java)

package com.example.toasterlibrary;
import android.content.Context;
import android.widget.Toast;

public class ToasterMessage {
    public ToasterMessage() {
    }

    public static void show(Context c,String message){
       Toast.makeText(c,message,Toast.LENGTH_SHORT).show();
    }
}


然后尝试更改“显示”功能,使其不是静态的

(Java)

public void show(Context context, String message) {
    CharSequence text = "Hello NativeScript!";
    int duration = Toast.LENGTH_SHORT;

    Toast toast = Toast.makeText(context, text, duration);
    toast.show();
}


另一方面,我构建了一个调用sdk的插件,并且在nativescript插件中的de index.js文件中收到一条错误消息,特别是在toaster.show行(上下文,“ Hello world”)中;

(插件原生脚本)

var application = require("application");
var context = application.android.context;

module.exports = {
    showToast: function() {
       var toaster = new com.example.toasterlibrary.ToasterMessage();
        toaster.show(context,"Hello world");
    }
};


最后,这是插件使用的文件,可以正常工作,但我将其包含在内以提供更多上下文

(应用程式原语)

import { Component, OnInit } from "@angular/core";
import * as ToasterMessage  from 'nativescript-toaster'

@Component({
    selector: "ns-items",
    moduleId: module.id,
    templateUrl: "./items.component.html"
})
export class ItemsComponent implements OnInit {

    constructor() { }

    ngOnInit(): void {
        ToasterMessage.showToast();
    }
}


我希望这会启动祝酒消息,但会出现以下错误:

ERROR TypeError: toaster.show is not a function


执行此命令tns run android后,此错误位于nativescript插件上:

最佳答案

好像您缺少干净的版本。

每当您更新AAR文件时,您可能都必须执行干净的构建,否则插件/项目可能指向您库的旧版本。

10-04 22:57
查看更多