UniAPP-Android原生插件开发与打包
UniAPP-Android原生插件开发与打包
- 为什么要写这篇文章
- 开发流程
- 1. 下载我封装好的项目
- 1.1. 修改pictureeditor_uni项目
- 1.1.1. 修改**uniplugin_test**项目
- 1.1.2. 修改**app**项目
- 1.2. 修改uni_app_test项目
- 2. 插件开发
- 2.1 导入现有项目
- 3.打包插件创建基座
- 3.1 创建插件目录
- 3.2 获取aar文件
- 3.3 提交打包
为什么要写这篇文章
官方给出的流程是这样的:
下载SDK:https://ask.dcloud.net.cn/article/103
创建Android Studio项目:https://ask.dcloud.net.cn/article/13232
开发原生插件:https://ask.dcloud.net.cn/article/35416
打包插件上传:https://ask.dcloud.net.cn/article/35414
看着感觉很蛋疼,尤其是原生插件开发,居然要我用v4v7的25版本。。。好吧,经过我慢慢摸索还是找到了一条比较靠谱的开发流程(虽说上面几个链接帮助挺大)。
如果你对Android Studio编程并不了解,此篇文章可能对您没有什么用处。
开发流程
1. 下载我封装好的项目
uni_app安卓插件封装项目.zip
1.1. 修改pictureeditor_uni项目
1.1.1. 修改uniplugin_test项目
- 将AndroidManifest.xml中修改包名为自己插件包名,不可与项目包名重复。
- 修改java下com.test.plugin为刚刚修改的包名,这个包下只有一个类,类名自定义。假设这里包名是com.test.app,类名是SModule。
1.1.2. 修改app项目
- 修改res/values下的string.xml为你app的名称
- 修改drawable中的图标为对应app图标
- 修改assets下的apps.__UNI__YOURAPP.www为你app的ID并拷贝你的项目的本地打包资源到这里来。
- 修改assets下的dcloud_uniplugins.json中class为uniplugin_test项目的类名全拼,如假设所述,这里应该填com.test.app.SModule,name是用于js调用的时候的名称,推荐与类名一致,这里我写的PluginModule,type字段不要动,默认就是module。
- 修改assets下的data/dcloud_control.xml中的appid为你app的ID。
- 修改AndroidManifest.xml下的Manifest节点下的package为你的APP包名。
1.2. 修改uni_app_test项目
在hbuilderx中打开uni_app_test项目:
- 修改pages/index/index.vue的test方法,这里的uni.requireNativePlugin(‘PluginModule’);的PluginModule为你刚刚插件的名称,下面就可以根据你Module中的方法配置进行调用了。
- 在hbuilderx中点击发行->原生APP本地打包->生成本地APP打包资源,等待下面控制台跑完,输出“项目 'uni_app_test’导出成功,路径为:…”时打开这个链接。
- 替换掉uniplugin_test项目的app中的assets/apps.__UNI__YOURAPP,对应位置不要放错。
- 编译Android Studio项目就可以打包运行了。
2. 插件开发
2.1 导入现有项目
- 将现有的项目作为module导入刚刚封装好的项目中,将这个项目的:app改名成其它的。导入后如果出现编译版本问题,把编译版本targetSdkVersion改成28,buildToolsVersion改成"28.0.3".
- 将导入项目的AndroidManifest.xml的如下代码删掉(启动Activity)
<action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" />
- 将导入项目的build.gradle中的apply plugin: ‘com.android.application’ 修改为 apply plugin: ‘com.android.library’
- 删除build.gradle中android->defaultConfig中的applicationId
- 删掉重复的启动icon
- 启动项修改为app
- 在uniplugin_test项目中引入导入的项目,然后在插件的Module类中实现插件功能
- 调通可以运行即可
3.打包插件创建基座
先查看这个链接:https://ask.dcloud.net.cn/article/35414
3.1 创建插件目录
- 在你的uni_app_test项目中新建一个nativeplugins文件夹,里面内容如下:
其中PluginModule为你刚刚插件的名称。 - 修改package.json,PluginModule依然为你刚刚插件的名称,plugins节点里的内容和uniplugin_test下的app下的assets/dcloud_uniplugins.json的内容一致,permissions根据自己需要添加:
{"name": "这里填你插件名称","id": "PluginModule","version": "1.0","description": "测试插件","_dp_type":"nativeplugin","_dp_nativeplugin":{"android": {"plugins": [{"type": "module","name": "PluginModule","class": "com.test.plugin.PluginModule"}],"integrateType": "aar","minSdkVersion": "21","permissions": ["android.permission.CAMERA","android.permission.RECORD_AUDIO","android.permission.WRITE_EXTERNAL_STORAGE","android.permission.READ_EXTERNAL_STORAGE","android.permission.INTERNET"]}}
}
3.2 获取aar文件
转到Android Studio项目中,找到你项目中的aar文件,里面有几个Module就复制几个aar文件。没有aar文件就去build一下项目就有了。将他们都复制出来统一放到android文件夹下,如果有jar包引用,把jar包放到libs文件夹下:
3.3 提交打包
运行->运行到手机模拟器->制作自定义基座,签名什么的自己弄,没有就用dcloud的。然后就云端打包把,等待成功提示,基座就做好啦~
注意! 不要放太多资源文件到aar中,dcloud对云端打包文件大小限制在40Mb以内,超额不能提交(- -所以我就离线了)
UniAPP-Android原生插件开发与打包相关推荐
- 记一次uni-app Android原生插件开发
背景 项目使用到了RFID射频手持设备(PDA),用于读取羊只耳标功能. 原来有写过一个插件 https://ext.dcloud.net.cn/plugin?id=5246,新的设备与原来的不一样, ...
- Uniapp关于 Android原生插件开发案例
目录 一.准备工作(开发环境) 二.实操 1.使用Android studio开发工具打开UniPlugin-Hello-AS工程请在App离线SDK中查找 编辑 2.创建Andorid Libra ...
- Android原生插件开发-开发篇
原创文档:Android原生插件开发-开发篇 · 语雀 官方文档:原生开发者支持 创建module 点击File=>New=>New Module 选择Android Library,输入 ...
- Android原生插件开发-证书jks篇
原创地址:Android原生插件开发-证书jks篇 · 语雀 jks生成 下载Android Studio Download Android Studio & App Tools - Andr ...
- uniapp ios原生插件开发之插件包格式(package.json)
文章目录 一.前言 二.插件包格式介绍 2.1 package.json 2.2 iOS 插件包配置 plugins integrateType 依赖资源文件 resources embedSwift ...
- uniapp 发行 原生APP本地打包 安卓APK(最全的步骤)
第11步没写完,后面还有些内容(第三方sdk配置之类的),有空再补上 第一步:正常运行的uniapp 你得有个uniapp,配置是好的可以在微信开发者工具中看的那种,小程序都用不了,就别考虑打包安卓了 ...
- uniapp android原生,在uni-app项目中集成Android原生工程
[TOC] # 在uni-app项目中集成Android原生工程 按照官方的方案,我们如果进行本地打包的话,需要重新创建一个Android原生工程,于是就会导致我们管理多个项目,切来切去的也麻烦. 经 ...
- uniapp ios原生插件开发 (framework,cocoapods)
文章目录 一.了解UniApp 插件的开发方式 二.准备 1.安装Cocoapods 2. 下载UniApp iOS SDK 三.将HBuilder-UniPluginDemo转成Cocoapods ...
- uniapp集成Android原生sdk
最近公司有个项目,需要调用客户提供的sdk扫描rfid,项目又是用uni开发的,客户提供的sdk只有Java版本,我发现uni是提供集成原生sdk的,所以研究了一下怎么使用,并记录下来过程. 准备 S ...
最新文章
- linux基础上的三维重建,Ubuntu16.04下用ZED双目立体相机进行SLAM(以相机轨迹生成和三维重建为例)...
- 乖离性暗机器人_《乖离性百万亚瑟王》国服超弩暗机器人平民通关攻略
- 年终盘点篇:2018年开源市场5大发展趋势
- Visual Question Answering概述
- Kotlin替换Dagger2/Hilt的依赖注入框架--Koin。
- nodejs TCP server和TCP client如何进行数据交互
- 前端学习(3031):vue+element今日头条管理-暂时当前登录用户信息
- BZOJ 2822: [AHOI2012]树屋阶梯 [Catalan数 高精度]
- 用elemet-ui组件实现弹窗里的树形结构和拖拽功能
- STC89C52单片机蜂鸣器介绍以及《孤勇者》歌曲代码示例
- datax底层原理_Datax 任务分配原理
- 《软件测试》第九章 兼容性测试
- 大规模网络拓扑测量与分析研究1-论文
- YOLOv5桌面应用开发,手把手教学实操(上)——附源代码
- 云和恩墨荣获阿里云云合计划2021年度优秀伙伴技术先锋奖
- html让视频变形不留黑边,视频去黑边画面不变形|视频无损去黑边 去掉视频黑边且画面比例正常人物不变形...
- 吃烧烤之命令模式学习笔记[C++版] 1
- 小米电视系统服务器升级,小米电视怎么更新系统 升级步骤图文详解
- 异速联集中部署与管理解决方案
- JavaScript进阶面向对象ES6整合篇
热门文章
- 什么是BST?什么是哈希表?一文带你了解并实现查找的基础知识
- Allegro学习笔记
- vbs字符串正则_VBS正则表达式语法
- PP-ShiTu: A Practical Lightweight Image Recognition System
- Aggregation-Based Graph Convolutional Hashing forUnsupervised Cross-Modal Retrieval
- flexbison编写语法分析器
- Mybatis-1.Mybatis概述
- AjaxPro.Utility.RegisterTypeForAjax()的作用 AjaxPro第三方控件
- 舰船知识科普-有图有真相(附PPT)
- php写的在线试衣,求解模特试衣,布料成衣贴图算法