uniapp项目调用外部jar包初尝试
项目基于uniapp开发,突然丢给你一个jar包,你会怎么办?
网上很多教程都是教你如何打包APP原生插件的。
这篇文章,是已有jar包的情况下,如何在项目内直接调用jar包中的class,初尝试了一番。
混合开发大概有2种方式。第一种是最简单,也是本文想写的。
第一种:添加本地插件的方式
按规范放置jar包
通过创建 nativeplugins
目录,把 jar 包丢进去,再配置个 package.json
声明这个插件。文件目录如图:
package.json 原生插件描述文件,完整说明请看https://ask.dcloud.net.cn/article/35414
demo文件请看https://ext.dcloud.net.cn/plugin?id=36(为了演示,我把aar文件解压,取里面的jar包)
最后通过修改HbuilderX的 manifest.json
配置,APP原生插件配置-本地插件,选中即可。
自定义基座
首先打自定义基座,然后以自定义基座运行到安卓模拟机。
调试使用
在页面中把 jar的类定义为变量,可以打印出里面的方法。
1 | const DCloudRichAlert = uni.requireNativePlugin("DCloud-RichAlert"); |
方法调用也正常。
额外提示
如何查找包名、类名、class的路径?
下载反编译工具:jd-gui http://www.downza.cn/soft/228025.html
打开 jar文件,右边第一行可以看到 package xxx
,这个加上下面的class(主方法),就是插件 package.json
里的class(注册插件的类名)。
第二种:Native.js的方式
Native.js for Android封装一条通过JS语法直接调用Native Java接口通道。
离线打包 后,在原生开发环境导入类对象,通过plus.android.importClass
声明。
离线打包后的代码,感觉不方便调试,没有深入研究。适合有Android Studio开发基础的同学。
Native.js代码:https://ask.dcloud.net.cn/article/88
1 | /** |