问题描述
我有一个非常基本的 Java 函数,我想通过 NativeScript Vue 应用程序调用它。 .java 文件如下所示:
package com.example.toastermodule;
import android.content.Context;
import android.widget.Toast;
public class Toaster {
public void show(Context context) {
CharSequence text ="Hello NativeScript!";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context,text,duration);
toast.show();
}
}
这篇文章 (https://nativescript.org/blog/plugins-and-jars/) 是我获取 Java 代码的地方,并指导我将功能导出为 jar,并将其导入 NativeScript。但是,提供的 gradle 代码实际上并没有生成 jar 文件。我在网上找到了对本指南的各种参考,更新了 gradle 说明以说明构建文件存储位置的变化,但我仍然无法生成单个复合 jar 文件。
我也曾使用这篇文章 (https://docs.nativescript.org/plugins/plugin-reference) 尝试直接导入 Java 插件。我为 Java 项目创建了一个基本的 package.json 文件,如下所示:
{
"name": "nativescript-my-plugin","version": "0.0.1","nativescript": {
"platforms": {
"ios": "4.0.0","android": "4.1.0"
}
}
}
我将此文件放入主项目文件夹(例如“~/AndroidStudioProjects/Toaster/”)。当我在我的 NativeScript 项目中打开一个终端并运行 tns add plugin "~/AndroidStudioProjects/Toaster/"
时,我收到了令人鼓舞的消息:Successfully installed plugin nativescript-my-plugin.
但是,如果我从“nativescript-my-plugin”更改 package.json 文件中的名称,我会收到一条错误消息:Cannot find module 'toaster-plugin/package.json'
。我不知道为什么更改名称会给我这个错误消息,因为据我所知,名称是任意的,没有在其他任何地方引用。
此外,当我尝试实际使用插件时(我的 Home.vue 看起来像这样)
<template>
<Page>
<ActionBar>
<Label text="Home"/>
</ActionBar>
<GridLayout>
<Label class="info">
<FormattedString>
<Span class="fas" text.decode=" "/>
<Span :text="message"/>
</FormattedString>
</Label>
<Button @tap="printJava" text="Print Java"/>
</GridLayout>
</Page>
</template>
<script>
var myPlugin = require("nativescript-my-plugin");
export default {
computed: {
message() {
return "Blank {N}-Vue app";
}
},methods: {
printJava(){
myPlugin.show();
}
}
}
</script>
<style scoped lang="scss">
@import '~@nativescript/theme/scss/variables/blue';
// Custom styles
.fas {
@include colorize($color: accent);
}
.info {
font-size: 20;
horizontal-align: center;
vertical-align: center;
}
</style>
我收到此错误消息 Module not found: Error: Can't resolve 'nativescript-my-plugin' in '~\java-test-2\app\components'
,然后是
Error from chokidar (C:\): Error: EBUSY: resource busy or locked,lstat 'C:\hiberfil.sys'
File change detected. Starting incremental webpack compilation...
File change detected. Starting incremental webpack compilation...
尽管实际上并未对代码进行任何更改。
所以我的问题是,为什么 package.json
中声明的名称只有在 "nativescript-my-plugin"
时才有效?在这个过程中我做错了什么?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)