【此事件研究第二天】为了实现安卓和uniapp结合,发现之前是直接想复杂了,想着用插件的方式,完全可以直接调用java写的方法和页面。
uniapp直接调用安卓自定义方法
在需要接入三方sdk的情况下,研究了下uniapp离线打包。整个过程中遇到的坑
uniapp离线打包填坑记
在离线打包成功后,后续又花了些时间研究了,引入自定义插件。
参考文档:uni-app原生插件开发教程 Android Studio 版
全程参考官方提供文档,可最新sdk包里下载下来的UniPlugin-Hello-AS项目;
主要也是想弄明白整个流程。
纯小白经验记录贴,pc和手机端一起搞的,担心太久不搞手机会忘记。
1.在HbuilderX新建一个uniapp项目,就是最简单的hello uniapp,
- 在Android Studio 内新建一个安卓项目,将uniapp项目离线打包至安卓项目内,并成功运行。
- 全都成功后,按照官方提供的文档uni-app原生插件开发教程 Android Studio 版;
在uni-app插件Module,我给的名字mytest_text,剩下的配置就按照官方提供的就行。
4.上面的完了,配置就结束了,可以开始开发了。(官方提供的其实已经很简单了,但是我太蠢了,看着脑壳疼,走了个简单的,枯了)
就是写了一个简单的方法可以在uniapp下vue中调用。第一步出去,那离成功就不远了。
在module下src->main->java->com.exmaple.mytest_test 下新建MyTestText。
参考UniPlugin-Hello-AS项目下的 RichAlertWXModule
package com.example.mytest_text;
import com.taobao.weex.WXSDKEngine;
import com.alibaba.fastjson.JSONObject;
import com.taobao.weex.annotation.JSMethod;
import com.taobao.weex.bridge.JSCallback;
public class MyTestText extends WXSDKEngine.DestroyableModule {
public String NAME = "name";
public String VALUE = "value";
@Override
public void destroy() {
}
@JSMethod(uiThread = true)
public void add(JSONObject options, JSCallback jsCallback) {
System.out.println("WWWWWWW-WWWWW");
String name = options.getString(NAME);
String value = options.getString(VALUE);
JSONObject result = new JSONObject();
result.put("result",name+value);
jsCallback.invoke(result);
}
}
新建 MyTest_AppProxy
package com.example.mytest_text;
import android.app.Application;
import com.taobao.weex.WXSDKEngine;
import com.taobao.weex.common.WXException;
import io.dcloud.weex.AppHookProxy;
public class MyTest_AppProxy implements AppHookProxy {
@Override
public void onCreate(Application application) {
}
}
用于引入插件配置,
在安卓项目 assets下新建一个dcloud_uniplugins.json文件,
{
"nativePlugins": [
{
"hooksClass": "",
"plugins": [
{
"type": "module",
"name": "MyTest-Text",
"class": "com.example.mytest_text.MyTestText"
}
]
},
{
"hooksClass": "uni.dcloud.io.uniplugin_stepcounter.StepCounterHookProxy"
}
]
}
name:为插件名,在uniapp调用时需要用到,class需要是自己java类
5.安卓上配置好,现在转向uniapp内,在需要的地方调用方法。本地打包,将生成的文件www下的替换掉之前的。在安卓下运行。就可以调用成功
运行后显示;