【2021/12/31】uniapp之安卓原生插件开发教程
uniapp之安卓原生插件开发教程

准备
插件功能简介
- 加法功能,我们把插件名称起名为
leruge-add,方法是add,参数是a和b
过程
- HbuilderX创建一个项目

- 在
pages/index/index.vue中随便写一个按钮,然后调用我们的原生插件leruge-add,代码如下

<template>
<view>
<button @click="add">加法</button>
</view>
</template>
<script>
export default {
methods: {
add() {
// 引入原生插件 leruge-add
let lerugeAdd = uni.requireNativePlugin("leruge-add")
// 调用
lerugeAdd.add({
a: 1,
b: 2
}, res => {
uni.showToast({
title: JSON.stringify(res),
icon: 'none'
})
})
}
}
}
</script>
<style>
</style>
- 申请Appkey,在开发者中心,点击刚才创建的app

- Android包名和IOS Bundled都填写成
com.android.UniPlugin - SHA1签名自行百度如何获取吧,这里就不错详细讲解了,教程
- 点击保存,生成appkey

- 解压我们下载好的APP离线SDK,下载地址

- 打开Android Studio,open选择
UniPlugin-Hello-AS


- 我个人习惯project模式,所以切换一下

- 把我们刚才申请的appkey填写到
app/src/main/AndroidManifest.xml中,因为开发的是安卓,所以appkey肯定也是安卓的

- 把我们的证书放到app目录下,我的证书名字叫
leruge.keystore

- 配置证书,在
app/build.gradle的signingConfigs选项中

- 右键
UniPlugin-Hello-AS,创建Module

- 填写插件信息

- 配置
leruge_add/build.gradle,复制例子uniplugin_module/build.gradle

- 在
leruge_add/src/main/java/com/example/leruge/add创建类AddModule

- 实现加法,代码如下

package com.example.leruge.add;
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 AddModule extends UniModule {
@UniJSMethod
public void add(JSONObject json, UniJSCallback callback) {
int a = json.getIntValue("a");
int b = json.getIntValue("b");
JSONObject res = new JSONObject();
res.put("code", 1);
res.put("result", a + b);
callback.invoke(res);
}
}
- 注册插件,在
app/src/main/assets/dcloud_uniplugins.json文件中添加,如下

- 到HbuilderX生成本地打包资源

- 把生成的本地打包资源复制到
app/src/main/assets/apps目录下


- 配置appid,在
app/src/main/assets/data/dcloud_control.xml中配置

- 添加插件project引用,在
app/build.gradle中添加组件

- 测试,手机或者虚拟设备连接以后,点击运行进行测试

- 测试成功以后就生成uniapp插件,点击Android Studio右侧的
Gradle,依次选择leruge_add/Tasks/other/assembleRelease,双击生成aar包,生成的包在leruge_add/build/outputs/aar目录下 - 创建跟插件相同名字的文件夹
leruge_add,在leruge_add下创建android文件夹和package.json文件 - aar包放到
android文件夹下,package.json最小配置即可,也可以按照实际情况配置

{
"name": "leruge-add",
"id": "leruge-add",
"version": "1.0.1",
"description": "加法",
"_dp_type":"nativeplugin",
"_dp_nativeplugin":{
"android": {
"plugins": [
{
"type": "module",
"name": "lerug-add",
"class": "com.example.leruge.add.AddModule"
}
],
"integrateType": "aar"
}
}
}
- 是作为本地插件使用,还是上传到插件市场都是可以的
结束语
到此为止,安卓原生插件开发就已经完成了
留言
点击留言
【2021/12/31】uniapp之安卓原生插件开发教程的更多相关文章
- uni-app&H5&Android混合开发三 || uni-app调用Android原生方法的三种方式
前言: 关于H5的调用Android原生方法的方式有很多,在该片文章中我主要简单介绍三种与Android原生方法交互的方式. 一.H5+方法调用android原生方法 H5+ Android开发规范官 ...
- Unity实现相似于安卓原生项目的点击安卓返回button回到前一页的功能
本章博主和大家一起讨论下Unity怎么实现类似安卓原生项目,点击安卓返回button实现返回到前一个页面的功能. 1.定义一个泛型用于响应安卓的返回button public static List& ...
- 在ERP中定义用户时报错:SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间
在ERP中定义用户时. 报错: SqlDateTime 溢出.必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间. 原因分析: ①没有正确初 ...
- 【.NET】SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM之间
#背景 向sqlserver数据库中一个datetime字段插入DateTime.MinValue时, 出现问题: SqlDateTime 溢出.必须介于 1/1/1753 12:00:00 AM 和 ...
- angularjs中安卓原生APP调用H5页面js函数,js写法应注意
安卓原生app调用js方法,js方法应写在html下的script标签内,不能有任何function包裹,例如angular的controller层,这样APP也是获取不到的: 所以只有放在html中 ...
- SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间。
出现的错误:SqlDateTime 溢出.必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间. 错误的原因:.NET Framework dat ...
- 解决:SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间提示问题
提示信息如下 “/”应用程序中的服务器错误. SqlDateTime 溢出.必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间. 问题现象: 问 ...
- My latest news(--2016.12.31)
2016.12.31 前一天晚上看 “纪实新闻” ,白天看视频,晚上刷题,看电影<湄公河行动> 2016.12.30 18:36 昨天上午考完了本学期的最后一门课程,下午乒乓+值班,今天 ...
- 将H5页面打包成安卓原生app
第一步:下载HBuilderX,新建项目选择5+App新建一个空项目如下图 新建后项目目录结构如下图 第二步,将你要打包成安卓app的文件打包,最后生成的文件目录如下图 1.打包完成后,将对应文件内容 ...
随机推荐
- 大数据学习day20-----spark03-----RDD编程实战案例(1 计算订单分类成交金额,2 将订单信息关联分类信息,并将这些数据存入Hbase中,3 使用Spark读取日志文件,根据Ip地址,查询地址对应的位置信息
1 RDD编程实战案例一 数据样例 字段说明: 其中cid中1代表手机,2代表家具,3代表服装 1.1 计算订单分类成交金额 需求:在给定的订单数据,根据订单的分类ID进行聚合,然后管理订单分类名称, ...
- Default arguments and virtual function
Predict the output of following C++ program. 1 #include <iostream> 2 using namespace std; 3 4 ...
- Linux学习 - 文件特殊权限
一.SUID权限(只针对文件) 只有可执行的二进制程序才能设定SUID权限 命令执行者要对该程序拥有x(执行)权限 1 拥有SUID的文件 /usr/bin/passwd 2 功能: 命令执行者(其他 ...
- Linux基础命令---slabtop
slabtop slabtop实时显示详细的内核板条缓存信息.它显示按所列排序条件之一排序的顶级缓存的列表.它还会显示一个统计信息头,其中填充了板坯层信息. 此命令的适用范围:RedHat.RHEL. ...
- 如何使用pycharm克隆阿里云项目
我们回到PyCharm刚打开时的界面,如图1-1所示: 点击"Check out from Version Control" => "Git",如图1 ...
- 使用jsp制作index,可以通过<c:if test==“管理员”>或<c:if test=="客户">来区别展示用户界面
<%@ page contentType="text/html;charset=UTF-8" language="java" %><%@ ta ...
- java配置文件的使用 —— 设置一个类为单例模式
阅读本文章前建议先阅读:java通过JDBC访问sqlserver数据库 一.使用原因:通过JDBC连接数据库时有时会需要连接不同的数据库,而jar包.连接url.用户名和密码等都是写定在程序中,不便 ...
- python实现skywalking邮件告警webhook接口
1.介绍 Skywalking可以对链路追踪到数据进行告警规则配置,例如响应时间.响应百分比等.发送警告通过调用webhook接口完成.webhook接口用户可以自定义. 2.默认告警规则 告警配置文 ...
- ICCV2021 | 用于视觉跟踪的学习时空型transformer
前言 本文介绍了一个端到端的用于视觉跟踪的transformer模型,它能够捕获视频序列中空间和时间信息的全局特征依赖关系.在五个具有挑战性的短期和长期基准上实现了SOTA性能,具有实时性,比 ...
- DMA(Data Migration Assistant)迁移SQLServer数据库
DMA适用于 本地SQLServer向Azure SQL Database迁移 两台不同的数据库服务器之间迁移 高版本->低版本 或 低版本->高版本 本文以两台不同服务器的低版本(SQL ...