ionic npm安装的插件在安卓端无法调用成功的跟踪与处理方法

公司有一个用ionic做的跨平台框架,最近有个需求需要我来参与修改,搞了几天,感觉所有的坑都踩了一遍。在这里记录分析一下此次踩的坑,同时以后遇到插件安装后安卓端无法调用成功的时候,可以跟着此次的方式处理一下。

一.以高德地图定位插件为例子cordova-plugin-yzt-amap

1.插件安装 cordova plugin add cordova-plugin-yzt-amap --variable API_KEY_FOR_ANDROID="YOUR_ANDROID_API_KEY_IS_HERE" --variable API_KEY_FOR_IOS="YOUR_IOS_API_KEY_IS_HERE"

2.插件使用 cordova.plugins.AMapPlugin.getCurrentPosition(

                data => {

                    let { longitude, latitude } = data;

                    this.nativeService.showToast(`${longitude},${latitude},${JSON.stringify(data)}`);

                },

                err => {

                    // fail

                    //   console.log(err);

                }

            );

一般来说这样使用是没有问题的,但是遇到当前的安卓目录与插件开发者的目录不一致的时候,就会出问题了,调用这个插件会发现是undefine.

首先要理解安装插件框架帮我们做了什么事,才能分析到这个插件为什么用不了,和如何处理。

通过cordova plugin add命令,ionic根据插件里配置的plugin.xml来进行解析,把源码,资源文件,mainfest文件进行拷背。

如: 就是把插件里面的AMapPlugin.java拷到安卓打包时候的目录。有些插件如果这里的target-dir为“app/src/main/...”则会导致该文件不会打包进去,导致插件不可用。资源文件和mainfest文件同理。

当插件调用不成功时,可以用以下方法跟踪。打开android/build目录,例如下图:找一下有没有对应生成的class文件就可以了。如果没有,则要修改target-dir到ionic真正打包的目录就可以了。

你可能感兴趣的:(ionic npm安装的插件在安卓端无法调用成功的跟踪与处理方法)