准备工作:

  • Android Studio 下载地址:Android Studio官网 OR Android Studio中文社区
  • 离线SDK下载:请下载2.9.8+版本的android平台SDK

1. 使用Andorid Studio 打开UniPlugin-Hello-AS项目

2. 切换至Project模式

3. 创建Andorid Libray名字自定义,设置API为19。

4.  将如下代码复制到build.gradle中,添加完毕后并点击右上角Sync Now进行同步。

repositories {flatDir {dirs 'libs'}
}dependencies {compileOnly fileTree(dir: 'libs', include: ['*.jar'])compileOnly fileTree(dir: '../app/libs', include: ['uniapp-v8-release.aar'])compileOnly 'androidx.recyclerview:recyclerview:1.0.0'compileOnly 'androidx.legacy:legacy-support-v4:1.0.0'compileOnly 'androidx.appcompat:appcompat:1.0.0'implementation 'com.alibaba:fastjson:1.1.46.android'implementation 'com.facebook.fresco:fresco:1.13.0'
}

5.  将避免混淆代码写入到consumer-rules.pro与proguard-rules.pro中

-keep public class * extends io.dcloud.feature.uniapp.common.UniModule{*;}

6. 创建HelloWorld文件并写入方法逻辑

(1). package 步骤三中package name

(2). 扩展方法必须加上@UniJSMethod (uiThread = false or true) 注解。UniApp 会根据注解来判断当前方法是否要运行在 UI 线程,和当前方法是否是扩展方法。

(3). UniApp是根据反射来进行调用 Module 扩展方法,所以Module中的扩展方法必须是 public 类型。

package com.example.helloworld; // 此处是自己的包名
import android.widget.Toast;import io.dcloud.feature.uniapp.annotation.UniJSMethod;
import io.dcloud.feature.uniapp.bridge.UniJSCallback;
import io.dcloud.feature.uniapp.common.UniModule;public class HelloWorld  extends UniModule {// 加法运算@UniJSMethod(uiThread = false)public void mathAdd(int a,int b, UniJSCallback callback) {callback.invoke(a + b);}// 原生toast提示@UniJSMethod(uiThread = false)public void showToast(String msg, UniJSCallback callback) {Toast.makeText(mWXSDKInstance.getContext(),msg,Toast.LENGTH_SHORT).show();callback.invoke(msg);}}

7. 打包arr包 没有Tasks解决方案

8. 新建uniapp项目引入原生插件

(1). 新建nativeplugins目录

(2). 新建插件目录Chen-HelloWorld,子文件夹android并将release.aar放入。

(3). 新建package.json文件文件描述并写入如下代码,  class格式为“包名+类名”。更多配置参考

{"name": "Chen-HelloWorld","id": "Chen-HelloWorld","version": "1.0.0","description": "PictureView","_dp_type": "nativeplugin","_dp_nativeplugin": {"android": {"hooksClass": "","plugins": [{"type": "module","name": "Chen-HelloWorld","class": "com.example.helloworld.HelloWorld"}],"integrateType": "aar","abis": []}}
}

9. 在manifest文件中引入本地andorid插件

10.  云打包Andorid自定义基座包。

11. 设置自定义基座启动

12. 使用Andorid原生插件,编写页面代码,链接Android手机真机运行即可。

<template><view class="content"><input type="number" v-model="a" /><input type="number" v-model="b" /><button type="default" @click="showtoast">showtoast</button><button type="default" @click="add">加法</button></view>
</template><script>// 引入插件let andoridModule = uni.requireNativePlugin('Chen-HelloWorld');export default {data() {return {a: 1,b: 2}},methods: {add(){andoridModule.mathAdd(this.a,this.b,(e)=>{andoridModule.showToast('A+B=' + e);});},showtoast(){andoridModule.showToast('hello world!',(e)=>{console.log('showToast reuslt:',e);});}}}
</script>
<style>.content { padding-top: 200rpx; }
</style>

参考链接:

1. Uniapp原生插件开发说明

2. uniapp安卓原生插件开发流程

Uniapp Android原生插件开发相关推荐

  1. 记一次uni-app Android原生插件开发

    背景 项目使用到了RFID射频手持设备(PDA),用于读取羊只耳标功能. 原来有写过一个插件 https://ext.dcloud.net.cn/plugin?id=5246,新的设备与原来的不一样, ...

  2. Uniapp关于 Android原生插件开发案例

    目录 一.准备工作(开发环境) 二.实操 1.使用Android studio开发工具打开UniPlugin-Hello-AS工程请在App离线SDK中查找 ​编辑 2.创建Andorid Libra ...

  3. Android原生插件开发-开发篇

    原创文档:Android原生插件开发-开发篇 · 语雀 官方文档:原生开发者支持 创建module 点击File=>New=>New Module 选择Android Library,输入 ...

  4. Android原生插件开发-证书jks篇

    原创地址:Android原生插件开发-证书jks篇 · 语雀 jks生成 下载Android Studio Download Android Studio & App Tools - Andr ...

  5. uniapp ios原生插件开发之插件包格式(package.json)

    文章目录 一.前言 二.插件包格式介绍 2.1 package.json 2.2 iOS 插件包配置 plugins integrateType 依赖资源文件 resources embedSwift ...

  6. uniapp android原生,在uni-app项目中集成Android原生工程

    [TOC] # 在uni-app项目中集成Android原生工程 按照官方的方案,我们如果进行本地打包的话,需要重新创建一个Android原生工程,于是就会导致我们管理多个项目,切来切去的也麻烦. 经 ...

  7. uniapp ios原生插件开发 (framework,cocoapods)

    文章目录 一.了解UniApp 插件的开发方式 二.准备 1.安装Cocoapods 2. 下载UniApp iOS SDK 三.将HBuilder-UniPluginDemo转成Cocoapods ...

  8. uniapp集成Android原生sdk

    最近公司有个项目,需要调用客户提供的sdk扫描rfid,项目又是用uni开发的,客户提供的sdk只有Java版本,我发现uni是提供集成原生sdk的,所以研究了一下怎么使用,并记录下来过程. 准备 S ...

  9. UNI APP---Android端原生插件开发实战(二)

    1.前言 最近一个项目要求我们的产品必须走网络隧道,并且提供了对应的SDK,很明显只能通过原生开发的方式才能实现这个流程,之前已经写过一篇通过代理的方式进行数据请求,而这次Android端的方式是采用 ...

  10. uniapp调用手机摄像头_uniapp原生插件开发之调用原生方法(android)

    需要实现的功能: 点击uniapp页面view,传递参数,调用android原生代码,然后原生代码处理数据,返回到uniapp页面 步骤 1.编写uniapp的视图页面 {{title}} 点击调用a ...

最新文章

  1. 变体类的使用 package record case【转载】
  2. Vivado IP核生成设置
  3. 如何将WinDBG中命令的输出保存到文本文件中
  4. LintCode 1862. 给树浇水的时间(图的遍历)
  5. Microsoft Visual Studio 无法启动程序“路径啪啦啪啦“. 系统找不到指定的文件。
  6. java异步获取结果_java获取异步计算的结果
  7. 在cmd下安装Scrapy怎么解决方案python3
  8. Delphi7常用插件
  9. sybase默认数据库
  10. dirent struct_关于readdir返回值中struct dirent.d_type的取值有关问题(转)
  11. 字符串转json(JSON.parse报错)
  12. 基于JavaWeb开发的智慧水务管理系统软件设计说明书
  13. centos7.6安装mysql数据库_CentOS7.6安装MYSQL8.0
  14. 基于FME的地形图图面压盖检查工具的设计与制作
  15. 转自啄木鸟学院-IT行业培训班出来的人真的不行吗?
  16. HX8110A功放IC大功率功放芯片
  17. 基于URLOS的SaaS平台发布,轻松卖软件!
  18. 高效的 Linux 限流神器Trickle
  19. 关于SSL证书链的一些认识
  20. java实现将多个word文档合并

热门文章

  1. 沃特世推出SELECT SERIES MRT多反射飞行时间质谱平台,树立高分辨质谱性能新标杆
  2. C语言基础编程题1.0
  3. ios微信分享失效_微信分享ios失败?
  4. 如何在 Google 免费云端运行 Python 深度学习框架?
  5. java 设置文本框文字居中_div居中 边框设置 文字行高设置
  6. 数理在线计算机,原码/反码/补码在线计算器
  7. 如何查看linux pagesize的大小
  8. 大数据和云计算有什么关系?
  9. 通过代理实现权限控制
  10. 现代软件工程学期总结