我需要在Ionic应用程序中执行一些Android本机代码,因此我尝试创建一个具有Android支持的电容器插件。我使用以下指南将电容器添加到了Ionic应用程序中:https://capacitor.ionicframework.com/docs/getting-started/with-ionic/。我从此指南中创建了一个插件:https://capacitor.ionicframework.com/docs/plugins/
这是我使用插件的代码:
// home.page.ts
import {Component} from '@angular/core';
import {Plugins} from '@capacitor/core';
@Component({
selector: 'app-home',
template: `
<ion-button (click)="onEchoBtnClick()">Submit</ion-button>
`
})
export class HomePage {
src: string | undefined;
constructor() {
}
onEchoBtnClick() {
const {Echo} = Plugins;
const echoPlugin = Echo;
echoPlugin.echo({
value: '333'
}).then(res => {
alert('ok ' + JSON.stringify(res));
}).catch(err => {
alert('err ' + err);
});
}
}
然后我构建了离子应用程序:ionic build
并运行:
npx cap copy
npx cap sync
npx cap open android
然后在Android Studio中运行该项目。当我运行项目时,出现错误:
Cannot read property 'echo' of undefined
。我认为是因为我需要在MainActivity类中添加插件
// Other imports...
import com.example.myapp.EchoPlugin;
public class MainActivity extends BridgeActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Initializes the Bridge
this.init(savedInstanceState, new ArrayList<Class<? extends Plugin>>() {{
// Additional plugins you've installed go here
// Ex: add(TotallyAwesomePlugin.class);
add(EchoPlugin.class);
}});
}
}
问题是我收到错误消息“包com.example.myapp.EchoPlugin不存在”。我的插件在“ / echo”目录中。 android项目位于“ / android”目录中。如何将Echo插件导入android项目?
答案 0 :(得分:1)
我使用了这个[https://capacitorjs.com/docs/android/custom-code] [1]
在您的 com / example / myapp / 中的此路径 android / app / src / main / java 中,我在与MainActivity相同级别中创建了PluginClass。 Java
可以完美地调用customFunction!。 [1]:https://capacitorjs.com/docs/android/custom-code
答案 1 :(得分:0)
我遇到了同样的问题,我解决了从Android Studio重建项目的问题,以便获得插件的新编译配置。
转到Android Studio “构建”菜单,然后单击“ 制作项目”