【问题标题】:At what point are Native Modules compiled in a React Native app (with Expo)?什么时候在 React Native 应用程序(使用 Expo)中编译原生模块?
【发布时间】:2020-06-18 18:39:59
【问题描述】:

底层 Native Modules 是在从 NPM 安装时编译,还是在 App 运行时编译(即捆绑)?

我认为它们不太可能在从 NPM 安装时进行编译,因为这需要您在安装时在您的计算机上安装适当的编译器(我没有)。 最重要的是,我找不到任何似乎是编译结果的文件。

但是,我不确定的原因是,对 Native 代码的更改似乎没有反映在最终的 React Native 应用程序中。

我正在尝试实现 NPM 包中缺少的功能,因此为了熟悉该包,我一直在修改 Native 代码。

但是,我可以更改任何我想要的,但这些更改在最终应用程序中似乎没有任何作用。

我什至从给定的包中完全删除了所有本机代码(androidios 文件夹),然后清除了我的缓存(在 Expo 捆绑器和 Expo 客户端上),但是还是什么都没发生;不知何故,应用程序似乎仍然忽略了应该是明显的错误(即丢失文件)。

这与我使用 Expo 的事实有关吗?是否忽略了更改,因为代码是从某处的缓存中读取的? 我只是从根本上误解了什么吗?

任何帮助将不胜感激。

附:我的最终目标是能够修改上述 NPM 包,所以如果不能直接修改 Native Module,有人可以告诉我正确的方法吗?谢谢。

【问题讨论】:

    标签: java objective-c swift react-native react-native-native-module


    【解决方案1】:

    对于那些可能处于类似情况的人,您似乎无法使用 Expo 修改 Native 代码,除非您弹出您的应用程序或使用原生 React Native。

    据我所知,造成这种情况的原因是每个与 Expo 兼容的原生模块都预先与 Expo 捆绑在一起(这包括 Expo 团队制作的模块以及其他人制作,但世博会团队也包括在内)。

    这意味着除非您可以让与 Expo 兼容的本机模块的维护者发布应用了您的更改的新版本的软件包,否则 Expo 将不会获取您的自定义更改。

    即使那样我也不能保证它会起作用,因为我不知道 Expo 的每个版本是否都仅限于它在发布时包含的 Native 模块的版本。

    如果您需要更多信息,最好尝试在社交媒体或 Expo 论坛上联系 Expo 开发人员之一。

    这里有一些额外的链接。它们最终可能会死去,但无论如何我都会将它们包括在内:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-26
      • 2018-02-23
      相关资源
      最近更新 更多