uniapp之安卓原生插件开发教程

准备

  1. hbuilderX,下载
  2. app离线SDK,下载
  3. Andorid Studio,安卓官方中文社区
  4. 证书(可以自己准备,也可以使用android Studio生成)

插件功能简介

  • 加法功能,我们把插件名称起名为leruge-add,方法是add,参数是ab

过程

  1. HbuilderX创建一个项目

  2. 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>
  1. 申请Appkey,在开发者中心,点击刚才创建的app

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

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

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



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

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

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

  10. 配置证书,在app/build.gradlesigningConfigs选项中

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

  12. 填写插件信息

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

  14. leruge_add/src/main/java/com/example/leruge/add创建类AddModule

  15. 实现加法,代码如下

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);
}
}
  1. 注册插件,在app/src/main/assets/dcloud_uniplugins.json文件中添加,如下

  2. 到HbuilderX生成本地打包资源

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



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

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

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

  7. 测试成功以后就生成uniapp插件,点击Android Studio右侧的Gradle,依次选择leruge_add/Tasks/other/assembleRelease,双击生成aar包,生成的包在leruge_add/build/outputs/aar目录下
  8. 创建跟插件相同名字的文件夹leruge_add,在leruge_add下创建android文件夹和package.json文件
  9. 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"
}
}
}
  1. 是作为本地插件使用,还是上传到插件市场都是可以的

结束语

到此为止,安卓原生插件开发就已经完成了

留言

点击留言

【2021/12/31】uniapp之安卓原生插件开发教程的更多相关文章

  1. uni-app&H5&Android混合开发三 || uni-app调用Android原生方法的三种方式

    前言: 关于H5的调用Android原生方法的方式有很多,在该片文章中我主要简单介绍三种与Android原生方法交互的方式. 一.H5+方法调用android原生方法 H5+ Android开发规范官 ...

  2. Unity实现相似于安卓原生项目的点击安卓返回button回到前一页的功能

    本章博主和大家一起讨论下Unity怎么实现类似安卓原生项目,点击安卓返回button实现返回到前一个页面的功能. 1.定义一个泛型用于响应安卓的返回button public static List& ...

  3. 在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 之间. 原因分析: ①没有正确初 ...

  4. 【.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 和 ...

  5. angularjs中安卓原生APP调用H5页面js函数,js写法应注意

    安卓原生app调用js方法,js方法应写在html下的script标签内,不能有任何function包裹,例如angular的controller层,这样APP也是获取不到的: 所以只有放在html中 ...

  6. 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 ...

  7. 解决: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 之间. 问题现象: 问 ...

  8. My latest news(--2016.12.31)

    2016.12.31  前一天晚上看 “纪实新闻” ,白天看视频,晚上刷题,看电影<湄公河行动> 2016.12.30 18:36 昨天上午考完了本学期的最后一门课程,下午乒乓+值班,今天 ...

  9. 将H5页面打包成安卓原生app

    第一步:下载HBuilderX,新建项目选择5+App新建一个空项目如下图 新建后项目目录结构如下图 第二步,将你要打包成安卓app的文件打包,最后生成的文件目录如下图 1.打包完成后,将对应文件内容 ...

随机推荐

  1. add more

    # -*- coding: utf-8 -*- print('123', 123) print(type('123'), type(123)) # string, integer /ˈintidʒə/ ...

  2. 几种常用JavaScript设计模式es6

    设计模式分类(23种设计模式) 创建型 单例模式 原型模式 工厂模式 抽象工厂模式 建造者模式 结构型 适配器模式 装饰器模式 代理模式 外观模式 桥接模式 组合模式 享元模式 行为型 观察者模式 迭 ...

  3. Maven 学习第一步[转载]

    转载至:http://www.cnblogs.com/haippy/archive/2012/07/04/2576453.html 什么是 Maven?(摘自百度百科) Maven是Apache的一个 ...

  4. @Data 注解引出的 lombok

    今天在看代码的时候, 看到了这个注解, 之前都没有见过, 所以就查了下, 发现还是个不错的注解, 可以让代码更加简洁. 这个注解来自于 lombok,lombok 能够减少大量的模板代码,减少了在使用 ...

  5. OpenStack之六: plancement服务(端口8778)

    官网地址:https://docs.openstack.org/placement/stein/install/install-rdo.html #:创建placement库,并授权 MariaDB ...

  6. FastDFS分布式文件系统及源码解析

    记录一次本人学习FastDFS-分布式文件系统的学习过程,希望能帮助到有需要的人. 首选得对此技术有个大概的了解,可以参考 https://www.cnblogs.com/centos2017/p/7 ...

  7. Win10 Chrome 在DPI缩放下导致界面放大问题 解决方案

    支持:54.0.2840.59 m (64-bit) 以下大多数版本,具体未测试.如有问题可以反馈一下. 方法1:为程序设置"高DPI设置时禁用显示缩放. 方法2:为程序添加启动参数: /h ...

  8. 【HarmonyOS】【DevEco Studio】NOTE04:How to Jump to a Page(页面间的跳转)

    页面创建与基本设置 创建页面 创建两个新页面,分别为AbilityPage1.AbilityPage2 设置页面基本内容 以AbilityPage1为例 导包 import com.example.m ...

  9. C#汽车租赁系统

    类图: 父类(车类,抽象类) /// <summary> /// 车辆基本信息类.搞一个抽象类玩玩 /// </summary> public abstract class V ...

  10. Jenkins配置管理工具

    安装完成后,配置管理工具 安装并配置git yum -y install git 编辑git环境变量为/usr/bin/git 安装并配置maven wget https://mirrors.tuna ...