13

我正在使用 React Native 为 Android 和 iOS 开发一个应用程序。

我正在使用的其中一个库有点问题,因为该应用程序只能正确编译:

  • ...在Android上使用"react-native": "0.42.0".
  • ...在iOS上使用"react-native": "0.37.0".

(对于这个讨论,库本身和具体版本react-native都不重要。重要的是我似乎“同时”需要两个单独的版本——每个平台都有一个不同的版本。)

我正在寻找一种方法来拥有一个单一的代码库,该代码库可以使用任何平台的相关工具进行编译,无需任何修改1。我想到的解决方案是(以某种方式):

  • 为每个移动操作系统指定不同的软件包版本。
  • 每个平台都有完全不同package.json的文件。

但是,我不知道如何实现上述任何一个,或者它们是否可能。我尝试按照平台特定代码的 React-Native 文档中的说明添加.ios和,但 npm 无法识别这些文件。.android

所以我的问题是:

  1. 我的想法可行吗?如果可行 - 怎么样?
  2. 有没有其他方法可以得到想要的结果?

1在类 C 代码中,使用预处理器标志很容易做到这一点。

4

1 回答 1

-1

还没试过,但我会去的。有人建议我试试这个:“将 npm 别名package.json与 Metro 支持的特定于平台的文件结合在一起(例如Component.ios.js)”

可能是……</p>

{
  "package-v1": "http://example.com/package-v1",
  "package-v2": "http://example.com/package-v2",
   // or GitHub based
  "package-v1": "orgname/package#v1",
  "package-v2": "orgname/package#v2",
}

// Component.ios.js
import "package-v1"

// Component.android.js
import "package-v2"
于 2019-05-23T21:45:45.553 回答