Мне нужно разработать приложение nativescript, интегрированное с sdk android native.
Я создал пример приложения в Android Studio и сгенерировал aar- файл, а затем создал плагин nativescript, используя этот файл.
Наконец, я включил этот плагин в приложение nativescript.
Когда я попытался получить доступ к методу, представленному в файле aar, я получил сообщение о том, что метод не является функцией.
Первый раз я попытался создать AAR со следующим классом
(Джава)
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();
}
}
Затем попытался изменить функцию "шоу", чтобы она не была статичной
(Джава)
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 и получил сообщение об ошибке в файле de index.js, включенном в плагин nativescript, в частности в строку toaster.show(context, "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();
}
}
Я ожидаю, что запустить тост сообщение, но запустить следующую ошибку:
ERROR TypeError: toaster.show is not a function
Эта ошибка в плагине nativescript после выполнения этой команды tns run android:
Похоже, вам не хватало чистой сборки.
Каждый раз, когда вы обновляете файл AAR, вам может потребоваться выполнить чистую сборку, в противном случае плагин/проект могут указывать на более старую версию вашей библиотеки.