我需要开发一个与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:
看起来你错过了干净的构建。
每当您更新AAR文件时,您可能必须执行干净的构建,否则插件/项目可能指向您的库的旧版本。