开发RN项目时,如何调试iOS真机、Android真机?常见调试问题排查?

在开发 React Native(RN)项目时,真机调试是必备技能。下面我从 iOS / Android 真机调试步骤 + 常见问题排查 给你一套实战指南(偏工程经验总结)。


一、iOS 真机调试

1. 基本前提

  • 必须使用 Xcode

  • 需要 Apple ID(免费也行)

  • iPhone 用数据线连接 Mac


2. 配置步骤

✅ 第一步:信任设备

  • iPhone 上点击"信任此电脑"

✅ 第二步:Xcode 配置签名

打开:

复制代码
ios/xxx.xcworkspace

设置:

  • Targets → Signing & Capabilities

  • 勾选 Automatically manage signing

  • 选择你的 Apple ID Team


✅ 第三步:运行到真机

复制代码
npx react-native run-ios --device

或在 Xcode 里直接 Run


✅ 第四步:启动 Metro

复制代码
npx react-native start

3. 常用调试方式

🔍 控制台日志

复制代码
console.log()

🔍 使用 Safari 调试 JS

步骤:

  1. iPhone → 设置 → Safari → 高级 → 打开 Web Inspector

  2. Mac Safari → Develop → 选择你的设备


🔍 使用 Flipper(推荐)

  • 查看网络请求

  • 查看布局

  • AsyncStorage


二、Android 真机调试

1. 基本前提

  • 安装 Android Studio

  • 打开 USB 调试(开发者选项)


2. 配置步骤

✅ 第一步:开启 USB 调试

手机:

  • 设置 → 关于手机 → 连点版本号 7 次

  • 开启「开发者选项」→ USB 调试


✅ 第二步:连接设备

复制代码
adb devices

能看到设备说明成功


✅ 第三步:运行项目

复制代码
npx react-native run-android

✅ 第四步:端口转发(关键)

复制代码
adb reverse tcp:8081 tcp:8081

👉 不然真机访问不到 Metro


3. 常用调试方式

🔍 打开开发菜单

摇一摇 或:

复制代码
adb shell input keyevent 82

🔍 使用 Chrome DevTools

复制代码
chrome://inspect

🔍 使用 Flipper(强烈推荐)

支持:

  • Network

  • Layout

  • Logs


三、常见问题排查(重点🔥)


🚨 1. 真机无法连接 Metro(最常见)

现象:

  • 红屏:Could not connect to development server

解决:

iOS:
  • 确保手机和电脑同一 WiFi

  • 手动设置 IP:

    RCTBundleURLProvider.sharedSettings().jsLocation = "你的IP:8081"

Android:
复制代码
adb reverse tcp:8081 tcp:8081

🚨 2. 端口被占用

复制代码
lsof -i :8081
kill -9 xxx

🚨 3. iOS 编译失败(签名问题)

报错:

  • No provisioning profile

  • Signing error

解决:

  • Xcode → 自动签名

  • 换 Bundle Identifier(唯一)


🚨 4. Android 编译失败

常见原因:

  • JDK 版本不对(建议 11 或 17)

  • Gradle 缓存问题

解决:

复制代码
cd android
./gradlew clean

🚨 5. 热更新失效 / 不刷新

复制代码
# 重启 Metro
npx react-native start --reset-cache

🚨 6. 白屏 / 卡死

排查顺序:

  1. JS 报错(看 Metro)

  2. Native 崩溃(看 Xcode / Logcat)

  3. 网络请求失败


🚨 7. iOS 运行后闪退

常见:

  • 权限未配置(相机、定位)

👉 在 Info.plist 添加:

复制代码
<key>NSCameraUsageDescription</key>
<string>需要使用相机</string>

🚨 8. Android 网络请求失败(HTTP)

Android 9+ 限制 HTTP

👉 解决:

复制代码
android:usesCleartextTraffic="true"

🚨 9. 设备连接不上 adb

复制代码
adb kill-server
adb start-server

四、实战调试建议(高级经验)

✅ 建议你这样配置

  • 调试工具:Flipper + Chrome DevTools

  • 日志工具:react-native-logs

  • 网络抓包:Charles / Proxyman


✅ 推荐调试组合

  • JS 调试 → Chrome

  • Native 问题 → Xcode / Logcat

  • 网络问题 → Flipper


五、总结(重点记住)

👉 真机调试核心就 3 件事:

  1. 设备连接(adb / Xcode)

  2. Metro 连接(8081 端口)

  3. 调试工具(Flipper / Chrome)

相关推荐
你别说话了19 小时前
Vue项目解决跨域
前端·javascript·vue.js
唐青枫20 小时前
http-server:别再双击 index.html,一条命令把目录变成网站
前端·javascript
网安蟹佬霸20 小时前
OSINT开源情报收集实战:从信息搜集到资产测绘(2026最新万字保姆级指南)
前端·网络·安全·web安全·网络安全·开源
单线程_0121 小时前
【源码阅读】Vue3 Tokenizer 词法分析器完整状态机流转深度梳理(3.4+ 新版架构)
前端
PBitW21 小时前
PM 丢来 3 个 Excel、12 个功能、4 种情形?用 TRAE Work 30 分钟整理成前端开发文档
前端·trae
游戏开发爱好者821 小时前
WebSocket 抓包怎么查看内容?从握手到消息帧完整解读
网络协议·计算机网络·网络安全·ios·adb·https·udp
风骏时光牛马1 天前
AIAgent高可用架构:弹性容错与故障自愈的落地实践
前端
IT_陈寒1 天前
Vue的响应式什么时候会失灵?这个坑我踩了
前端·人工智能·后端
烟锁池塘柳01 天前
解决 Firefox 浏览器网页文本选中高亮不明显问题(含仅修改特定网站高亮显示的方案)
前端·firefox
Patrick_Wilson1 天前
Web 认证方案技术指南
前端·后端·面试