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

谁会在 rn 里调用第三方.so 文件,实在弄不懂求教

  •  
  •   x58 · 25 天前 · 1462 次点击

    小公司一个项目需要调用.so 文件,我只是一个刚入前端的小白,官网的调用安卓模块的 demo 我也敲了一遍实现了,可是弄公司的.so 时还是一头雾水,没学过安卓和 java 实在是搞不懂,求帮忙,在这里谢谢了,马上项目要教了很急 QAQ

    9 回复  |  直到 2019-05-26 12:16:11 +08:00
        1
    newmind   25 天前
    没了解过 RN, 猜测不能直接调 so 吧
    正常应该是 RN 调 Java 层, Java 层再调 so 层的代码
        2
    MoHen9   25 天前 via Android
    不知 rn 怎么调用,但你可以调用 Android 原生代码,让原生代码调用.so 文件。
        3
    cshlxm   25 天前
    rn 有 bridge 可以调用 android java 的代码,你需要把调用 so 的方法封装下,供 rn 直接调用就行了~不复杂, 只是需要知道 rn 怎么和 java 通信
        4
    x58   25 天前
    @cshlxm 老板给了我一个调用 so 库的 java 文件,那我是不是应该在建两个 java 文件,一个用于调用那个给我的 java 文件,一个用于注册我创建的调用 java 的文件
        5
    ntop   25 天前
    先用 js 调用 java,在用 java 通过 jni 调用 .so ,网上搜搜这几个关键字,例子很多的。
        6
    aWangami   25 天前 via Android
    留下联系方式,可以有偿帮你解决
        7
    huruwo   25 天前
    先给 java 层吧
    libs 下放入对应的 so 文件
    gradle 添加引入架构
    最后对应 java 本地方法

    ```
    static {
    try {
    System.loadLibrary("xxx");
    } catch (UnsatisfiedLinkError unused) {
    }
    }

    public static native byte[] d(byte[] bArr);
    ```
        8
    woos   25 天前
    1. 导入 so 文件。
    像 huruwo 说的,把 so 文件复制到 libs 里,然后修改 gradle,使得 so 库可以被访问到。
    2. 编写 react native module。
    根据 rn 官方文档,定义一个 module,然后声明一个方法包裹了 System.loadLibray("libName")。注意异常处理
    3. 在前端调用。
    在 js 代码中导入新定义的 module,并调用其方法。
        9
    qzskaka   25 天前
    1、在 java 层导入 so,写 JNI 对应接口
    2、java 实现 RN Module (官方有文档),调用 JNI
    3、JavaScript 层调用 RN Module export 方法接口
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2536 人在线   最高记录 5043   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 18ms · UTC 13:48 · PVG 21:48 · LAX 06:48 · JFK 09:48
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1