0

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

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

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

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

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

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

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

任何帮助将非常感激。

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

4

1 回答 1

0

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

据我所知,这是因为每个与 Expo 兼容的 Native 模块都预先与 Expo 捆绑在一起(这包括 Expo 团队制作的模块以及其他人制作但 Expo 团队包含的模块)。

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

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

如果您需要更多信息,最好尝试在社交媒体或世博论坛上联系一位世博开发者。

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

于 2020-06-23T15:24:08.760 回答