Вызов метода Android (SDK, AAR или JAR) из nativescript

1

Мне нужно разработать приложение 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:

Теги:
jar
sdk
nativescript
nativescript-angular
aar

1 ответ

0

Похоже, вам не хватало чистой сборки.

Каждый раз, когда вы обновляете файл AAR, вам может потребоваться выполнить чистую сборку, в противном случае плагин/проект могут указывать на более старую версию вашей библиотеки.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню