Uniapp:原生android插件开发、打包、调试全流程(详细案例,学习参考)

一、前言

最近公司有个项目,技术需求是uniapp调用android原生插件,以此记录下学习过程

二、准备

1、Android Studio开发工具,下载地址:https://developer.android.google.cn/studio?hl=zh-cn

2、下载安卓离线SDK,下载地址:https://nativesupport.dcloud.net.cn/AppDocs/download/android.html

3、下载HBuilderX,下载地址:https://dcloud.io/hbuilderx.html

4、生成签名证书,步骤如下:

keytool -genkey -v -keystore uniapp.keystore -alias android

uniapp.keystore是生成证书的名称,这里使用的是uniapp.keystore

在这里插入图片描述
口令默认为android,也可以更改
在这里插入图片描述
楼主使用的默认口令,输入信息,最后输入y
在这里插入图片描述
回车稍等一会,继续输入命令:keytool -list -v -keystore uniapp.keystore
在这里插入图片描述
在这里插入图片描述

生成成功!

三、创建Uinapp案例

进入dcloud开发者中心:https://dev.dcloud.net.cn,需要登录
在这里插入图片描述

在这里插入图片描述
应用类型选择uniapp,输入自己的应用名称,返回我的应用列表,点击应用名称
在这里插入图片描述

选择各平台信息,点击新增
在这里插入图片描述

在这里插入图片描述
创建离线Key
在这里插入图片描述
创建成功
在这里插入图片描述
完成后,打开HBuilderX,登录DCloud账号密码,新建一个名称相同的uniapp项目,查看uni-app应用标识是否对应
在这里插入图片描述

四、Android插件开发

1、导入离线SDK中的原生插件开发框架,UniPlugin-Hello-AS
在这里插入图片描述

在这里插入图片描述
配置appKey,把刚才申请的离线Key的值写入
在这里插入图片描述
这里的值
在这里插入图片描述
2、把最开始生成的签名证书放入app目录下
在这里插入图片描述
配置签名证书,在app目录下的build.gradle中的signingConfigs,改成自己对应的值,如果是按照博主步骤来的,别名,秘钥密码,存储密码皆为android
在这里插入图片描述

3、创建Module,在根目录右键新建Module
在这里插入图片描述
选择Android Library,填写信息确认Finish
在这里插入图片描述
4、进入新建的Module模块,修改build.gradle文件,添加完成后点击Sync Now
在这里插入图片描述
5、插件绑定解除,在导入离线SDK步骤中删除了官方提供的插件,这里需要解除绑定,在app/build.gradle文件中修改
在这里插入图片描述

在这里插入图片描述

6、再新建的Mudole里面新建TestModule类,编写测试代码
在这里插入图片描述
TestModule代码,可直接复制

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 = true)
    public void add(JSONObject params, UniJSCallback callback){
        int a = params.getInteger("a");
        int b = params.getInteger("b");

        int result = a + b;
        JSONObject object = new JSONObject();
        object.put("result", result);
        callback.invoke(object);       //结果返回给uniapp
    }
}

7、注册插件,在app/src/main/assets目录下,找到dcloud_uniplugins.json文件
在这里插入图片描述
在dcloud_uniplugins.json文件找到nativePlugins,添加以下代码

{
      "plugins": [
        {
          "type": "module",
          "name": "新建的Mudole名称",
          "class": "新建的TestModule的包路径"     //例如 com.uniapp.test.TestModule
        }
      ]
    }

在Settings -> Android SDK中,android SDK版本使用的是10.0(“Q”) API Level 29
在这里插入图片描述

五、HBuilderX本地打包测试

1、在pages/index/index.vue中编写测试代码

<template>
  <view class="content">
    <button @click="callNativeAdd">计算1+2</button>
    <text>结果:{{result}}</text>
  </view>
</template>

<script>
export default {
  data() {
    return { result: 0 };
  },
  methods: {
    callNativeAdd() {
      const addModule = uni.requireNativePlugin('AddModule'); //根据自己定义的插件名称写
      addModule.add(
        { a: 1, b: 2 }, // 参数
        (res) => { this.result = res.result; } // 回调
      );
    }
  }
}
</script>

2、生成本地打包资源
在这里插入图片描述
在这里插入图片描述
3、把生成的本地资源复制到UniPlugin-Hello-AS项目中的app/src/main/assets/apps目录下
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
4、修改app/src/main/assets/data/dcloud_control.xml文件中的配置
在这里插入图片描述
5、修改app目录下的build.gradle文件
在这里插入图片描述

6、测试手机或者虚拟设备,这里博主使用的虚拟设备,新建虚拟设备这里不细说了,直接运行
在这里插入图片描述
成功!
在这里插入图片描述

六、Uniapp调用插件

1、配置Uniapp项目,新建nativeplugins目录,在Uniapp项目根目录创建nativeplugins/idcard/android,新建package.json
在这里插入图片描述

2、打包插件,生成aar文件,顶部找到build,点击Make Project,执行成功后,会在Module生成build文件夹
在这里插入图片描述
3、引入android插件,将生成的xxx.aar放入android文件夹下在这里插入图片描述

4、配置nativeplugins文件夹下的package.json文件

{
  "name": "module名称",
  "id": "module名称",
  "version": "1.0.0",
  "_dp_type": "nativeplugin",
  "_dp_nativeplugin": {
    "android": {
	  "hooksClass": "com.xxx.xxx.TestModule",
      "integrateType": "aar",
	  "plugins": [{
	  	"type": "module",
	  	"name": "module名称",
	  	"class": "com.xxx.xxx.TestModule"
	  }]
    }
  }
}

4、manifest.json引入插件,在HBuilder X中打开manifest.json → 安卓/IOS原生插件配置 → 选择本地插件(配置正确的话,点击选择本地插件会自动搜索,若没有请仔细检查配置是否有误
在这里插入图片描述
5、制作自定义调试基座
在这里插入图片描述

在这里插入图片描述

6、制作成功信息如下:
在这里插入图片描述
7、运行
在这里插入图片描述
这里选择连接手机或者虚拟设备,虚拟设备可以在Android Studio创建一个,也可以使用其他的模拟器,启动后可以在这个界面自动搜索到
在这里插入图片描述

成功!!!评论区欢迎交流!!!
在这里插入图片描述

评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值