从 nativescript 调用 android 方法(sdk、aar 或 jar)
Call android method (sdk, aar or jar) from nativescript
我需要开发一个 nativescript 应用程序与 sdk android 原生集成。
我在 android studio 中创建了一个示例应用程序并生成了一个 aar 文件,然后我使用该文件构建了一个 nativescript 插件。
最后我将该插件包含在 nativescript 应用程序中。
当我尝试访问 aar 文件中公开的方法时,我收到一条消息说该方法不是函数。
我第一次尝试使用以下内容创建 aar class
(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 插件中包含的 index.js 文件中收到一条错误消息,特别是在 toaster.show 行(上下文,"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 运行 android:
看起来您缺少干净的版本。
每当您更新 AAR 文件时,您可能必须执行干净的构建,否则插件/项目可能指向您的库的旧版本。
我需要开发一个 nativescript 应用程序与 sdk android 原生集成。
我在 android studio 中创建了一个示例应用程序并生成了一个 aar 文件,然后我使用该文件构建了一个 nativescript 插件。
最后我将该插件包含在 nativescript 应用程序中。
当我尝试访问 aar 文件中公开的方法时,我收到一条消息说该方法不是函数。
我第一次尝试使用以下内容创建 aar class
(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 插件中包含的 index.js 文件中收到一条错误消息,特别是在 toaster.show 行(上下文,"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 运行 android:
看起来您缺少干净的版本。
每当您更新 AAR 文件时,您可能必须执行干净的构建,否则插件/项目可能指向您的库的旧版本。