当前位置: 首页 > news >正文

uniapp原生插件 - android原生插件打包流程 ( 避坑指南一)

【彩带- 避坑知识点】:

当时开发中安卓插件打包成功后,uniapp引用插件aar,用云打包 ,总是提示不包含插件。原因是因为module的androidManifest.xml文件没有注册activity。 这一步 很重要,一定要注册。

---------------------------------------------------------------------------------------------------------------------------------

流程开始:

准备步骤

  1. 下载Android Studio
  2. 下载app离线SDK

注意:建议都下载最新版本,下载地址与详细请参考官方文档。Android插件开发教程

一、导入uni插件项目(注意:尽量用demo里面的buildgradle插件版本号和gradle版本

  • 解压下载的app离线SDK

  • 将UniPlugin-Hello-AS项目导入到Android studio中

  • 等待Android studio编译完成,编译完成后的项目结构如下

二、新建module

  • 新建module

  • 选择Android library,记住你的package name

  • 此时可能会有报错

  • 解决报错,复制build.gradle(uniplugin_module)的内容,替换刚刚生成的build.gradle

  • 找到报错的文件,复制uniplugin module中的内容,粘贴修改刚刚报错的文件

  • 点击try again,此时编译成功,出现以下文件与文件夹

  • 新建java类,注意:命名与xml文件中设置的命名要一致

  • 随便写一些测试代码
    • 注意:继承UniModule,并添加@UniJSMethod注解
  • package com.example.mylibrary;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;// 一定要继承UniModule
    public class testModule extends UniModule {// 使用UniJSMethod注解,才能使用js调用@UniJSMethod(uiThread = true)public void  add (JSONObject json, UniJSCallback callback) {final int a = json.getInteger("a");final int b = json.getInteger("b");callback.invoke(new JSONObject() {{put("code", 0);put("result", a + b);}});}
    }
    
  • 在build.gradle(app)中添加uniapp-插件,点击sync now
  • 在dcloud_uniplugin.json中新增插件,注意:插件命名会在uniapp中引用
  • 新建项目,在项目中引用插件,使用module的方法
  • 三、在uniapp中引用

    本文采用vue3+ts编写uniapp部分

  • <template><view class="content"><image class="logo" src="/static/logo.png"></image><view class="text-area"><button @click="test">测试</button></view></view>
    </template><script setup lang="ts">const test= ()=>{// 引入自定义插件const testModule = uni.requireNativePlugin('my-testmodule')// 使用module的add方法testModule.add({a:1,b:3},e=>{uni.showToast({title:JSON.stringify(e),icon:'none'})})}
    </script>
    

    四、在Android studio中调试

  • uniapp中打包app资源包,并复制打包出来的这个文件夹
  • 粘贴到原生项目中
  • 修改dcloud_control.xml中的appid,并开启调试模式
  • 点击运行,我这里使用的是真机运行
  • 此时会报appkey配置错误
  • 解决方案参考:appkey未配置或配置错误
  • 解决完后,重新运行一下,调试成功

参考文档:uniapp如何开发原生插件?踩坑指南(一) - 掘金某些App功能只能在原生开发才能实现,比如aidl等。这就需要使用App离线SDK来开发原生插件,以来扩展原生的能力。icon-default.png?t=N7T8https://juejin.cn/post/7194743378830409783

android studio如何打包aar,请见下一篇文章:

uniapp-android原生插件如何打aar包 (闭坑指南二)-CSDN博客

相关文章:

uniapp原生插件 - android原生插件打包流程 ( 避坑指南一)

【彩带- 避坑知识点】: 当时开发中安卓插件打包成功后&#xff0c;uniapp引用插件aar&#xff0c;用云打包 &#xff0c;总是提示不包含插件。原因是因为module的androidManifest.xml文件没有注册activity。 这一步 很重要&#xff0c;一定要注册。 --------------------------…...

搭建maven私服

maven maven简介 什么是maven&#xff1f; Maven这个单词来自于意第绪语&#xff08;犹太语&#xff09;&#xff0c;意为知识的积累。 Maven项目对象模型(POM)&#xff0c;可以通过一小段描述信息来管理项目的构建&#xff0c;报告和文档的项目管理工具软件。 Maven 除了以…...

EST-100身份证社保卡签批屏按捺终端PC版web版本http协议接口文档,支持web网页开发对接使用

<!DOCTYPE html><html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width,initial-scale1.0"><title>演示DEMO</title><script type"text/…...

基于SpringBoot的毕业论文管理系统

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于SpringBoot的毕业论文管理系统,java…...

iToF人脸识别

iToF(间接飞行时间)是一种测量光飞行时间的技术,主要应用于人脸识别。 iToF人脸识别技术在哪些场景下会用到 iToF人脸识别技术可以应用于许多场景,以下是一些常见的应用场景: 平安城市:在城市监控系统中,iToF人脸识别技术可以用于实时监控、目标检测和识别,以及异常行为…...

Django开发3

Django开发3 Django开发编辑用户9.靓号管理9.1 表结构9.2 靓号列表9.3 新建靓号9.4 编辑靓号9.5 搜索手机号9.6 分页 10.时间插件11.ModelForm和BootStrap操作 各位小伙伴想要博客相关资料的话关注公众号&#xff1a;chuanyeTry即可领取相关资料&#xff01; Django开发 部门管…...

MS2358:96KHz、24bit 音频 ADC

产品简述 MS2358 是带有采样速率 8kHz-96kHz 的立体声音频模数 转换器&#xff0c;适合于面向消费者的专业音频系统。 MS2358 通过使用增强型双位 Δ - ∑ 技术来实现其高精度 的特点。 MS2358 支持单端的模拟输入&#xff0c;所以不需要外部器 件&#xff0c;非常适…...

【Android12】Android Framework系列---tombstone墓碑生成机制

tombstone墓碑生成机制 Android中程序在运行时会遇到各种各样的问题&#xff0c;相应的就会产生各种异常信号&#xff0c;比如常见的异常信号 Singal 11&#xff1a;Segmentation fault表示无效的地址进行了操作&#xff0c;比如内存越界、空指针调用等。 Android中在进程(主要…...

中间件系列 - Redis入门到实战(原理篇)

前言 学习视频&#xff1a; 黑马程序员Redis入门到实战教程&#xff0c;深度透析redis底层原理redis分布式锁企业解决方案黑马点评实战项目 中间件系列 - Redis入门到实战 本内容仅用于个人学习笔记&#xff0c;如有侵扰&#xff0c;联系删除 学习目标 Redis数据结构Redis网…...

P2249 【深基13.例1】查找

P2249 【深基13.例1】查找 P2249 【深基13.例1】查找 题意 输入n 个不超过10的9次方的单调不减的&#xff08;就是后面的数字不小于前面的数字&#xff09;非负整数a1&#xff0c;a2&#xff0c;a3…然后进行 m 次询问。对于每次询问&#xff0c;给出一个整数q&#xff0c;要…...

linux常用shell脚本

查看系统当前进程连接数 netstat -an | grep ESTABLISHED | wc -l 如何在/usr目录下找出大小超过10MB的文件? find /usr -type f -size 10240k 添加一条到192.168.3.0/24的路由&#xff0c;网关为192.168.1.254&#xff1f; route add -net 192.168.3.0/24 netmask 255.2…...

Rust学习笔记005:结构体 struct

在 Rust 中&#xff0c;struct 是一种用于创建自定义数据类型的关键字&#xff0c;它允许你定义和组织数据的结构。struct 可以包含多个不同类型的字段&#xff08;fields&#xff09;&#xff0c;每个字段都有一个名称和一个类型。 定义结构体 下面是一个简单的例子&#xff…...

maven中dependencyManagement标签

简介 dependencyManagement正如其名&#xff0c;用于项目依赖的统一管理。 在父项目中的pom.xml文件中加入dependencyManagement标签即可完成依赖版本的声明。在声明完成后&#xff0c;子项目&#xff08;module&#xff09;中引用相同的依赖时可以不指定version标签自动引入…...

SparkStreaming与Kafka整合

1.3 SparkStreaming与Kafka整合 1.3.1 整合简述 kafka是做消息的缓存&#xff0c;数据和业务隔离操作的消息队列&#xff0c;而sparkstreaming是一款准实时流式计算框架&#xff0c;所以二者的整合&#xff0c;是大势所趋。 ​ 二者的整合&#xff0c;有主要的两大版本。 kaf…...

openwrt源码编译

下载openwrt源码 git clone https://github.com/openwrt/chaos_calmer.git // 官方下载地址 当前我们基于15.05版本开发&#xff0c;如果开发者想用最新的OpenWRT系统&#xff0c;可以下载 https://github.com/openwrt/openwrt.git git clone https://github.com/Ying-Yun/o…...

【Leetcode Sheet】Weekly Practice 22

Leetcode Test 1349 参加考试的最大学生数(12.26) 给你一个 m * n 的矩阵 seats 表示教室中的座位分布。如果座位是坏的&#xff08;不可用&#xff09;&#xff0c;就用 # 表示&#xff1b;否则&#xff0c;用 . 表示。 学生可以看到左侧、右侧、左上、右上这四个方向上紧邻…...

ROS TF坐标变换 - 静态坐标变换

目录 一、静态坐标变换&#xff08;C实现&#xff09;二、静态坐标变换&#xff08;Python实现&#xff09; 如前文所属&#xff0c;ROS通过广播的形式告知各模块的位姿关系&#xff0c;接下来详述这一机制的代码实现。 模块间的位置关系有两种类型&#xff0c;一种是相对固定…...

香橙派5plus从ssd启动Ubuntu

官方接口图 我实际会用到的就几个接口&#xff0c;背面的话就一个M.2固态的位置&#xff1a; 其中WIFI模块的接口应该也可以插2230的固态&#xff0c;不过是pcie2.0的速度&#xff0c;背面的接口则是pcie3.0*4的速度&#xff0c;差距还是挺大的。 开始安装系统 准备工作 一张…...

JWT+Redis 实现接口 Token 校验

1、业务逻辑 有一些接口&#xff0c;需要用户登录以后才能访问&#xff0c;用户没有登录则无法访问。 因此&#xff0c;对于一些限制用户访问的接口&#xff0c;可以在请求头中增加一个校验参数&#xff0c;用于判断接口对应的用户是否登录。 而对于一些不需要登录即可访问的接…...

C语言 linux文件操作(二)

文章目录 一、获取文件长度二、追加写入三、覆盖写入四、文件创建函数creat 一、获取文件长度 通过lseek函数&#xff0c;除了操作定位文件指针&#xff0c;还可以获取到文件大小&#xff0c;注意这里是文件大小&#xff0c;单位是字节。例如在file1文件中事先写入"你好世…...

PowerInfer深度学习框架集成指南:与PyTorch/TensorFlow的完美融合方案

PowerInfer深度学习框架集成指南&#xff1a;与PyTorch/TensorFlow的完美融合方案 【免费下载链接】PowerInfer 项目地址: https://gitcode.com/gh_mirrors/po/PowerInfer PowerInfer是一个基于激活局部性的高性能大语言模型推理引擎&#xff0c;专为消费级GPU优化设计…...

从演唱会踩踏到交通拥堵:我们如何用无人机双光人群计数,为城市装上‘智慧之眼’?

无人机双光人群计数&#xff1a;城市安全管理的智能升级之路 当夜幕降临&#xff0c;体育场外数万观众正陆续离场&#xff0c;安保指挥中心的大屏上闪烁着红黄相间的热力图——这不是科幻电影的场景&#xff0c;而是某省会城市在明星演唱会后的真实一幕。通过部署在关键节点的1…...

如何让旧款Mac焕发新生:OpenCore Legacy Patcher终极指南

如何让旧款Mac焕发新生&#xff1a;OpenCore Legacy Patcher终极指南 【免费下载链接】OpenCore-Legacy-Patcher 体验与之前一样的macOS 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 你是否有一台被苹果官方"遗忘"的旧款Mac&a…...

Attention Unet vs Unet++:在Camvid数据集上的性能对比实验

Attention Unet与Unet在Camvid数据集上的深度性能评测 语义分割作为计算机视觉领域的核心任务之一&#xff0c;其模型架构的创新从未停止。在众多改进方案中&#xff0c;Attention机制与嵌套跳跃连接&#xff08;Nested Skip Connection&#xff09;分别代表了两种不同的优化思…...

RWKV7-1.5B-g1a作品分享:多轮追问下保持主题聚焦的能力验证

RWKV7-1.5B-g1a作品分享&#xff1a;多轮追问下保持主题聚焦的能力验证 1. 模型简介与测试背景 rwkv7-1.5B-g1a是基于RWKV-7架构的多语言文本生成模型&#xff0c;特别适合基础问答、文案续写、简短总结和轻量中文对话场景。本次测试将重点验证该模型在多轮对话中保持主题聚焦…...

3步掌握Umi-OCR批量处理:从海量图片中高效提取文字

3步掌握Umi-OCR批量处理&#xff1a;从海量图片中高效提取文字 【免费下载链接】Umi-OCR Umi-OCR: 这是一个免费、开源、可批量处理的离线OCR软件&#xff0c;适用于Windows系统&#xff0c;支持截图OCR、批量OCR、二维码识别等功能。 项目地址: https://gitcode.com/GitHub_…...

SAP Basis实战:Client创建与数据迁移的完整流程与避坑指南

1. 理解SAP Client的基本概念 在SAP系统中&#xff0c;Client&#xff08;客户端&#xff09;是一个非常重要的概念。简单来说&#xff0c;它就像是系统中的一个独立工作空间&#xff0c;每个Client都有自己的配置和数据。想象一下&#xff0c;一家大型企业有多个子公司&#x…...

OpenClaw对话日志分析:GLM-4.7-Flash任务执行成功率提升

OpenClaw对话日志分析&#xff1a;GLM-4.7-Flash任务执行成功率提升 1. 为什么需要分析对话日志 上个月我把本地部署的OpenClaw智能体从Qwen切换到了GLM-4.7-Flash模型&#xff0c;本以为会获得更好的任务执行效果&#xff0c;结果却遇到了意想不到的问题。每天早上打开电脑&…...

从DTC诊断码到ECU恢复:深入解析车载CAN总线的BUSOFF快慢恢复机制

从DTC诊断码到ECU恢复&#xff1a;车载CAN总线BUSOFF快慢恢复机制实战指南 当CAN总线上的某个ECU因连续发送失败而触发BUSOFF状态时&#xff0c;整个车载网络的稳定性便面临严峻考验。作为汽车电子诊断工程师&#xff0c;我们常常需要在深夜的生产线上&#xff0c;面对闪烁的故…...

5个核心维度掌握YimMenu:GTA5辅助工具全攻略

5个核心维度掌握YimMenu&#xff1a;GTA5辅助工具全攻略 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/YimMenu …...