V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jdgui
V2EX  ›  Android

安卓原生和 js 交互有好用的框架吗

  •  
  •   jdgui · 2020-02-02 14:52:14 +08:00 · 11289 次点击
    这是一个创建于 1762 天前的主题,其中的信息可能已经有所发展或是发生改变。

    公司的一个新坑,需要 js 和原生交互。之前我自己搭的交互框架被吐槽了

    10 条回复    2020-02-03 23:47:12 +08:00
    fairytale110
        1
    fairytale110  
       2020-02-02 15:38:37 +08:00   ❤️ 1
    我借鉴了 workplus 的方案,目前适用于 Android 和 iOS,H5 那边只需要引用一个 js 文件即可。
    fairytale110
        2
    fairytale110  
       2020-02-02 15:39:12 +08:00   ❤️ 1
    huiyue
        3
    huiyue  
       2020-02-02 15:53:31 +08:00   ❤️ 1
    mpaas 了解一下。
    geekc3t
        4
    geekc3t  
       2020-02-02 15:55:05 +08:00   ❤️ 1
    phonegap?
    geekc3t
        5
    geekc3t  
       2020-02-02 15:56:28 +08:00   ❤️ 1
    cordova 这个
    Torpedo
        6
    Torpedo  
       2020-02-02 15:56:30 +08:00   ❤️ 1
    cordova 还是可以的
    xiangyuecn
        7
    xiangyuecn  
       2020-02-02 16:24:41 +08:00   ❤️ 1
    自己撸一个也不是难事,安利一波我的设计模式:
    js->native : Request -> Response 支持同步、异步响应,Android IOS 通吃
    native->js : Execute -> JavaScript Code 好像只能异步得到 js 结果

    -------
    有个开源库用到了这个模式:
    js 端: https://github.com/xiangyuecn/Recorder/blob/3418c5cc8636b319c17e76e9444309282718fd82/app-support-sample/native-config.js#L37-L99 这个 demo 需要提供的接口太少,没有把接口声明成 app.xxx()这种方式调用,不过自己项目里面的都是提前声明接口然后可以直接 app.xxx()调用

    Android 端: https://github.com/xiangyuecn/Recorder/blob/3418c5cc8636b319c17e76e9444309282718fd82/app-support-sample/demo_android/app/src/main/java/com/github/xianyuecn/recorder/RecordAppJsBridge.java#L99-L123 接收请求逻辑还算简单,实际的接口处理逻辑分开在别的类里面按需定义实现

    IOS 端: https://github.com/xiangyuecn/Recorder/blob/3418c5cc8636b319c17e76e9444309282718fd82/app-support-sample/demo_ios/recorder/RecordAppJsBridge.swift#L57-L66 和 Android 区别不大

    --------
    但我实际项目中使用的 js 接口样子,调用和定义还算方便:
    https://tva1.sinaimg.cn/large/a32300cdgy1gbi4q9y4zzj20r40hp0tz.jpg

    比如调用定位是这样子的:
    https://tva1.sinaimg.cn/large/a32300cdgy1gbi4pskr5wj20do07nwej.jpg
    xiangyuecn
        8
    xiangyuecn  
       2020-02-02 16:25:43 +08:00
    #7 图还是用 wx1 的好点
    但我实际项目中使用的 js 接口样子,调用和定义还算方便:


    比如调用定位是这样子的:
    jdgui
        9
    jdgui  
    OP
       2020-02-02 18:12:42 +08:00
    @xiangyuecn 感谢,获益良多
    Harry
        10
    Harry  
       2020-02-03 23:47:12 +08:00
    同意 7 楼说的。如果你对 js 和 java 都比较熟悉,那么可以自己写一下。一些事件和返回的地方处理起来需要多用心。
    如果你也不是使用 react native 的话,那么 https://github.com/turbolinks/turbolinks 这个项目应该可以直接解决你的问题。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2149 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 00:44 · PVG 08:44 · LAX 16:44 · JFK 19:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.