针对 facebook/react-native#58148 的复现器:
React Native 自带的 packages/react-native/gradle/libs.versions.toml 将 okhttp = "4.9.2" /
okio = "2.9.0" 固定为指定版本,而 okio 2.9.0 受
CVE-2023-3635 / GHSA-w33c-445m-f8w7 影响,
该漏洞已在 okio 3.4.0 中修复。
未对任何应用代码进行修改以生成此项目。 ReproducerApp 是 npx @react-native-community/cli init 完全未修改的输出结果,
基于 [email protected](此模板当前的 latest,与 main 分支的 0.87.0-main 一致)生成。存在漏洞的固定版本来自 React Native 自身的版本目录,而非消费方应用的任何操作所致。
如需复现,请在 ReproducerApp/android 目录下执行:
./gradlew :app:dependencies --configuration releaseRuntimeClasspath | grep -iE "okhttp|okio"
输出(完整运行结果保存在 gradle-dependencies-output.txt 中):
com.squareup.okhttp3:okhttp-urlconnection:4.9.2
com.squareup.okhttp3:okhttp:4.9.2 (*)
com.squareup.okio:okio:2.9.0 (*)
com.squareup.okhttp3:okhttp:3.14.9 -> 4.9.2
com.squareup.okio:okio:2.8.0 -> 2.9.0
okhttp/okio 会出现在应用实际发布的 releaseRuntimeClasspath 中(不仅仅是测试工具),
通过 com.facebook.fresco:imagepipeline-okhttp3 和 React Native 自身的 react-android 构件以传递依赖方式引入。
这是您的全新 React Native 复现器项目。
此项目已通过 npx @react-native-community/cli init 创建,是一个原生的 React Native 应用。
[!IMPORTANT]
请确保您已完成 React Native - 环境搭建,以便在本地拥有可用的开发环境。
首先,您需要启动 Metro,即 React Native 自带的 JavaScript 打包器。
要启动 Metro,请在 React Native 项目的 根目录 下运行以下命令:
# 使用 npm
npm start
# 或使用 Yarn
yarn start
让 Metro Bundler 在 独立 的终端中运行。在 React Native 项目的 根目录 下打开一个 新的 终端。运行以下命令以启动您的 Android 或 iOS 应用:
# 使用 npm
npm run android
# 或使用 Yarn
yarn android
首先,请确保使用以下命令安装依赖:
cd ios && bundle install && bundle exec pod install
然后,您可以使用以下命令运行 iOS 应用:
# 使用 npm
npm run ios
# 或使用 Yarn
yarn ios
如果一切设置 正确,只要您已正确配置模拟器,您的全新应用很快就会运行在您的 Android 模拟器 或 iOS 模拟器 中。
这是运行应用的一种方式——您也可以分别直接从 Android Studio 和 Xcode 中运行。
现在您已成功运行应用,让我们对其进行修改。
在您选择的文本编辑器中打开 App.tsx 并编辑一些代码行。
对于 Android:按两次 R 键,或从 开发者菜单(Ctrl + M(Windows 和 Linux 上)或 Cmd ⌘ + M(macOS 上))中选择 "Reload",即可查看您的更改!
对于 iOS:在 iOS 模拟器中按 Cmd ⌘ + R 以重新加载应用并查看您的更改!