美文网首页
React Native拦截NativeModule方法实现

React Native拦截NativeModule方法实现

作者: magicyoung | 来源:发表于2018-01-21 23:36 被阅读0次

    React Native提供了强大的ReactPackage接口便于注册NativeModule,JavaScriptModule与ViewManager,但是在开发过程中,JS与客户端联调不方便,或者耗时过长的 NativeModule方法影响着 RN页面的运行性能,那么有什么方便的途径来做到这一次监控呢?

    先来上两张图,JS与c++写的不是很完整。

    Java调用JS JS调用Java

    我们在NativeMethod方法中,修改掉内部注册的方法,替换成我们进行的HookMethod,这样所有的方法执行都可以被捕捉到。

    NativeModule分类

    我们要做的是替换掉BaseJavaModule中注册的方法,同时不修改掉其他的模块

    方便的是,ReactPackage已经为我们做好了分类,那么我们只需要管理好注册的这些NativeModules即可

    ListcreateNativeModules(ReactApplicationContext reactContext);

    List>createJSModules();

    ListcreateViewManagers(ReactApplicationContext reactContext);

    第一个方法返回的便是我们所有注册的模块,同时我们要考虑好在构建的ReactNativeHost名单中去除掉MainReactPackage。

    方法表的创建过程


    方法表创建

    那么,我们执行findMethods方法,对其手动初始化map(这里mMethods是private无法访问),再替换成我们自己的(具体实现是JavaMethod)。

    相关文章

      网友评论

          本文标题:React Native拦截NativeModule方法实现

          本文链接:https://www.haomeiwen.com/subject/dzxcaxtx.html