Uniapp Android原生插件开发

准备工作:

1. 使用Andorid Studio 打开UniPlugin-Hello-AS项目

2. 切换至Project模式

3. 创建Andorid Libray名字自定义,设置API为19。

4.  将如下代码复制到build.gradle中,添加完毕后并点击右上角Sync Now进行同步。

repositories {
    flatDir {
        dirs 'libs'
    }
}

dependencies {
    compileOnly fileTree(dir: 'libs', include: ['*.jar'])
    compileOnly fileTree(dir: '../app/libs', include: ['uniapp-v8-release.aar'])
    compileOnly 'androidx.recyclerview:recyclerview:1.0.0'
    compileOnly 'androidx.legacy:legacy-support-v4:1.0.0'
    compileOnly 'androidx.appcompat:appcompat:1.0.0'
    implementation 'com.alibaba:fastjson:1.1.46.android'
    implementation 'com.facebook.fresco:fresco:1.13.0'
}

5.  将避免混淆代码写入到consumer-rules.pro与proguard-rules.pro中

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

6. 创建HelloWorld文件并写入方法逻辑

        (1). package 步骤三中package name

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

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

package com.example.helloworld; // 此处是自己的包名
import android.widget.Toast;

import io.dcloud.feature.uniapp.annotation.UniJSMethod;
import io.dcloud.feature.uniapp.bridge.UniJSCallback;
import io.dcloud.feature.uniapp.common.UniModule;

public class HelloWorld  extends UniModule {

    // 加法运算
    @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);
    }

}

7. 打包arr包 没有Tasks解决方案

8. 新建uniapp项目引入原生插件

        (1). 新建nativeplugins目录

        (2). 新建插件目录Chen-HelloWorld,子文件夹android并将release.aar放入。

        (3). 新建package.json文件文件描述并写入如下代码,  class格式为“包名+类名”。更多配置参考

{
    "name": "Chen-HelloWorld",
    "id": "Chen-HelloWorld",
    "version": "1.0.0",
    "description": "PictureView",
    "_dp_type": "nativeplugin",
    "_dp_nativeplugin": {
        "android": {
            "hooksClass": "",
            "plugins": [
                {
                    "type": "module",
                    "name": "Chen-HelloWorld",
                    "class": "com.example.helloworld.HelloWorld"
                }
            ],
            "integrateType": "aar",
            "abis": []
        }
    }
}

9. 在manifest文件中引入本地andorid插件

10.  云打包Andorid自定义基座包。

 

11. 设置自定义基座启动

12. 使用Andorid原生插件,编写页面代码,链接Android手机真机运行即可。

<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('Chen-HelloWorld');
	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>

参考链接:

1. Uniapp原生插件开发说明

2. uniapp安卓原生插件开发流程

  • 11
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
在 uni-app 中集成 Android 原生插件需要进行如下步骤: 1. 在项目根目录下创建 `nativeplugins` 目录,用于存放 Android 原生插件。 2. 在 `nativeplugins` 目录中创建插件Android Studio 项目,例如插件名为 `myplugin`,则创建路径为 `nativeplugins/myplugin/android/`。 3. 在 `myplugin` 的 Android 项目中,将插件打包成 `.aar` 格式的库文件。 4. 将 `.aar` 格式的库文件放到 `myplugin` 的 `libs` 目录下。 5. 在 `myplugin` 的 `build.gradle` 文件中添加如下配置: ```gradle repositories { flatDir { dirs 'libs' } } android { ... defaultConfig { ... ndk { abiFilters "armeabi-v7a", "x86" } } ... buildTypes { release { ... proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { implementation(name:'myplugin', ext:'aar') ... } ``` 在上述配置中,`repositories` 中的 `flatDir` 配置用于让 Gradle 知道 `.aar` 文件的位置,`implementation` 配置用于将插件库文件添加到项目中。 6. 在 uni-app 项目的 `manifest.json` 文件中,将插件添加到 `app-plus -> android -> plugins` 中。例如: ```json { "app-plus": { "android": { "plugins": { "myplugin": { "version": "1.0.0", "provider": "com.example.myplugin.MyPluginProvider" } } } } } ``` 在上述配置中,`version` 用于指定插件版本号,`provider` 用于指定插件的提供者类路径。 7. 在 uni-app 项目的 `pages.json` 文件中,将插件的页面添加到 `pages` 中。例如: ```json { "pages": [ { "path": "pages/index/index", "style": { "navigationBarTitleText": "首页" } }, { "path": "pages/myplugin/myplugin", "style": { "navigationBarTitleText": "插件页面" } } ] } ``` 在上述配置中,`path` 用于指定插件页面的路径。 8. 在 uni-app 项目中,通过 `uni.requireNativePlugin('myplugin')` 来使用插件功能。 以上是集成 Android 原生插件到 uni-app 的步骤和注意事项,希望对你有帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

惊悚的毛毛虫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值