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

标签 android jar sdk aar nativescript-angular

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

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

(应用原生脚本)

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

执行此命令tns run android后,此错误出现在nativescript插件处:

最佳答案

看起来您缺少干净的构建。

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

关于android - 从 nativescript 调用 android 方法(sdk、aar 或 jar),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55775130/

相关文章:

android - 在 Android 中嵌入 OSGi Felix 导致 UnsupportedOperationException : can't load this type of class file

android - 第一次运行 'react-native run-android' 时,出现此错误 :

java - 打包后反射不起作用

jar - Gradle项目依赖项未引用SNAPSHOT jar

Android SDK Bundle 下载失败说 "Unknown Network Error"

android - Stripe-Android - fork 并用作自己的库

java - 在可运行的 jar 中找不到 getTimeStamp(),但在其他地方找到

gradle - GradleException。找不到Flutter SDK

c# - facebook c# sdk 页面选项卡应用程序

android - 在 Android 中使用不同的 google-service.json 进行测试