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

news2025/1/17 2:52:42

【彩带- 避坑知识点】:

当时开发中安卓插件打包成功后,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博客

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

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

相关文章

Mybatis枚举类型处理和类型处理器

专栏精选 引入Mybatis Mybatis的快速入门 Mybatis的增删改查扩展功能说明 mapper映射的参数和结果 Mybatis复杂类型的结果映射 Mybatis基于注解的结果映射 文章目录 专栏精选摘要引言正文枚举类型映射简单枚举映射枚举顺序映射复杂枚举映射 类型处理器 总结 摘要 在这篇…

【C++】开源:cpp-httplib HTTP协议库配置与使用

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍cpp-httplib HTTP协议库配置与使用。 无专精则不能成&#xff0c;无涉猎则不能通。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&a…

vmware虚拟机中Nat、桥接模式和仅主机的差别

NAT 在NAT模式下&#xff0c;主机3是Kali和Win两个操作系统的宿主机&#xff0c;那么Kali和Win可以连接到外网&#xff0c;也可以和主机3进行互联&#xff0c;但是主机1和主机2不能连接到Kali和Win。 桥接 在桥接模式下&#xff0c;主机3是Kali和Win两个操作系统的宿主机&…

PyTorch实战:基于Seq2seq模型处理机器翻译任务(模型预测)

文章目录 引言数据预处理加载字典对象en2id和zh2id文本分词 加载训练好的Seq2Seq模型模型预测完整代码结束语 引言 随着全球化的深入&#xff0c;翻译需求日益增长。传统的人工翻译方式虽然质量高&#xff0c;但效率低&#xff0c;成本高。机器翻译的出现&#xff0c;为解决这…

Windows搭建FTP服务器教学以及计算机端口介绍

目录 一. FTP服务器介绍 FTP服务器是什么意思&#xff1f; 二.Windows Service 2012 搭建FTP服务器 1.开启防火墙 2.创建组 ​编辑3.创建用户 4.用户绑定组 5.安装ftp服务器 ​编辑6.配置ftp服务器 7.配置ftp文件夹的权限 8.连接测试 三.计算机端口介绍 什么是网络…

最新AI系统ChatGPT网站H5系统源码,支持Midjourney绘画,GPT语音对话+ChatFile文档对话总结+DALL-E3文生图

一、前言 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作Ch…

12.27_黑马数据结构与算法笔记Java(补1)

目录 266 活动选择问题 分析 267 活动选择问题 贪心 268 分数背包问题 贪心 269 0-1 背包问题 贪心 270 斐波那契 动态规划 271 斐波那契 动态规划 降维 272 Bellman Ford 动态规划 分析 273 Bellman Ford 动态规划 实现1 274 Bellman Ford 动态规划 实现2 275 Leetco…

文献速递:人工智能医学影像分割---一个用于 COVID-19 CT 图像的粗细分割网络

文献速递&#xff1a;人工智能医学影像分割—一个用于 COVID-19 CT 图像的粗细分割网络 01 文献速递介绍 2019 年新型冠状病毒疾病&#xff08;COVID-19&#xff09;正在全球迅速传播。自 2019 年以来&#xff0c;已有超过一千万人感染&#xff0c;其中数十万人死亡。COVID-…

apisix 插件配置 未生效 未起作用

插件配置完成&#xff0c;却没生效&#xff0c;请检查插件的启用状态是否是启用状态&#xff0c; 以某个route配置的限速插件&#xff08;limit-req&#xff09;为例 1.打开dashboad-->路由-->某个路由-->更多-->查看&#xff0c; 查看配置&#xff0c;实际未启用…

leaflet学习笔记-初始化vue项目(一)

leaflet简介 Leaflet是一款开源的轻量级交互式地图可视化JavaScript库&#xff0c;能够满足大多数开发者的地图可视化需求&#xff0c;其最早的版本大小仅仅38 KB。Leaflet能够在主流的计算机或移动设备上高效运行&#xff0c;其功能可通过插件进行扩展&#xff0c;拥有易于使用…

Day20 222完全二叉树的节点个数 110平衡二叉树 257二叉树的所有路径

222 完全二叉树的结点个数 本题先不把它当成完全二叉树来看&#xff0c;用广度优先和深度优先搜索分别遍历&#xff0c;也能达到目的&#xff0c;只要将之前的代码稍加修改即可。注意后序遍历时的result要加上自身本身的那个结点。 //后序递归遍历 class Solution { public:in…

CGAL的D维包围盒相交计算

包围盒相交测试是一种用于快速判断两个三维对象是否相交的方法&#xff0c;而AABB树则是一种数据结构&#xff0c;常用于加速场景中的射线检测和碰撞检测。 首先&#xff0c;让我们了解一下包围盒相交测试。这种测试的目的是为了快速判断两个三维对象是否相交&#xff0c;而不需…

数据仓库 基本信息

数据仓库基本理论 数据仓库&#xff08;英语&#xff1a;Data Warehouse&#xff0c;简称数仓、DW&#xff09;,是一个用于存储、分析、报告的数据系统。数据仓库的目的是构建面向分析的集成化数据环境&#xff0c;为企业提供决策支持&#xff08;Decision Support&#xff09…

【轻松入门】OpenCV4.8 + QT5.x开发环境搭建

引言 大家好&#xff0c;今天给大家分享一下最新版本OpenCV4.8 QT5 如何一起配置&#xff0c;完成环境搭建的。 下载OpenCV4.8并解压缩 软件版本支持 CMake3.13 或者以上版本 https://cmake.org/ VS2017专业版或者以上版本 QT5.15.2 OpenCV4.8源码包 https://github.com/op…

主浏览器优化之路1——你现在在用的是什么浏览器?Edge?谷歌?火狐?360!?

上一世&#xff0c;我的浏览器之路 引言为什么要用两个浏览器为什么一定要放弃火狐结尾给大家一个猜数字小游戏&#xff08;测运气&#xff09; 引言 小时候&#xff0c;我一开始上网的浏览器是2345王牌浏览器吧&#xff0c; 因为上面集成了很多网站&#xff0c;我记得上面有7…

【MySQL】多表连接查询

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a; 数 据 库 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 1. 交叉连接&#xff08;CROSS JOIN&#xff09; 2. 内连接&#xff08;INNER JOIN&#xff09; 3. 外连接 结语 我的…

几款软件助您事半功倍

在如今繁忙而竞争激烈的工作环境中&#xff0c;寻找适合自己的工作软件是提高工作效率、优化工作流程的重要一环。为了帮助你更好地管理任务、组织工作和提高生产力&#xff0c;我将向你推荐四款备受推崇的工作软件&#xff0c;并详细介绍它们各自的功能和特点。 1. Zoom&#…

记录使用minikube部署web程序,并灰度发布不同版本

1. 安装软件 1.1安装docker desktop 下载地址 重点&#xff1a;配置镜像加速 1.2 安装k8s&minikube 这里参考阿里社区的配置 minikube1.24.0版本下载地址 重点&#xff1a;安装版本问题【因为后面要用阿里云的服务来获取所需Docker镜像&#xff0c;一直不成功使用的高版…

软件测试/测试开发丨Pytest学习笔记

Pytest 格式要求 文件: 以 test_ 开头或以 _test 结尾类: 以 Test 开头方法/函数: 以 _test 开头测试类中不可以添加构造函数, 若添加构造函数将导致Pytest无法识别类下的测试方法 断言 与Unittest不同, 在Pytest中我们需要使用python自带的 assert 关键字进行断言 assert…

JOSEF约瑟 双位置继电器 DCS-12/110V 线圈电压直流110V 板前安装

系列型号&#xff1a; DCS-11双位置继电器&#xff1b; DCS-12双位置继电器&#xff1b; DCS-13双位置继电器&#xff1b; RXMVB2 RK 251 204双位置继电器&#xff1b; RXMVB2 RK 251 205双位置继电器&#xff1b; RXMVB2 RK 251 106双位置继电器&#xff1b; 一、用途 …