uniapp原生插件开发及打包发布

摘要:
二.调试原生插件:1.使用hx创建uniapp项目2.创建vue页面或者nvue,在js中第一行获取插件对象vartestModule=uni.requireNativePlugin3.然后使用插件对象就可以调用到插件中的方法4.在hx上的菜单上:发行-原生app-本地打包-生成本地app打包资源;5.打包完成会在控制台上输出打包信息,我们关注的是打包路径;6.打包资源放入创建的android空项目对应的目录中:android空项目的资源路径:app/src/main/assets/apps/appid/www,如果没有某个目录自己手动建立即可;appid获取方式:在uniapp项目中打开文件manifest.json中就可以查看到。

uniapp原生插件开发及打包发布

一.下载unipp提供的sdk包:

官方链接:https://nativesupport.dcloud.net.cn/AppDocs/usesdk/android

二.开发原生插件:

1.创建android空项目:

uniapp原生插件开发及打包发布第1张

2.创建Module模块:

uniapp原生插件开发及打包发布第2张

3.配置libs:

将sdk中的包lib.5plus.base-release.aar、android-gif-drawable-release@1.2.23.aar、uniapp-v8-release.aar和oaid_sdk_1.0.25.aar拷贝到创建的空项目中的libs目录下;

注意:如果需要集成的第三方sdk存在so库文件,只需添加armeabi-v7a、arm64-v8a、x86三个文件夹即可,否则会导致在部分手机上无法运行。

4.配置build.gradle

apply plugin: 'com.android.application'android {
  compileSdkVersion 29defaultConfig {
      applicationId "com.example.myapplication"minSdkVersion 21targetSdkVersion 28versionCode 1versionName "1.0"multiDexEnabled truendk {
          abiFilters 'x86', 'armeabi-v7a', 'arm64-v8a'}
  }
  buildTypes {
      release {
          minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'}
  }
}

dependencies {
  implementation fileTree(dir: 'libs', include: ['*.aar', '*.jar'], exclude: [])
  implementation 'androidx.appcompat:appcompat:1.0.0'implementation 'androidx.legacy:legacy-support-v4:1.0.0'implementation 'com.alibaba:fastjson:1.1.46.android'}

5.申请appkey:

申请appkey 参考官方链接https://nativesupport.dcloud.net.cn/AppDocs/usesdk/appkey

6.配置Androidmanifest.xml中的appkey:

application节点下的meta-data节点属性

android:name="dcloud_appkey"不改
android:value="替换为自己申请的Appkey" 修改为自己申请的appkey

<application
  ...>
  <meta-data
      android:name="dcloud_appkey"android:value="替换为自己申请的Appkey" />

二.注册插件:

拷贝下载的sdk文件夹中的assets/dcloud_uniplugins.json(完整路径Android-SDK@3.2.3.81011_20210826UniPlugin-Hello-ASappsrcmainassets)

方案一:(无特殊需求,使用此方案)

在“app” Module根目录assets/dcloud_uniplugins.json文件。 在moudles节点下 添加你要注册的Module

方案二:(需要初始化的需求,使用此方案)

1.创建一个实体类并实现UniAppHookProxy接口,在onCreate函数中添加组件注册相关参数 或 填写插件需要在启动时初始化的逻辑。

public classRichAlert_AppProxy implements UniAppHookProxy {
    @Overridepublic voidonCreate(Application application) {//当前uni应用进程回调 仅触发一次 多进程不会触发      //可通过UniSDKEngine注册UniModule或者UniComponent}

  @Override  public voidonSubProcessCreate(Application application) {      //其他子进程初始化回调 可用于初始化需要子进程初始化需要的逻辑}
}

2.在hooksClass节点添加你创建实现UniAppHookProxy接口的实体类完整名称填入其中即可

  • nativePlugins: 插件跟节点 可存放多个插件

  • hooksClass: 生命周期代理(实现AppHookProxy接口类)格式(完整包名加类名)

  • plugins: 插件数组

  • name: 注册名称

  • class: module 或 component 实体类完整名称

  • type: module 或 component类型。

uniapp原生插件开发及打包发布第3张

二.调试原生插件:

1.使用hx(hbuiderx)创建uniapp项目

2.创建vue页面或者nvue,在js中第一行获取插件对象var testModule = uni.requireNativePlugin("TestModule")

3.然后使用插件对象就可以调用到插件中的方法

4.在hx上的菜单上:发行-原生app-本地打包-生成本地app打包资源;

5.打包完成会在控制台上输出打包信息,我们关注的是打包路径;

6.打包资源放入创建的android空项目对应的目录中:

android空项目的资源路径:app/src/main/assets/apps/appid/www,如果没有某个目录自己手动建立即可;

appid获取方式:

在uniapp项目中打开文件manifest.json中就可以查看到。

7.拷贝sdk中提供的data文件夹:

路径位于Android-SDK@3.2.3.81011_20210826SDKassets

8.修改拷贝的data文件夹下的dcloud_control.xml:

appid替换为自己的appid

<hbuilder>
<apps>
    <app appid="__UNI__FE33477" appver=""/>
</apps>
</hbuilder>

appid获取方式:

在uniapp项目中打开文件manifest.json中就可以查看到。

9.引用插件:

在app项目下的build.gradle文件dependencies节点中添加app插件

// 添加uni-app插件

implementation project(':创建的Module模块名称')

10以真机方式允许项目或者调试;

三.原生插件aar打包:

1.

四.uniapp本地插件:

五.uniapp插件发布到市场:

免责声明:文章转载自《uniapp原生插件开发及打包发布》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇调用钉钉接口发送消息canvas遇到的一些问题下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

分享一个单机软件试用期计时思路

1.首次启动软件时,先获取自己软件写入的注册表项,如果已经存在了,再获取记录的时钟周期数,如果不存在的话,获取主机自cpu上电以来的时钟周期数,已纳秒为单位,然后把这个数保存到电脑自己的注册项里。 2.以后每次启动软件,都获取自cpu上电以来的时钟周期数,然后再去读取首次写入的那个数值。 3.两两相减,计算出的时间差就是软件再这台主机上存在的天数的纳秒值。...

理解 Android Build 系统

测试 前言 Android Build 系统是 Android 源码的一部分。关于如何获取 Android 源码,请参照 Android Source 官方网站 。 Android Build 系统用来编译 Android 系统,Android SDK 以及相关文档。该系统主要由 Make 文件,Shell 脚本以及 Python 脚本组成,其中最主要的是...

Manjaro安装后简单配置

一个相见恨晚的Linux操作系统 Manjaro到底有多受欢迎? DistroWatch是一个包含了各种Linux发行版及其他自由/开放源代码的类Unix操作系统。 (如OpenSolaris、MINIX及BSD等)的新闻、人气排名、以及其他一般信息等的网站。 它包含了数百种发行版的信息。 原文链接:https://distrowatch.com/t...

【Android开发】之MediaPlayer的错误分析

  最近在做媒体播放器,使用了Android自带的MediaPlayer,经常性会碰到MediaPlayer报错的情况,找过网上的,感觉总结的不是很好或者比较散。下面,我来总结一下使用MediaPlayer经常会出现的错误。如果有比较了解的,也可以在下面评论探讨一下。   一、Mediaplayer简介     Mediaplayer可以用来控制音频或者视...

DataScope v1.0 多功能串口虚拟示波器使用介绍

DataScope v1.0 特性 1、无需安装,启动即用;2、支持同时刷新多达10个通道的单精度浮点型数据;3、支持多种格式的通道数据导入、导出及回放;4、支持全屏浏览;5、支持图表数据统计、测量及缩放;6、支持蓝牙适配器;7、支持各通道独立刷新;8、支持3D轨迹显示;9、3D立方体显示;10、航空仪表;11、灵活可屏蔽的快捷键支持。 ---软件下载见原...

Eclipse软件中的Import和Switch Workspace有何区别?

(一)Import 作用:将一个project导入到当前工作区 (二)Switch Workspace 作用:改变当前的工作区(所谓的工作区就是一个文件夹) (三)区别 ①Switch Workspace可以将任何一个文件夹当做自己的工作区,并在当前工作区生成.metadata文件夹 解释说明:如果改变后的工作区是一个完整的project,则不会再生成.m...