uni-app与原生插件混合开发调试3-安卓原生插件开发调试和打包

 安卓原生插件开发调试和打包

上面已经介绍了怎么安装开发和调试环境,接下来就是安卓原生插件的具体开发和调试步骤:

将uniapp前端项目的index.vue文件新增代码。代码如图所示:

<template>
    <view>
        <view>
            <text>{{title}}</text>
        </view>
        
        <button @click="test">测试</button>
    </view>
</template>

<script>
    const ceshiMethodPlugin = uni.requireNativePlugin('ceshi-method');
    export default {
    data() {
            return {
        title: 'Hello'
            }
    },
    onLoad() {
            console.log('ceshiMethodPlugin', ceshiMethodPlugin);
    },
    methods: {
            /**
             * 测试原生插件
            */
            test() {
                ceshiMethodPlugin.ceshiStart('搞起来', (res) => {
                    console.log('res', res);
                    this.title = res.msg;
        })
            }
    }
    }
</script>

重新打包,重新放到Android studio项目app/src/main/assps/目录下。重新启动run,项目启动成功。

第二步 创建自己的插件项目

这步主要参考# uniapp开发安卓原生插件,不能说一模一样,只能说一毛一样,谢谢大佬文章@fly_dream。

操作:File =》 New =》 New Module =》 Android Library

新建完毕后,开始移花接木,把官方示例uniplugin_module的配置复制过去。在当前ceshi目录下,打开proguard-rules.pro文件,加入以下代码

scala复制代码-keep public class * extends io.dcloud.feature.uniapp.common.UniModule{*;}

先将java文件进行转换为 Sources Root(如果已经是了,就不用转了),操作如下图

创建Module类

填写插件代码

  1. uniapp的Module拓展,必须继承UniModule类。
  2. 扩展方法必须加上@UniJSMethod (uiThread = false or true) 注解。UniApp 会根据注解来判断当前方法是否要运行在 UI 线程,和当前方法是否是扩展方法。
  3. UniApp是根据反射来进行调用 Module 扩展方法,所以Module中的扩展方法必须是 public 类型 例子:

scala复制代码package com.example.ceshi; import com.alibaba.fastjson.JSONObject; import io.dcloud.feature.uniapp.annotation.UniJSMethod; import io.dcloud.feature.uniapp.bridge.UniJSCallback; import io.dcloud.feature.uniapp.common.UniModule; public class CeshiMethod extends UniModule { @UniJSMethod(uiThread = true) public void ceshiStart (String name, UniJSCallback callback) { if (callback != null) { JSONObject data = new JSONObject(); data.put("msg", name + ":你小子,真棒"); callback.invoke(data); } } }

在AndroidManifest.xml填写包入口,package="uni.dcloud.io.ceshi"

测试插件代码完毕。

第三步 将插件导入到项目中

在APP目录的burild.gradle中引入插件包。跟着官方示例照葫芦画瓢。

java复制代码implementation project(':插件包名')

在src/main/assets/dcloud_uniplugins.json文件中声明类名称。也是跟着官方示例照葫芦画瓢。

配置完成,Sync now 同步完后重新启动。插件流程自此结束。

备注:插件的开发与调试建议在Android studio中进行,若前端项目代码需要改动重新本地打包一下,再进入到Android studio即可。这个过程是很快的。而若是将插件进行打包,放到uniapp上进行调试,当插件需要更改,需要重新制作自定义调试基座,这个是需要云打包的,是非常慢的。总代来说,就是在Android studio中调试,uniapp前端项目可以本地打包,而在uniapp中调试,需要云打包,速度是很慢的,贼耽误时间。

第四步 打包插件,在uniapp中启动

打包插件

备注:有些 Android Studio 中右侧的 gradle 只有dependens,没有tasks任务栏。 此时点击左上角 File =》 Settings,再同步一下配置即可,按下图操作即可

此步骤引用至# uniapp开发安卓原生插件,再次感谢@fly_dream。此文中表示打包可能出会出版本问题,由于个人并非出现,并不了解,有此问题的小伙伴可参考大佬的文章。

将插件包配置到前端项目

在uniapp项目中新建unipluginDemo文件夹=》新建插件包ceshi文件夹=》新建android文件夹与package.js配置文件。将插件压缩包放到android文件夹中。uniapp会加载android文件夹中的插件,你只需在package.js中配置好文件参数即可。

注意别把package.js放到android文件夹中。

配置package.js文件,更多配置可参考uniapp官网插件参数配置进行配置。

{ "name": "ceshi",
  "id": "ceShi",
  "version": "1.0.0",
  "description": "测试用",
  "_dp_type": "nativeplugin",
  "_dp_nativeplugin": {
    "android": {
      "plugins": [
        {
          "type": "module",
          "name": "ceshi-method",
          "class": "com.example.ceshi.CeshiMethod"
        }
      ],
      "integrateType": "aar",
      "parameters": {},
      "dependencies": [
            "io.mx51:spi-client-java:2.9.5"
      ]
    }
  }
}

前端项目调用API的时候,调用的是就是配置里的name

在uniapp项目中添加插件

制定自定义基座

android证书就用本地生产的那个,与android Studio保持一致。测试的话,可以直接使用公共测试证书,更简单一些。

启动项目

错误排查

console 插件对象,若是undefined,则证明无此插件,检查name名称是否对应得上。若是空数组,证明插件已经引入,可能是类名填写错误

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

GaussDB关键技术原理:高性能(二)

GaussDB关键技术原理&#xff1a;高性能&#xff08;一&#xff09;从数据库性能优化系统概述对GaussDB的高性能技术进行了解读&#xff0c;本篇将从查询处理综述方面继续分享GaussDB的高性能技术的精彩内容。 2 查询处理综述 内容概要&#xff1a;本章节介绍查询端到端处理的…

Go团队的工作方式

在Go 1.23版本[1]即将发布(2024.8)之前&#xff0c;在GopherCon 2024[2]开幕(2024.7)之前&#xff0c;Go团队成员Cameron Balahan(Go产品负责人)[3]、 Sameer Ajmani&#xff08;Go团队工程总监&#xff09;和Russ Cox&#xff08;Go团队技术负责人&#xff09;[4]参加了业界知…

2024 年最新 Python 基于火山引擎豆包大模型搭建 QQ 机器人详细教程(更新中)

豆包大模型概述 火山引擎官网&#xff1a;https://www.volcengine.com/ 字节跳动推出的自研大模型。通过字节跳动内部50业务场景实践验证&#xff0c;每日千亿级tokens大使用量持续打磨&#xff0c;提供多模态能力&#xff0c;以优质模型效果为企业打造丰富的业务体验。 模型…

“论云原生架构及其应用”写作框架,系统架构设计师

论文真题 近年来&#xff0c;随着数字化转型不断深入&#xff0c;科技创新与业务发展不断融合&#xff0c;各行各业正在从大工业时代的固化范式进化成面向创新型组织与灵活型业务的崭新模式。在这一背景下&#xff0c;以容器和微服务架构为代表的云原生技术作为云计算服务的新…

智能化改造助力企业高质量发展

引言 背景介绍 在当今全球经济环境中&#xff0c;变化和不确定性已成为常态。企业面临的竞争压力不断增加&#xff0c;市场竞争日益激烈。新兴市场的崛起、技术进步和消费者需求的快速变化&#xff0c;使得传统的商业模式和生产方式面临巨大挑战。为了在这样的环境中保持竞争力…

Go语言之基础入门

网站&#xff1a;http://hardyfish.top/ 免费书籍分享&#xff1a; 资料链接&#xff1a;https://url81.ctfile.com/d/57345181-61545511-81795b?p3899 访问密码&#xff1a;3899 免费专栏分享&#xff1a; MySQL是怎样运行的从根儿上理解MySQL 课程链接&#xff1a;https:/…

(13)DroneCAN 适配器节点(一)

文章目录 前言 1 特点 2 固件 3 ArduPilot固件DroneCAN设置 4 DroneCAN适配器节点 前言 这些节点允许现有的 ArduPilot 支持的外围设备作为 DroneCAN 或 MSP 设备适应 CAN 总线。这也允许扩展自动驾驶仪硬件的功能。如允许 I2C 设备&#xff08;如罗盘或空速&#xff09…

网信办公布第六批深度合成服务算法备案清单,深兰科技大模型入选

6月12日&#xff0c;国家互联网信息办公室发布了第六批深度合成服务算法备案信息&#xff0c;深兰科技硅基知识智能对话多模态大模型算法通过相关审核&#xff0c;成功入选该批次《境内深度合成服务算法备案清单》。同时入选的还有腾讯混元大模型多模态算法、支付宝图像生成算法…

什么样的落地台灯比较好?五款宝藏可靠护眼大路灯推荐

现代家庭中&#xff0c;落地台灯也逐渐的代替传统台灯&#xff0c;成为许多孩子在读写时的照明神器&#xff0c;它已经被许多家长认可&#xff0c;宽广的光线光线清晰&#xff0c;视觉上舒适了不少。然而&#xff0c;目前市场上有许多品牌未经过充分的技术、材质和工艺研究&…

OpenCV颜色检测

OpenCV颜色检测 前言策略分析根据颜色检测目标对象相关链接 前言 绿幕技术是一种经典的视频编辑技术&#xff0c;可以用于将人物置于不同的背景中。例如在电影制作中&#xff0c;技术的关键在于演员不能身着特定颜色的衣服(比如绿色)&#xff0c;站在只有绿色的背景前。然后&a…

【Nginx】Nginx安装及简单使用

https://www.bilibili.com/video/BV1F5411J7vK https://www.kuangstudy.com/bbs/1353634800149213186 https://stonecoding.net/system/nginx/nginx.html https://blog.csdn.net/qq_40492693/article/details/124453090 Nginx 是一个高性能的 HTTP 和反向代理 Web 服务器。其特…

Benchmarking Panoptic Scene Graph Generation (PSG), ECCV‘22 场景图生成,利用PSG数据集

2080-ti显卡复现 源代码地址 Jingkang50/OpenPSG: Benchmarking Panoptic Scene Graph Generation (PSG), ECCV22 (github.com) 安装 pytorch 1.7版本 cuda10.1 按照readme的做法安装 我安装的过程如下图所示,这个截图是到了pip install openmim这一步 下一步 下一步 这一步…

【八】【QT开发应用】QTcreate项目打包成.exe文件或.apk文件,EnigmaVirtualBox软件下载,虚拟网站代打开QT应用

EnigmaVirtualBox下载 Enigma Virtual Box QTcreate项目打包成.exe可执行文件 找到自己写好的项目的.exe文件 将这个文件复制到一个新的文件夹里面 在这个新的文件夹里面打开cmd,这样可以使得cmd直接进入到该文件夹 打包.exe命令行 输入下面的命令行 windeployqt game…

写一个坏越的个人天地(二)

小红书上搜了下博客,感觉好像没有让自己喜欢的。昨天刚好学了点grid布局,来试试 菜单栏直接使用el-menu 下边布局就用grid局部了,这块初步想法是轮播+你的天气和我的天气+自我介绍 天气的话,这边要先找一下有没有天气的api 我这边百度搜了个聚合的api,一天可以免费调用5…

u盘sd卡格式化怎么恢复,3种恢复方法教学

u盘sd卡格式化怎么恢复&#xff0c;这是许多人在误操作后最关心的问题。我们会详细介绍五种有效的恢复方法&#xff0c;并且提供恢复原理的教学视频&#xff0c;帮助您轻松找回U盘和SD卡上被格式化的数据。 一. 数据存储与恢复的原理 1. U盘、移动硬盘、硬盘以及固态盘存储数据…

晶谷电子器件烧结封装介质材料 绝缘用晶谷低温封接环保玻璃粉 耐压高

电子器件烧结封装介质材料是用于保护和封装电子器件的关键材料。 常见的电子器件烧结封装介质材料包括以下几种&#xff1a; 1. 陶瓷材料&#xff1a;具有良好的绝缘性能、耐高温性能和机械强度。 2. 高分子材料&#xff1a;如环氧树脂等&#xff0c;具有良好的柔韧性和耐湿…

安卓手机autox.js连接电脑vscode服务

开通电脑防火墙 好多提示需要将端口通过防火墙放行&#xff0c;没有交怎么放行的。按照下方入站和出站规则都添加好的话就可以放行端口。 启动adb 本地中找到adb的目录&#xff0c;使用下方的两个命令&#xff0c;开启和结束。 adb start-server adb kill-server开启开发者…

电脑网络动态IP配置:步骤详解与实用指南

在构建和管理电脑网络时&#xff0c;IP地址的配置是一个关键步骤。IP地址是设备在网络中的唯一标识符&#xff0c;它决定了设备如何与其他设备进行通信。有两种主要的IP地址类型&#xff1a;静态IP和动态IP。静态IP是手动配置的&#xff0c;而动态IP则是由网络中的DHCP服务器自…

上海媒体邀约的类型有哪些?分行业精准邀约

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 媒体宣传加速季&#xff0c;100万补贴享不停&#xff0c;一手媒体资源&#xff0c;全国100城线下落地执行。详情请联系胡老师。 上海作为中国最大的城市之一&#xff0c;拥有丰富的媒体资…

C# 中不同类型的构造函数

介绍 在本文中&#xff0c;我们将学习 C# 中的构造函数和构造函数类型。C# 中有五种不同类型的构造函数。构造函数用于创建类的对象。以下是 C# 中的构造函数列表。 默认构造函数参数化构造函数复制构造函数静态构造函数私有构造函数 什么是构造函数&#xff1f; 构造函数是…