如何用Android Studio 开发原生插件

说明

公司使用uniapp开发的app,后期可能要对接银行的一些服务,可能会用到U盾之类的,这种没做过也不太懂,其次就是对接大华摄像头视频播放也要用到SDK之类的,设备初始化之类的。就先研究下怎么生成可供uniapp调用的原生插件了。

环境准备

  1. 下载uniapp官方Android 离线SDK下载完成解压,后面会用到。

2. 安装java环境,这个很简单,下载JDK,我装的是jdk11,安装完成配置下环境变量即可。 3. Android Studio 下载安装

开发demo插件

  1. 打开AndroidStudio,在菜单栏选择File>New>New Project,新建自定义项目,

2. 创建名称为MyDemoPlugin的测试项目,按照下面的配置就行。

新建完成后,项目如下图:

3. 接下来我们就要创建名为testPlugin插件模块,依次点击File>New>New Module。

4.创建完成,我们的项目里就多了个testPlugin的文件夹:

5.下面就要把上面第一步下载的SDK中的UniPlugin-Hello-AS下的app>libs下的文件复制到自己项目的app>libs

6. 然后就是修改我们的testPlugin中的build.gradle文件里的配置信息,选中文件,双击打开,将dependencies下默认生成的依赖注释掉,添加uni-app所需库依赖。最后一项是引入我们上面复制过来的libs文件目录。

php 复制代码
compileOnly 'androidx.recyclerview:recyclerview:1.0.0'
compileOnly 'androidx.legacy:legacy-support-v4:1.0.0'
compileOnly 'androidx.appcompat:appcompat:1.0.0'
compileOnly 'com.alibaba:fastjson:1.2.83'
compileOnly fileTree(include: ['uniapp-v8-release.aar'], dir: '../app/libs')

7.配置完保存,点击文件上方的立刻同步:

8. 上面基本配置完了,剩下的就是写个测试代码,在我们所创建的testPlugin下面,下图所示位置右键创建个TestModule类:

  • 注意:Module 扩展必须继承 UniModule 类
  • 扩展方法必须加上@UniJSMethod (uiThread = false or true) 注解。UniApp会根据注解来判断当前方法是否要运行在UI 线程,和当前方法是否是扩展方法。 示例代码:
scala 复制代码
package com.test.testplugin;
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 TestModule extends UniModule {
    @UniJSMethod(uiThread = false)
    public void open(UniJSCallback callback) {
        JSONObject data = new JSONObject();
        data.put("hello world:","插件调用成功");
        callback.invoke(data);
    }
}
  1. 注册插件,在app>src>main目录下创建assets文件夹,然后将下载的SDK中assets中的dcloud_uniplugins.json文件复制过来。修改下里面的内容如下: 修改前:
  • dcloud_uniplugins.json说明
  • nativePlugins: 插件跟节点 可存放多个插件
  • hooksClass: 生命周期代理(实现AppHookProxy接口类)格式(完整包名加类名)
  • plugins: 插件数组
  • name : 注册名称
  • class : module 或 component 实体类完整名称
  • type : module 或 component类型。

根据自身项目修改后:

json 复制代码
{
  "nativePlugins":[
    {
      "hooksClass":"",
      "plugins":[
        {
          "type":"module",
          "name":"Test-Plugin",
          "class":"com.test.testplugin.TestModule"
        }
      ]
    }
  ]
}

10. 至此,就可以打包插件了。菜单build->make moudule,下图所示:

打包需要等一会,完成后会生成如下文件,arr目录中的就是打包后的插件:

这样java开发的demo插件就算完成了,剩下的就是uniapp调用的问题了。算是完成了第一步吧,过程有点繁琐。

相关推荐
她似晚风般温柔7891 小时前
Uniapp + Vue3 + Vite +Uview + Pinia 分商家实现购物车功能(最新附源码保姆级)
开发语言·javascript·uni-app
Jiaberrr2 小时前
前端实战:使用JS和Canvas实现运算图形验证码(uniapp、微信小程序同样可用)
前端·javascript·vue.js·微信小程序·uni-app
工业互联网专业4 小时前
毕业设计选题:基于springboot+vue+uniapp的驾校报名小程序
vue.js·spring boot·小程序·uni-app·毕业设计·源码·课程设计
编程乐学11 小时前
基于Android Studio 蜜雪冰城(奶茶饮品点餐)—原创
android·gitee·android studio·大作业·安卓课设·奶茶点餐
&白帝&11 小时前
uniapp中使用picker-view选择时间
前端·uni-app
IH_LZH12 小时前
Broadcast:Android中实现组件及进程间通信
android·java·android studio·broadcast
fakaifa12 小时前
八戒农场小程序V2最新源码
小程序·uni-app·php·生活·开源软件
平凡シンプル16 小时前
安卓 uniapp跨端开发
android·uni-app
艾小逗18 小时前
uniapp快速入门教程,内容来源于官方文档,仅仅记录快速入门需要了解到的知识点
小程序·uni-app·app·es6
技术无疆1 天前
快速开发与维护:探索 AndroidAnnotations
android·java·android studio·android-studio·androidx·代码注入