uniapp Android 原生插件开发(Module 扩展为例·2022)(二)

简介: uniapp Android 原生插件开发(Module 扩展为例·2022)

插件项目集成uniapp项目调试


插件引入


使用uni.requireNativePlugin('插件名')方法调用插件,如下:

image.png

插件方法调用


调用插件中的sayHi方法,利用回调函数获取返回值,具体如下:

image.png

相关代码


相关uniapp页面代码如下:

<template>
  <view>
    <view style="width:100vw;text-align: center; font-weight: bold; padding: 15px 0;">插件调试</view>
    <view style="padding: 15px 30px;">返回信息:{{ reply }}</view>
    <view style="padding: 15px 30px;">原始数据:{{ msg }}</view>
  </view>
</template>
<script>
  const plugin = uni.requireNativePlugin('test')
  export default {
    data() {
      return {
        reply: "",
        msg: "",
      }
    },
    onLoad() {
      let that = this
      plugin.sayHi("lauwen", function (res) {
        that.msg = JSON.stringify(res)
        that.reply = res.re
      })
    },
    methods: {
    }
  }
</script>
<style>
  .content {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
  }
  .logo {
    height: 200rpx;
    width: 200rpx;
    margin-top: 200rpx;
    margin-left: auto;
    margin-right: auto;
    margin-bottom: 50rpx;
  }
  .text-area {
    display: flex;
    justify-content: center;
  }
  .title {
    font-size: 36rpx;
    color: #8f8f94;
  }
</style>

生成本地打包资源


完成相关代码编写后,需要生成uniapp本地打包资源,生成之后控制台会显示相关路径,如下:

41dacb67f71f46538c23691db77e023f.png

复制打包资源到插件项目


将生成的打包资源复制到插件项目的app\src\main\assets\apps目录下

image.png

配置uniapp的appid


在插件项目app\src\main\assets\data目录下的dcloud_control.xml文件中配置uniapp的appid,具体如下:

image.png

运行调试


运行


在Android Studio中运行项目,如下

883612c486854f11bc04e7b035da6cb7.png

运行结果


运行结果如下,成功输出插件预置信息:

176cb83bdf684a29ac86a7cc2f0df4f8.jpeg

uniapp项目引入原生插件


以上介绍了插件开发过程中,集成uniapp项目进行调试的方法;插件开发完成后,需要将原生插件引入uniapp项目中才可以使用。

打包插件


SDK版本统一


插件包、APP以及uniapp项目的androidSDK版本应该统一一下,避免后续编译打包出错,如图:

8658e95623c743d4b758413b82463bb5.png

开始编译


打开Android Studio,在插件项目中,打开右上角Gradle栏目,选择插件开发项目,选择插件打开,依次点开Tasks-other,然后双击assembleRelease即可进行插件编译,如图:

ca928b6b5cc74f37b6eca841523ec76e.png

获取插件


编译成功后,就可以在插件目录的build/outputs/arr目录下找到编译好的插件

b4b5fe02a01e46b1adfe20eab0713fd0.png

引入插件


创建目录


在uniapp项目中创建nativeplugins目录,然后根据插件名创建插件目录,再在其下一级创建插件相应系统目录,然后将插件复制到该目录,如图:

image.png

创建插件包配置文件


在包目录下创建package.json包信息文件,用于配置包信息,具体配置如下:

  • name 和 id建议与插件名统一
  • plugins中的配置与插件配置-注册插件步骤中所填一样
  • dependencies:如果原生插件引入了第三方SDK,需要在此参数中配置,具体可以参考相关官方文档dependencies
{
    "name": "test",
    "id": "test",
    "version": "0.0.2",
    "description": "测试插件流程",
    "_dp_type":"nativeplugin",
    "_dp_nativeplugin":{
        "android": {
            "plugins": [
                {
                    "type": "module",
                    "name": "test",
                    "class": "com.ss.test.test"
                }
            ],
      "integrateType": "aar",
            "parameters": {
            },
            "dependencies": []
        }
    }
}

image.png

引入插件


在uniapp项目的manifest.json文件中添加配置好的插件,至此引入完成,如图:

d97dacc5b6374e46a99edb7fbd2c9007.png

打包自定义基座


新建基座打包


如图,依次点击三者进行自定义基座打包配置

image.png

基座打包配置


如图三个输入框,分别填入前面在uniapp后台获取的证书以及相关信息,然后执行打包就好

14977ba8903b4786906c6ee1f7bb757c.png

基座运行测试


选择运行基座


运行基座类型选择自定义基座

image.png

运行自定义基座


基座打包成功后,运行自定义基座到手机测试

9c1edb68965942dfa927b98b8f56c055.png

运行结果


如图,与插件调试过程中一样,输出正常

b2f04173ad294b41913b7779680b354b.jpeg

其它


jniLibs包引入


一般jniLibs结构


image.png

插件引入jniLibs库


把相关包放到插件libs目录下

image.png

添加jniLibs库


右键包中.jar文件,选择Add As Library,,然后选中当前插件包,点击OK添加就好

14a07a17cd974f648a2aae2db7fd7d19.png

配置插件包build.gradle


经过上一步的添加动作,jar文件已经自动引入了,如图中1标所示;然后需要将2标的配置添加进去,点击同步就好,然后就可以正常使用包了

2dab4c58ae4a4ddca80442ac109d1c9d.png

参考



目录
相关文章
|
6月前
|
缓存 程序员 定位技术
Android Studio 插件,那些被大厂优化的程序员们
Android Studio 插件,那些被大厂优化的程序员们
|
6月前
|
JavaScript Java Android开发
uniapp通过蓝牙传输数据 (安卓)
uniapp通过蓝牙传输数据 (安卓)
299 1
|
3月前
|
Android开发
错误记录:调用原生TvSettings 的 com.android.tv.settings.device.storage.ResetActivity 无法启动
本文记录了一个Android TV设置中由于未设置`android:exported="true"`导致`com.android.tv.settings.device.storage.ResetActivity`无法被第三方app启动的错误,并通过添加该属性成功解决了问题。
51 1
|
1月前
|
数据挖掘
uniapp uview扩展u-picker支持日历期间 年期间 月期间 时分期间组件
uniapp uview扩展u-picker支持日历期间 年期间 月期间 时分期间组件
57 10
|
23天前
|
Android开发
我是一位Android工程师,用通义灵码的AS插件做开发工作助手,对比之前没有灵码,现在提效了60%
我是一位Android工程师,用通义灵码的AS插件做开发工作助手,对比之前没有灵码,现在提效了60%
38 0
|
1月前
|
存储 移动开发 小程序
uniapp富文本editor输入二次扩展兼容微信小程序
uniapp富文本editor输入二次扩展兼容微信小程序
63 0
|
3月前
|
开发工具 Android开发
|
3月前
uniApp——调整uniApp插件市场上的echarts插件
uniApp——调整uniApp插件市场上的echarts插件
144 0
|
4月前
uniapp 打包成 apk(原生APP-云打包)免费
uniapp 打包成 apk(原生APP-云打包)免费
269 1
|
6月前
|
Android开发 UED 开发者
【Uniapp 专栏】比较 Uniapp 与原生开发的差异与适用场景
【5月更文挑战第15天】UniApp与原生开发各有千秋。UniApp以高效跨平台著称,一套代码覆盖多平台,降低开发成本,适合快速开发简单应用。原生开发则提供优秀性能和用户体验,适合对性能要求高的复杂应用。两者在功能实现和维护上各有优势,开发者需根据项目需求权衡选择。随着技术进步,两者都在不断优化,为移动应用开发带来新机遇。
336 1
【Uniapp 专栏】比较 Uniapp 与原生开发的差异与适用场景