uniapp android studio开发原生插件

一、准备工作

1.Android Studio 下载地址:Android Studio官网 OR Android Studio中文社区

2.HBuilderX

3.App离线SDK下载:最新android平台SDK下载

4.JAVA环境 jdk Java Downloads | Oracle 打开官网下载jdk  

 下载后可自行修改安装路径,但要记住路径方便后期配置环境。

5.配置jdk环境变量,右击电脑属性找到高级系统设置,在系统变量中添加JAVA_HOME=安装jdk的安装目录(例:D:\Program Files\Java\jdk-18.0.1.1),在path变量中添加 .;%JAVA_HOME%\bin,新建classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar。配置完成后win+r打开cmd输入java -version 出现版本号说明环境变量配置成功。

二、配置项目

1.通过Dcloud官方文档下载离线SDK,然后找到项目中的plugin示例项目UniPlugin-Hello-AS,项目中已有示例module,方便依赖引用等。

2.项目打开后点击file-》new-》new module进入新建module界面

3.选择library输入module名和module包名,语言选择java,插件不支持Kotlin 

4.在module中的build.gradle添加如下依赖

    //必须添加的依赖
    compileOnly 'com.android.support:recyclerview-v7:28.0.0'
    compileOnly 'com.android.support:support-v4:28.0.0'
    compileOnly 'com.android.support:appcompat-v7:28.0.0'
    compileOnly 'com.alibaba:fastjson:1.1.46.android'

    compileOnly fileTree(include: ['uniapp-v8-release.aar'], dir: '../app/libs')

 5.在app的build.gradle中引用插件

 6.给项目配置appkey,如没有appkey请参考uniapp-android离线打包_qiuzh01的博客-CSDN博客android studio,uniapp,android本地打包,android离线打包,本地打包,离线打包,Hbuildhttps://blog.csdn.net/weixin_43858377/article/details/125006108如已有appkey请在app下的AndroidManifest.xml文件中配置appkey

 三、插件开发

1.new一个java class文件

2.将避免混淆代码写入到module中的consumer-rules.pro文件中

-keep public class * extends io.dcloud.feature.uniapp.common.UniModule{*;}

 3.给新建的插件文件写上逻辑

// 加法运算
@UniJSMethod(uiThread = false)
public void mathAdd(int a,int b, UniJSCallback callback) {
    callback.invoke(a + b);
}

// 原生toast提示
@UniJSMethod(uiThread = false)
public void showToast(String msg, UniJSCallback callback) {
    Toast.makeText(mWXSDKInstance.getContext(),msg,Toast.LENGTH_SHORT).show();
    callback.invoke(msg);
}

注: 扩展方法必须加上@UniJSMethod (uiThread = false or true) 注解。UniApp 会根据注解来判断当前方法是否要运行在 UI 线程,和当前方法是否是扩展方法。

UniApp是根据反射来进行调用 Module 扩展方法,所以Module中的扩展方法必须是 public 类型。

4.确认在app中dcloud_uniplugins.json文件注册插件

 这里的包名指的是插件的包名,可以在自己上边创建的java文件中找package。

5.打插件包。新版android studio默认是关闭Gradle Task任务自动化打包的 ,解决方案点击file->setting->Experimental面板中Do not build Gradle task list during Gradle sync选项勾选去掉就行了

 然后右上角点击gradle,打开任务列表面板,在任务other中双击assembleRelease就开始打包插件了。

打包的插件包路径在插件下build->outputs->arr->xxx.arr

三、在uniapp中使用插件

1.首先找到nativeplugins目录,没有则新建。在目录中创建我们的本地插件目录,命名规范可参考官方原生开发者支持

2.在插件目录下新建package.json来配置插件信息

3.在package同级创建一个android目录和ios目录来存放打包好的插件包,具体结构如下

 

 因为没有没有mac所以没有测试ios插件打包

4.将上边打的插件包放入android目录中,然后在页面中使用插件。

5.在某一个页面文件中引入插件uni.requireNativePlugin('插件id'),给引用赋值,现在我们就可以开始写入逻辑了。

<template>
	<view class="content">
		<input type="number" v-model="a" />
		<input type="number" v-model="b" />
		<button type="default" @click="showtoast">showtoast</button>
		<button type="default" @click="add">加法</button>
	</view>

</template>

<script>
	// 引入插件
	let andoridModule = uni.requireNativePlugin('Qiu-testModule');
	export default {
		data() {
			return {
				a: 1,
				b: 2
			}
		},
		methods: {
			add() {
				andoridModule.mathAdd(this.a, this.b, (e) => {
					andoridModule.showToast('A+B=' + e);
				});
			},
			showtoast() { 
				andoridModule.showToast('hello world!', (e) => {
					console.log('showToast reuslt:', e);
				});
			}
		}
	}
</script>

<style>
	.content { padding-top: 200rpx; }
</style>

6.配置好插件包后在manifest.json中使用插件 

 四、运行app

1.运行时如果真机安装失败(一般vivo、oppo手机出现)在gradle.properties文件中添加

android.injected.testOnly=false

2.真机运行前需要自定义app基座,不然我们运行是没有插件的。

 3.运行时一定要选择app基座

 4.运行到Android App基座,接下来就等待打包完成,就可以真机运行了

注:作者为小白一名,此文是本人在测试原生打包时实际过程,以及参考其他大佬文章。

另:此文章非商业用途,如有侵权请联系作者

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值