UniAPP-Android原生插件开发与打包

为什么要写这篇文章

官方给出的流程是这样的:
下载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项目

  1. 将AndroidManifest.xml中修改包名为自己插件包名,不可与项目包名重复。
  2. 修改java下com.test.plugin为刚刚修改的包名,这个包下只有一个类,类名自定义。假设这里包名是com.test.app,类名是SModule。

1.1.2. 修改app项目

  1. 修改res/values下的string.xml为你app的名称
  2. 修改drawable中的图标为对应app图标
  3. 修改assets下的apps.__UNI__YOURAPP.www为你app的ID并拷贝你的项目的本地打包资源到这里来。
  4. 修改assets下的dcloud_uniplugins.json中class为uniplugin_test项目的类名全拼,如假设所述,这里应该填com.test.app.SModule,name是用于js调用的时候的名称,推荐与类名一致,这里我写的PluginModule,type字段不要动,默认就是module。
  5. 修改assets下的data/dcloud_control.xml中的appid为你app的ID。
  6. 修改AndroidManifest.xml下的Manifest节点下的package为你的APP包名。

1.2. 修改uni_app_test项目

在hbuilderx中打开uni_app_test项目:

  1. 修改pages/index/index.vue的test方法,这里的uni.requireNativePlugin(‘PluginModule’);的PluginModule为你刚刚插件的名称,下面就可以根据你Module中的方法配置进行调用了。
  2. 在hbuilderx中点击发行->原生APP本地打包->生成本地APP打包资源,等待下面控制台跑完,输出“项目 'uni_app_test’导出成功,路径为:…”时打开这个链接。
  3. 替换掉uniplugin_test项目的app中的assets/apps.__UNI__YOURAPP,对应位置不要放错。
  4. 编译Android Studio项目就可以打包运行了。

2. 插件开发

2.1 导入现有项目

  1. 将现有的项目作为module导入刚刚封装好的项目中,将这个项目的:app改名成其它的。导入后如果出现编译版本问题,把编译版本targetSdkVersion改成28,buildToolsVersion改成"28.0.3".
  2. 将导入项目的AndroidManifest.xml的如下代码删掉(启动Activity)
	<action android:name="android.intent.action.MAIN" />
	<category android:name="android.intent.category.LAUNCHER" />
  1. 将导入项目的build.gradle中的apply plugin: ‘com.android.application’ 修改为 apply plugin: ‘com.android.library’
  2. 删除build.gradle中android->defaultConfig中的applicationId
  3. 删掉重复的启动icon
  4. 启动项修改为app
  5. 在uniplugin_test项目中引入导入的项目,然后在插件的Module类中实现插件功能
  6. 调通可以运行即可

3.打包插件创建基座

先查看这个链接:https://ask.dcloud.net.cn/article/35414

3.1 创建插件目录

  1. 在你的uni_app_test项目中新建一个nativeplugins文件夹,里面内容如下:
    目录结构
    其中PluginModule为你刚刚插件的名称。
  2. 修改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文件

aar文件位置
转到Android Studio项目中,找到你项目中的aar文件,里面有几个Module就复制几个aar文件。没有aar文件就去build一下项目就有了。将他们都复制出来统一放到android文件夹下,如果有jar包引用,把jar包放到libs文件夹下:
arr文件位置

3.3 提交打包

运行->运行到手机模拟器->制作自定义基座,签名什么的自己弄,没有就用dcloud的。然后就云端打包把,等待成功提示,基座就做好啦~
注意! 不要放太多资源文件到aar中,dcloud对云端打包文件大小限制在40Mb以内,超额不能提交(- -所以我就离线了)

发布了11 篇原创文章 · 获赞 13 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/similing/article/details/101770348