插件开发(草稿)

  1. 创建plugin

cordova项目中:

plugman create --name QRPrinter --plugin_id wesunsoft-blu-qrprinter --plugin_version 0.0.1

 

  1. 添加安卓平台支持

插件目录下:

plugman platform add --platform_name android

 

  1. 文件夹目录

 

src    各平台源码文件

www  js接口文件

plugin.xml  配置文件

 

  1. 插件安装卸载

卸载插件

plugman uninstall --platform android --project platforms/android --plugin [这个插件的id,可在plugin.xml中查看]

安装插件

plugman install -d --platform android --project platforms/android --plugin [这个插件的全路径]

src下的源码会按照plugin.xml中的配置被拷贝至相应platform的目录下面。

 

 

  1. 开发
  1. 打开activity

 

 

  1. R包路径

R包路径为项目安卓包路径,使用以下代码,动态获取R包路径。

public static int getResourceByName(Context context, String className, String resName) {

        String packageName = context.getPackageName();

        int id = 0;

        try {

            Class r = Class.forName(packageName + ".R");

            Class[] classes = r.getClasses();

            Class desireClass = null;

            for (Class cls : classes) {

                if (cls.getName().split("\\$")[1].equals(className)) {

                    desireClass = cls;

                    break;

                }

            }

            if (desireClass != null) {

                id = desireClass.getField(resName).getInt(desireClass);

            }

        } catch (Exception e) {

            LogUtil.e("getResourceByName",e);

            e.printStackTrace();

        }

        return id;

    }

 

 

  1. 修改plugin.xml
  1. plugin.xml中添加安卓权限权限,注册activity。

parent指添加的父节点

 

  1. 修改插件包路径

QRPrinter路径与source-file所写路径对应

 

  1. 引入jar包

 

  1. 引入maven,依赖包

 

  1. 源码文件至target-dir位置

 

  1. 移动资源文件至target位置

 

 

  1. 插件调用

标签clobbers中定义的cordova.plugins.QRPrinter即为js调用的方法名称。

 

 

  1. 遇到的问题
  1. 使用cordova plugin add  [这个插件的全路径]  添加插件报错

 

原因:

插件缺少package.json文件

 

解决:

npm init 初始化package.json文件

  1. 编译失败,报如下错误:

 

原因:

如果有 Cordova 插件使用了 com.android.support:xxxxx-v7:+ 这种不带版本号的方式引入 Android Support 库,那么最新的 com.android.support v28 就会被用上,但是 cordova 目前还不支持 28 的 Support 库

所以报错。

 

解决:

修改有问题的插件,改成 com.android.support:xxxxx-v7:27+ 或者其他小于 28 的版本

 

  1. 编译失败,报如下错误:

 

原因:

存在重复的包

 

解决:

全局搜索,查看哪些包中使用到了,如下:

 

 

Core-2.3.0.jar及barcodescanner-release-2.1.5.aar中都存在com.google.zxing.BarcodeFormat。删除core-2.3.0.jar包,只留下barcodescanner-release-2.1.5.aar中的。

删除gradle中的依赖

 

 

  1. 编译成功,连接蓝牙成功,无法打印。
  • 缺libCode.so文件

解决:

sourceSets重定向jniLibs路径。

 

  • 调试报错  arm64-v8a下找不到libCode.so文件。

原因:

如果不添加ndk的选项描述,那么androidstudio默认打包会产生所有的平台so文件包,如果没有相应的so文件那么就会导致程序报错:找不到so文件在某个目录下。因此我们需要根据现有的什么类型的so文件进行配置ndk。

 

解决办法:

build.gradle中,添加红框中内容。

 

 

 

 

https://blog.csdn.net/weixin_36570478/article/details/81079815

https://blog.csdn.net/duoduo_11011/article/details/83745598

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花北城

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值