uniapp开发android原生插件

2024-06-04 9485阅读

一、下载原生开发SDK

           Android 离线SDK - 正式版 | uni小程序SDK (dcloud.net.cn)、

           https://nativesupport.dcloud.net.cn/AppDocs/download/android.html

          将开发uniappa原生android的插件解压到ben本地目录,目录结构如下:

uniapp开发android原生插件 第1张

          接下就可以使用 UniPlugin-Hello-AS这个工程制作原生插件

二、制作原生插件

1、androidstudio打开UniPlugin-Hello-AS

uniapp开发android原生插件 第2张

        调整好本地androidsdk和gradle环境进行下一步

2、创建一个library的module

uniapp开发android原生插件 第3张

3、配置gradle依赖

        将uniplugin_modle模块下的gradle依赖全部拷贝到新建的mylibrary的gradle中

    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.2.83'
    implementation 'com.facebook.fresco:fresco:1.13.0'

4、编写android代码

/**
 * 提供给uni的js调用的类需要继承  io.dcloud.feature.uniapp.common.UniModule
*  这里定义的java类名就是后面uniapp调用的插件名称
*/
public class MyLibraryPlugin  extends UniModule {
    /**
     * 暴露一个给js调用的方法
     * UniJSMethod注解标记是否需要主线程调用
     * @return
     */
    @UniJSMethod(uiThread = false)
    public   String  getTimeFromNative(){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd  HH:mm:ss", Locale.CHINA);
        return  "get time from native " + sdf.format(new Date());
    }
    
}

5、打包aar文件

         进入到工程的根目录,执行assembleRelease命令

 ./gradlew   mylibrary:assembleRelease

        在build->outputs->aar提取aar文件

uniapp开发android原生插件 第4张

      这样就生成了一个名为mylibrary-release.aar的插件

6、编写插件打包配置package.json

{  
    "name": "MyLibraryPlugin",  
    "id": "MyLibraryPlugin",  
    "version": "1.0",  
    "description": "uniapp原生android插件",  
    "_dp_type":"nativeplugin",  
    "_dp_nativeplugin":{    
        "android": {  
            "plugins": [  
                {  
                 "type": "module",
                 "name": "SunMiUtilsService",
                 "class": "com.example.mylibrary.MyLibraryPlugin"
                }
            ],   
            "integrateType": "aar",  
            "minSdkVersion": "21"  
        }  
    }  
}

       这样package.json文件就配置好了 

三、uniapp集成插件

 1、导入原生插件

        在uniapp项目目录下创建一个名为nativeplugins的文件夹,在nativeplugins目录下创建目录以插件名称MyLibraryPlugin命名,在MyLibraryPlugin插件目录下创建一个android目录,将mylibrary-release.aar插件拷贝进去,在android的统计目录中奖package.json文件拷贝进去,整体目录结构如下:

uniapp开发android原生插件 第5张

2、在manifest.json中配置插件

uniapp开发android原生插件 第6张

3、测试代码

methods: {
   clickNative(){
	 const  libPlugin =  uni.requireNativePlugin("MyLibraryPlugin");
	 uni.showModal({
		title:'提示',
		content: libPlugin.getTimeFromNative(),
	  })
	},
}

         注意:新引入插件一定要重新对自定义基座进行打包,不然插件引入会失效

     


    免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

    目录[+]