从nativescript调用android方法(sdk,aar或jar)

问题描述 投票:1回答:1

我需要开发一个与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();
    }
}

然后尝试更改“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文件中收到了一条错误消息,特别是在线上的多士头。展示(上下文,“Hello world”);

(插件Nativescript)

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

最后,这是插件使用的文件,这是正常工作,但我包括它以提供更多上下文

(App Nativescript)

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

我希望发布一个Toast消息,但是发出以下错误:

ERROR TypeError: toaster.show is not a function

执行此命令后,此错误发生在nativescript插件tns run android:

android jar sdk aar nativescript-angular
1个回答
1
投票

看起来你错过了干净的构建。

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

© www.soinside.com 2019 - 2024. All rights reserved.