一、 开发环境
• JAVA环境 jdk1.8
• AndroidStudio
下载地址:Android Studio官网 : https://developer.android.google.cn/studio/index.html
• App离线SDK下载
请下载2.9.8+版本的android平台SDK.
https://nativesupport.dcloud.net.cn/AppDocs/download/android.html#
• HBuilderX下载
官方下载地址: https://www.dcloud.io/hbuilderx.html
二、 java代码打包成uni-app可识别的aar文件
将下载的App离线SDK下载解压;
将sdk中的UniPlugin-Hello-AS项目导入Android Studio
![](https://i-blog.csdnimg.cn/blog_migrate/44459b68117bee4826f7791833397303.png)
创建插件Library 此处我们命名为mylibrary
![](https://i-blog.csdnimg.cn/blog_migrate/0e5b973c0b2ea42c51128b73ef09af3b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/969e245ab0e1822129065d278374b5d2.png)
将uniplugin_module 中的build.gradle内容全部复制,并覆盖mylibrary的build.gradle内容
![](https://i-blog.csdnimg.cn/blog_migrate/a77895c46cd65340ba3c29d7c1537154.png)
修改mylibrary 文件下的\src\main\AndroidManifest.xml 如图所示 :
![](https://i-blog.csdnimg.cn/blog_migrate/b69658458a12d38c645dab9092022b80.png)
删除 mylibrary 路径src下的androidTest和test(原因是在build.gradle中没有引入相关依赖,会报错,也可自行添加上依赖)
在mylibrary路径src\main\java编写Java代码
代码注意事项:
1). 类要继承 UniModule
2). 方法上加入注解@UniJSMethod(uiThread = false)
3). 方法必须事public 方法
.以JSONObject形式返回
![](https://i-blog.csdnimg.cn/blog_migrate/5447a1de746d2fa14f60bdd490b83f1d.png)
对于代码中涉及到com.sun.crypto.provider.SunJCE()报错问题,可在C:\Program Files\Java\jdk1.8.0_72\jre\lib\ext拷贝sunjce_provider.jar至libs中,并通过右键-add as library 引用即可
![](https://i-blog.csdnimg.cn/blog_migrate/caeca0b50662776ce07aeb576fea6bc3.png)
打包成aar
选中mylibrary,通过build-makemodule "*.mylibrary" 打包
![](https://i-blog.csdnimg.cn/blog_migrate/d93caab81eeb28daa14885a5e762354b.png)
打包完成后,如下图位置即可找到打包成功的aar文件
![](https://i-blog.csdnimg.cn/blog_migrate/0d430a07bfd8f3f4e64e8eca78cc9190.png)
三、 uni-app调用原生插件
Hbuilder X 打开uni-app项目
官方说明:https://nativesupport.dcloud.net.cn/NativePlugin/
在nativeplugins下创建如下图结构的数据
![](https://i-blog.csdnimg.cn/blog_migrate/97730d5195389da32e32a28d3a70ea31.png)
按官方要求编写package.json
![](https://i-blog.csdnimg.cn/blog_migrate/d71e6487d99a97a5d32162ef9366b42d.png)
manifest.json 中添加本地插件配置
![](https://i-blog.csdnimg.cn/blog_migrate/13a40ed287f7af667b12740550742208.png)
打包自定义基座:运行-运行到手机或模拟器-制作自定义调试基座 。
![](https://i-blog.csdnimg.cn/blog_migrate/ebc0e2da24f0bcc70d88c95a8ca2870a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/5b0a43c0328ec4867a7d21f43abde69d.png)
测试运行
运行-运行到手机或模拟器-运行到Android app基座,选择自定义基座
![](https://i-blog.csdnimg.cn/blog_migrate/076ecbdd4233e7a69ae0eef33a84f10d.png)
前端调用:
const MyTest=uni.requireNativePlugin('mylibrary-debug-MyTest');
MyTest.getTestData();