吃辣条的大妖怪
吃辣条的大妖怪
  • 发布:2019-06-26 15:55
  • 更新:2021-10-18 18:58
  • 阅读:9203

安卓原生小白,uniapp离线打包接入自定义插件简单调用成功流程记录

分类:uni-app

【此事件研究第二天】为了实现安卓和uniapp结合,发现之前是直接想复杂了,想着用插件的方式,完全可以直接调用java写的方法和页面。
uniapp直接调用安卓自定义方法

在需要接入三方sdk的情况下,研究了下uniapp离线打包。整个过程中遇到的坑
uniapp离线打包填坑记

在离线打包成功后,后续又花了些时间研究了,引入自定义插件。
参考文档:uni-app原生插件开发教程 Android Studio 版
全程参考官方提供文档,可最新sdk包里下载下来的UniPlugin-Hello-AS项目;
主要也是想弄明白整个流程。

纯小白经验记录贴,pc和手机端一起搞的,担心太久不搞手机会忘记。

1.在HbuilderX新建一个uniapp项目,就是最简单的hello uniapp,
2. 在Android Studio 内新建一个安卓项目,将uniapp项目离线打包至安卓项目内,并成功运行。
3. 全都成功后,按照官方提供的文档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下的替换掉之前的。在安卓下运行。就可以调用成功

运行后显示;

2 关注 分享
1***@qq.com 来盘芋头丸

要回复文章请先登录注册

9***@qq.com

9***@qq.com

大佬,离线打包怎么引入第三方原生sdk?
2021-10-18 18:58
岁白

岁白

请问下 怎么在MyTestText 中使用MyTest_AppProxy初始化的对象
2021-07-08 14:58
AimerQAQ

AimerQAQ

Android,IOS原生插件开发请找我哦,QQ462108858
2020-04-21 16:18
杨帅气

杨帅气

好的,谢谢
2019-12-04 17:46
吃辣条的大妖怪

吃辣条的大妖怪 (作者)

回复 低价位小菜 :
没有试过额,只是做了一个简单demo测试,用uniapp插件的方式实现的。
2019-07-31 18:02
低价位小菜

低价位小菜

已经做好的安卓demo怎么转换成uni-app能用的插件啊,大佬
2019-07-31 15:44
吃辣条的大妖怪

吃辣条的大妖怪 (作者)

回复 杨帅气 :
可以参考我第一个链接,这个是插件调用的,完全想复杂了,可以不用这种方式。离线打包,在Android studio 里面运行成功后,在进行调用
2019-07-20 10:35
杨帅气

杨帅气

大佬为什么我按照官方文档,还有参考你的说明,但是js没有调用我的原生方法呢,可不可以留个联系方式请教下
2019-07-20 10:11