你可以在 Expo 项目中使用像https://github.com/tolu360/react-native-google-places这样的库吗?我假设任何 npm 库都可以添加,但是像这个 google 位置选择器这样的库呢?它需要安装后步骤来链接本机项目。世博会支持他们吗?
1 回答
常规 Expo 项目仅使用 JavaScript 编写,不支持包含 Objective-C 或 Java 的 npm 包。但是,当您绝对需要使用自定义本机代码时,Expo 提供了一个名为 ExpoKit 的高级 SDK。来自世博会文档:
通常,Expo 应用程序是用纯 JS 编写的,永远不会“下拉”到本机 iOS 或 Android 层。这是 Expo 理念的核心,也是使 Expo 快速和强大的使用的一部分。
但是,在某些情况下,高级开发人员需要 Expo 提供的开箱即用之外的本机功能。最常见的情况是项目需要 React Native Core 或 Expo SDK 不支持的特定 Native Module。
您可以“分离”您的 Expo 项目以创建包含 ExpoKit 的 Xcode 和 Android Studio 项目。然后,您可以像添加任何其他 Xcode 或 Android Studio 项目一样添加自定义的 Objective-C 或 Java。
然而,Expo 文档也警告了编写自定义本机代码的一些缺点。许多功能通常可以在 JS 中很好地实现,让您保留标准 Expo 项目的所有好处。
警告:我们不鼓励大多数开发人员采用这种方式,因为我们相信您需要做的几乎所有事情都可以通过 JS 以跨平台方式更好地完成。
用 JS 编写使您能够最好地利用无线代码部署,并受益于 Expo 的持续更新和支持。仅当您对原生代码有特定需求而 Expo 无法很好地支持时,您才应该这样做,例如(例如)必须在设备本地进行的专用 CPU 密集型视频处理。