使用Android Studio打开:

选中项目新建模块:

填写相关模块名称:
注意包名:
目录中多出一项:
新建Java Class:

导入相关包:
import io.dcloud.feature.uniapp.annotation.UniJSMethod; import io.dcloud.feature.uniapp.bridge.UniJSCallback; import io.dcloud.feature.uniapp.common.UniModule; public class main extends UniModule { UniJSCallback cb; @UniJSMethod(uiThread = false) public void foo(UniJSCallback cb){ this.cb = cb; } }
实现具体方法:
找到:
文件名:consumer-rules.pro
添加:
-keep public class * extends io.dcloud.feature.uniapp.common.UniModule{*;}
文件名:proguard-rules.pro
添加:
-keep public class * extends io.dcloud.feature.uniapp.common.UniModule{*;}



添加相关依赖:
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' }

编辑插件内容:
public class Main extends UniModule { UniJSCallback callback; @UniJSMethod(uiThread = false) public void foo(String url, UniJSCallback callback) { this.callback = callback; try { callback.invoke("return ->"+url); } catch (Throwable throwable) { throwable.printStackTrace(); } } }
双击assemble最后打包:

注意:
mUniSDKInstance.getContext(); //用于代替context 需要继承 extends UniModule
callback.invoke("result");//用于返回数据
uniapp向android传参: param为参数
页面跳转获取参数: static final int REQUEST_CODE = 1000; Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType("*/*");//无类型限制 intent.addCategory(Intent.CATEGORY_OPENABLE); ((Activity)mUniSDKInstance.getContext()).startActivityForResult(intent, REQUEST_CODE);
@Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if(requestCode == REQUEST_CODE && data.hasExtra("respond")) { Log.e("TestModule", "原生页面返回----"+data.getStringExtra("respond")); } else { super.onActivityResult(requestCode, resultCode, data); } }


uniapp项目目录下面新建:nativeplugins文件夹,创建插件同名文件夹,然后创建android文件夹,把插件复制进去、添加package.json文件: 目录结构:

注意:package.json文件class为插件包名.类名的形式、插件名称要和文件夹名称一致

添加插件:

使用插件:

// let plugin = uni.requireNativePlugin('VideoThumbnail'); // try { // plugin.retrieve('http://a.laremehpe.xyz/resource/video.mp4',(res) => { // uni.showModal({ // content: JSON.stringify(res) // }) // }) // } catch (e) { // uni.showModal({ // content: 'error' + JSON.stringify(e) // }) // }
离线打包原生插件:
根目录创建结构:

package.json:

uniapp下的manifest.json添加:

打包文件下创建dcloud_uniplugins.json文件

内容如下:

{ "nativePlugins":[ { "plugins": [ { "type": "module", "name": "xxx", "class": "xxx" } ], "hooksClass": "", "integrateType": "aar", "abis":[] } ] }
将插件复制到libs目录下:

最后打包即可
posted on
浙公网安备 33010602011771号