cordova后台插件开发新手教程

news2024/11/25 10:40:55

typora-root-url: imags

cordova后台插件开发新手教程

预安装环境:JDK11、Android studios、nodo.js

一、环境搭建

1.安装Cordova

 npm install -g cordova

2.创建项目 cordova create

具体命令: cordova create 目录名 包名 项目名

执行结果终端:

D:\01work_file\05demo
λ  cordova create smartTest com.kemov.smartTest smartTest
Creating a new cordova project.

D:\01work_file\05demo
λ ls
smartTest/

D:\01work_file\05demo
λ cd smartTest\

D:\01work_file\05demo\smartTest  (com.kemov.smarttest@1.0.0)
λ ls
config.xml  package.json  www/

3.添加平台

D:\01work_file\05demo\smartTest  (com.kemov.smarttest@1.0.0)
λ cordova platform add android@^10.0.0
Using cordova-fetch for cordova-android@10.0.0
Adding android project...
Creating Cordova project for the Android platform:
        Path: platforms\android
        Package: com.kemov.smartTest
        Name: smartTest
        Activity: MainActivity
        Android target: android-30
Subproject Path: CordovaLib
Subproject Path: app
Android project created with cordova-android@10.0.0
Discovered plugin "cordova-plugin-whitelist". Adding it to the project
Installing "cordova-plugin-whitelist" for android
Plugin doesn't support this project's cordova-android version. cordova-android: 10.0.0, failed version requirement: >=4.0.0 <10.0.0
Skipping 'cordova-plugin-whitelist' for android
Adding cordova-plugin-whitelist to package.json

D:\01work_file\05demo\smartTest  (com.kemov.smarttest@1.0.0)
λ ls
config.xml  node_modules/  package-lock.json  package.json  platforms/  plugins/  www/

4.通过AS软件打开android项目并编译APK

4.1 AS软件> File > open > 选择./platforms/android文件路径 > ok

4.2 等待gradle环境初始化完成 > Build> Build APK
在这里插入图片描述

二、后台插件开发及调试

1.自定义插件创建

D:\01work_file\05demo\smartTest  (com.kemov.smarttest@1.0.0)
λ plugman create --name SmartTestPlugin  --plugin_id com.kemov.smartTest  --plugin_version 1.0.0

D:\01work_file\05demo\smartTest  (com.kemov.smarttest@1.0.0)
λ ls 
SmartTestPlugin/  config.xml  node_modules/  package-lock.json  package.json  platforms/  plugins/  www/

D:\01work_file\05demo\smartTest\SmartTestPlugin
λ plugman platform add --platform_name android

D:\01work_file\05demo\smartTest\SmartTestPlugin
λ ls
plugin.xml  src/  www/

D:\01work_file\05demo\smartTest\SmartTestPlugin
λ npm init -yes
Wrote to D:\01work_file\05demo\smartTest\SmartTestPlugin\package.json:

{
  "name": "smarttestplugin",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}
cordova plugin add SmartTestPlugin

在这里插入图片描述在这里插入图片描述

2.后台调试

2.1 前端(html、js)按钮点击事件;

index.html

<button style="width: 100px; height: 50px; margin: 20px;" id="exportDocx">导出wordl</button>

js点击时间监听处理

 document.getElementById("exportDocx").addEventListener('click', function () {
		// Todu
        });
2.2 传递参数处理

​ 简单数据接口直接代码定义,复杂的数据把数据的json写到txt中

 fetch('test/table.txt')
     .then(response => response.text())
     .then((data) => {
     	console.log("_wd111  1 " + data);
     	cordova.plugins.exportPlugin.exportDocx((data),
         (m) => {
            console.log("_wd callback sucsses" + m);
         },
         (e) => {
             console.error("_wd callback error " + e);
         });
     })
     .catch(error => console.log(error));

三、前后端联调

1.联调

1.1 后台提供逻辑代码的jar包

1.2 插件入口类

1.3 依赖配置,AndroidManifest.xml文件相关配置修改项

2.jar打包文件

​ 编译后的插件文件打jar包(不报含插件入口类)

步骤:

  • 编译apk
  • 在终端中 进入本项目 build/intermediates/javac/debug/classes 中
  • 执行命令 jar -cvf class.jar com/kemov/smartTest/entry
D:\01work_file\gitworkspace\smartTestPlugin\smartTest\platforms\android\app\build\intermediates\javac\debug\classes (dev_1.0 -> origin)
λ pwd
D:\01work_file\gitworkspace\smartTestPlugin\smartTest\platforms\android\app\build\intermediates\javac\debug\classes

D:\01work_file\gitworkspace\smartTestPlugin\smartTest\platforms\android\app\build\intermediates\javac\debug\classes (dev_1.0 -> origin)
λ   jar -cvf  class.jar  com/kemov/smartTest/entry
已添加清单
正在添加: com/kemov/smartTest/entry/(输入 = 0) (输出 = 0)(存储了 0%)
正在添加: com/kemov/smartTest/entry/ExportCell.class(输入 = 2802) (输出 = 1039)(压缩了 62%)
正在添加: com/kemov/smartTest/entry/Table.class(输入 = 2588) (输出 = 968)(压缩了 62%)
正在添加: com/kemov/smartTest/entry/Task.class(输入 = 1924) (输出 = 733)(压缩了 61%)

D:\01work_file\gitworkspace\smartTestPlugin\smartTest\platforms\android\app\build\intermediates\javac\debug\classes (dev_1.0 -> origin)
λ ls
class.jar  com/

生成的 .jar文件可以用反编译器查看下

在这里插入图片描述

3.同步相关依赖

后台第三依赖在smartTest/platforms/android/app/build.gradle

dependencies {
    implementation fileTree(dir: 'libs', include: '*.jar')
    implementation "androidx.appcompat:appcompat:${cordovaConfig.ANDROIDX_APP_COMPAT_VERSION}"

    implementation 'org.apache.poi:poi-ooxml:5.2.3'
    implementation 'org.apache.poi:poi:5.2.3'
    implementation 'org.apache.poi:poi-scratchpad:5.2.3'
    implementation 'com.google.code.gson:gson:2.8.7'

    if (cordovaConfig.IS_GRADLE_PLUGIN_KOTLIN_ENABLED) {
        implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:${cordovaConfig.KOTLIN_VERSION}"
    }

    // SUB-PROJECT DEPENDENCIES START
    implementation(project(path: ":CordovaLib"))
    // SUB-PROJECT DEPENDENCIES END
}

四、常见问题

在这里插入图片描述

**问题1:**第三方poi jar包与sdk最小支持版本26

**处理: **在cdv-gradle-config.json修改最小sdk版本配置 “MIN_SDK_VERSION”: 26,

android版本权限问题由一开始的静态权限,后续是动态权限申请。

五、附录

1.cordova版本,Android VersionLibrary & Tooling Version版本适配

https://cordova.apache.org/docs/en/latest/guide/platforms/android/index.html

2.Android Gradle Plugin与Gradle版本、JDK版本对应关系

oid版本权限问题由一开始的静态权限,后续是动态权限申请。

五、附录

1.cordova版本,Android VersionLibrary & Tooling Version版本适配

https://cordova.apache.org/docs/en/latest/guide/platforms/android/index.html

2.Android Gradle Plugin与Gradle版本、JDK版本对应关系

https://blog.csdn.net/qq_42690281/article/details/131643663

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1588085.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

7-23 币值转换

题目链接&#xff1a;7-23 币值转换 一. 题目 1. 题目 2. 输入输出样例 3. 限制 二、代码 1. 代码实现 #include <iostream> #include <string> using namespace std;string numStr[] { // 0-9对应的字符串&#xff08;字符串是方便string&#xff09;"a…

tensorflow.js 如何从 public 路径加载人脸特征点检测模型

系列文章目录 如何在前端项目中使用opencv.js | opencv.js入门如何使用tensorflow.js实现面部特征点检测tensorflow.js 如何从 public 路径加载人脸特征点检测模型tensorflow.js 如何使用opencv.js通过面部特征点估算脸部姿态并绘制示意图tensorflow.js 使用 opencv.js 将人脸…

常用特征分箱算法

特征分箱是构建信用评分过程中最重要的一个环节。特征分箱是对连续变量离散化的一种简称&#xff0c;对于连续型变量&#xff0c;需要对其连续值进行拆分&#xff0c;并进行后续的分箱调整工作&#xff1b; 对于离散型变量&#xff0c;通常要根据每个离散值计算其坏样本占比或…

【unity】【C#】游戏音乐播放和发布

今天我们来认识一下有关 unity 音乐的一些知识 我们先创建 AudioClips 文件夹&#xff0c;这个文件夹通常就是 unity 中存放音乐的文件夹&#xff0c;然后拖进音乐文件进去 这里为大家提供了两个音乐&#xff0c;有需要可以自取 百度网盘&#xff1a;https://pan.baidu.com/s…

从库延迟案例分析

背景介绍 近来一套业务系统&#xff0c;从库一直处于延迟状态&#xff0c;无法追上主库&#xff0c;导致业务风险较大。从资源上看&#xff0c;从库的CPU、IO、网络使用率较低&#xff0c;不存在服务器压力过高导致回放慢的情况&#xff1b;从库开启了并行回放&#xff1b;在从…

一键提升Edge浏览器生产力

Edge作为微软的产品&#xff0c;其具体使用和特性在此不再赘述&#xff0c;其中对我个人而言较有吸引力的部分是其扩展部分。正是有了其丰富的扩展插件&#xff0c;其生产力才能一键跃升&#xff0c;今天让我们一起来探索几款有用&#xff08;有趣&#xff09;的扩展插件。 1.…

NASA数据集—— 亚洲夏季季风化学和气候影响项目(ACCLIP)Roscoe 激光雷达收集的云和气溶胶ADO遥感数据

ACCLIP WB-57 Aerosol and Cloud Remotely Sensed Data 简介 ACCLIP_AerosolCloud_AircraftRemoteSensing_WB57_Data 是亚洲夏季季风化学和气候影响项目&#xff08;ACCLIP&#xff09;期间从 Roscoe 激光雷达收集的云和气溶胶遥感数据。该产品的数据收集工作已经完成。 亚洲…

【汇编】_Visual Studio2019写32位汇编

目录 第一步&#xff1a;创建新项目 1. 空项目—下一步 2. 选择位置—填写项目名—创建 第二步&#xff1a;项目生成依赖项 1. 右击项目名—生成依赖项—生成自定义 2. 选中masm—确定 第三步&#xff1a;创建源文件 1. 源文件—添加—新建项 2. 选择C文件—创建新文件…

ActiveMQ + MQTT 集群搭建(虚机版本) + Springboot使用配置

文章目录 前言一、ActiveMQ、 MQTT是什么&#xff1f;1.ActiveMQ介绍2.MQTT介绍 二、集群搭建步骤1.下载apache-activemq-5.15.12-bin.tar.gz2.上传apache-activemq-5.15.12-bin.tar.gz到服务器并解压文件到文件夹clusters、master、slave三个文件夹下面形成三个节点&#xff0…

配置QtCreator能加载自定义插件的环境

配置对应环境 引言查看当前版本配置能够加载插件的环境 引言 生成的自定义插件能在QtCreator的设计器中加载&#xff0c;需要满足当前使用的QtCreator的编译时所需的Qt库和编译器。 查看当前版本 这里需要先查看自己使用的QtCreator的版本&#xff0c;即生成QtCreator时使用…

17(18)-1-HTML5 新增语义标签及属性

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; 文章目录 ✍HTML5 新增语义标签及属性&#x1f48e;1 HTML5 新增的块级语义化标签&…

C语言——指针的高级引用

目录 1.概述 2.虚拟内存空间 2.1存储期限 2.2栈区管理 2.3堆区域的使用 3.动态内存分配和释放&#xff08;重点&#xff09; 3.1通用指针类型void 3.2内存分配malloc函数 3.2.1 malloc函数&#xff08;memory allocation&#xff09;&#xff08;注意len*size&#xff…

SAP SD学习笔记04 - 出荷Plant(交货工厂),出荷Point(装运点),输送计划,品目的可用性检查,一括纳入/分割纳入,仓库管理

上一章讲了SD的主数据。 SAP SD学习笔记03 - SD模块中的主数据-CSDN博客 本章讲出荷Plant&#xff08;交货工厂&#xff09;&#xff0c;出荷Point&#xff08;装运点&#xff09;和出和路线。 还是偏理论多一些&#xff0c;后面的文章尽量多加些练习巩固一下。 1&#xff0…

Element-UI plus 自定义-下拉框选择年份【vue3】

1.实现效果 2.实现代码展示 <template><el-select v-model"selectedYear" placeholder"请选择"><el-optionv-for"year in yearOptions":key"year":label"year":value"year"></el-option>…

实验四:基于内容的推荐

代码 import pandas as pd from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.metrics.pairwise import cosine_similarity from sklearn.metrics.pairwise import pairwise_distances import numpy as np news_dfpd.read_csv(C:/Users/Administrat…

【Linux】开始了解重定向

送给大家一句话&#xff1a; 人真正的名字是&#xff1a;欲望。所以你得知道&#xff0c;消灭恐惧最有效的办法&#xff0c;就是消灭欲望。 – 史铁生 《我与地坛》 开始了解重定向 1 前言2 重定向与缓冲区2.1 文件描述符分配规则2.2 重定向的现象2.3 重定向的理解2.4 缓冲区…

阿里云微调chatglm3-6b---只有一个python解释器但gradio要求版本不兼容怎么办

安装LLAMA参考博文http://t.csdnimg.cn/6yYwG 在用LLAMA微调大模型的时候总是出现connected error out并且出现这样的界面 这是由于LLMA所要求的gradio版本>4.0.0,<4.2.0&#xff0c;然而chatglm3-6b要求的gradio版本需要gradio3.39.0才能显示出web_demo_gradio.py渲染…

10.1K star !牛逼了!开源技术速查表,推荐人手一份!

1、前言 在当今信息爆炸的时代&#xff0c;知识的获取、整理和应用显得尤为重要。随着个人职业发展和学习需求的不断提升&#xff0c;搭建一个个人知识库已成为提升竞争力的关键一环。个人知识库不仅是一个信息的存储库&#xff0c;更是一个思维的工具箱&#xff0c;它能够帮助…

【前缀积】Leetcode 除自身以外数组的乘积

题目解析 238. 除自身以外数组的乘积 算法讲解 我们可以使用两个空间保存当前位置的左边积和右边积&#xff0c;需要注意的地方初始的dp表需要初始化为1&#xff0c;如果是0则无法得到结果&#xff0c;因为此处是乘法 class Solution { public:vector<int> productEx…

Python用于比较数据结构并生成差异报告的工具库之data-diff使用详解

概要 Python的data-diff库是一个用于比较数据结构并生成差异报告的工具。它可以处理各种数据类型,如字典、列表、集合等,使得开发者能够快速识别数据之间的差异。 安装 通过pip可以轻松安装data-diff: pip install data-diff特性 支持多种数据类型:能够比较字典、列表、…