【发布时间】:2017-07-23 23:38:40
【问题描述】:
我正在使用 React Native 为 Android 和 iOS 开发一个应用程序。
我使用的其中一个库有点问题,因为应用程序只能正确编译:
- ...在 Android 上使用
"react-native": "0.42.0"。 - ...在 iOS 上使用
"react-native": "0.37.0"。
(库本身和react-native 的特定版本对于本次讨论都不重要。重要的是我似乎需要两个单独的版本“同时” -每个平台都有一个不同的。)
我正在寻找一种方法来获得一个单一的代码库,该代码库可以使用任何平台的相关工具进行编译,无需任何修改1。我想到的解决方案是(以某种方式):
- 为每个移动操作系统指定不同的软件包版本。
- 每个平台都有完全不同的
package.json文件。
但是,我不知道如何实现上述任何一项,或者它们是否可能。我尝试按照React-Native docs on platform-specific code 中的说明添加.ios 和.android,但npm 无法识别这些文件。
所以我的问题是:
- 我的想法可行吗?如果可行 - 怎么样?
- 还有其他方法可以得到想要的结果吗?
1 在类 C 代码中,使用预处理器标志很容易做到这一点。
【问题讨论】:
-
您使用的库是什么?我真的不会在 ios/android 上使用不同的 RN 版本。它们之间的差异在某些时候会变得非常难以处理。 0.42+ 有一些你的 ios 应用程序会错过的错误修复。在此之上,您将不得不错过新的可用功能。我会去查看库并使其在 0.42 上运行,只要维护者在项目中,打开 PR 就会有所帮助。
-
@dhorelik - 感谢您的评论。该库本身正在积极开发中,我相信最终会解决这种差异。我的问题具有更笼统的性质,所以我没有特别提到图书馆。在这种特定情况下,RN 版本需要不同,但它也可以很容易地成为其他一些依赖项。我想有一种方法来解决由于某种原因(由于一些小的功能更改等)需要不同的库版本的情况。我认为这个问题如果保持一般性,将来可能会使其他人受益更多。
-
@Dev-iL 我面临的情况是,我使用的是适用于 android 而不是 iOS 的包,如何在不干扰 iOS 构建的情况下使用单个代码库实现这一点?
-
@vignesh 我几乎不是这个主题的专家,所以想到的唯一想法是创建包的本地副本(“版本”),然后删除大部分 iOS来自它的代码 - 使其符合但没有效果。
-
遇到类似问题@Dev-iL -- 你找到解决方案了吗?
标签: npm react-native dependencies multiple-versions os-dependent