React Navigation(使用 Expo) - MainActivity.java 文件的位置?

Posted

技术标签:

【中文标题】React Navigation(使用 Expo) - MainActivity.java 文件的位置?【英文标题】:React Navigation (using Expo) - location of the MainActivity.java file? 【发布时间】:2019-05-31 18:04:09 【问题描述】:

我正在浏览 React Navigation 文档。

在React Navgation - Getting Started 指令中,它说 “要完成 android 的 react-native-gesture-handler 的安装”,我需要编辑 MainActivity.java 文件。 但是我的项目中没有该文件,或任何其他与之相关的类似目录 (./android)。

我使用expo-cli 创建了我的项目,特别是:

# To create a new React Native project  
$ expo init project-name


# And to run the App in Expo  
$ expo start

我想知道我是否必须创建一个构建以及它是如何完成的,以便 Expo 创建 Android 和 ios 构建使用的文件,或者我还缺少什么?

【问题讨论】:

【参考方案1】:

世博会

当您使用 Expo 创建您的应用程序时,您不会有一个 android 文件夹,因为这些是从您那里抽象出来的。

如果您希望使用需要您编辑本机代码的依赖项,那么您需要弹出您的应用程序。 https://docs.expo.io/versions/latest/expokit/eject

从您的命令行运行 expo 弹出,它将为您构建必要的 ios 和 android 文件夹。但是,如果您退出应用程序,则会产生多种后果。你应该仔细阅读上面的链接。

反应导航

但是,由于 Expo 建议使用 react-navigation,您不需要安装 react-native-gesture-handler,因为它已经安装在 Expo 中 https://reactnavigation.org/blog/2018/11/17/react-navigation-3.0.html#installation

首先,使用您喜欢的包管理器安装库:

yarn add react-navigation@^3.0.0

接下来,安装 react-native-gesture-handler。如果你使用 Expo,你不需要在这里做任何事情,它包含在 SDK 中。

它甚至在安装说明页面上提到了它https://reactnavigation.org/docs/en/getting-started.html#installation

接下来,安装 react-native-gesture-handler。如果你使用 Expo,你 这里不需要做任何事情,它包含在 SDK 中。否则:

react-native-gesture-handler

类似地检查 react-native-gesture-handler 的文档,它说:

Gesture Handler 已经是 Expo 的一部分,没有额外的 需要配置。但是,考虑到 Expo SDK 团队可能 花一些时间来包含最新版本的库 - 所以 Expo 可能并不总是尽快支持我们所有的最新功能 出去。

https://kmagiera.github.io/react-native-gesture-handler/docs/getting-started.html#with-expo-https-expoio

使用 Expo 创建构建

没有必要重复此处的步骤来使用 Expo 创建构建,它在 Expo 文档中提供了相当多的详细信息,可以在此处找到 https://docs.expo.io/versions/latest/distribution/building-standalone-apps

【讨论】:

感谢 Andrew 的快速回答和对 eject 的解释。起初,文档没有明确说明如果您使用 Expo,则不需要修改 MainActivity.java。这说得通。再次感谢!

以上是关于React Navigation(使用 Expo) - MainActivity.java 文件的位置?的主要内容,如果未能解决你的问题,请参考以下文章

Expo Camera 仅使用 React Navigation 打开一次

无法让 Jest expo 应用程序与 react-navigation 一起使用

找不到变量:用户。我正在使用 firebase auth 和最新的 SDK、expo SDK 42、react navigation 6.x.x

React Navigation-Introduction (简介)

如何使用 Expo 清理(重置缓存)React Native。不知道是否缓存问题

navigation.setOptions() 在 React Native(博览会环境)中不起作用