用途:为 React Native/Expo 应用修复第三方原生模块(如 expo-image、react-native、async-storage、reanimated)中的原生崩溃或缺陷,并通过 patch-package 生成可提交的补丁文件。
主要能力与流程:按“分析崩溃日志→定位缺陷→修复代码→清理构建产物→生成补丁→提交 PR”六步进行。iOS 侧关注 EXC_BAD_ACCESS、KERN_INVALID_ADDRESS 等异常,提取异常类型、堆栈、内存地址与所属库;Android 侧关注 NullPointerException、OutOfMemoryError,查看异常类、Java/Kotlin 调用链与线程信息。常见修复模式包括 Swift 的 guard let 空值检查、Kotlin 的 ?: 空值返回,以及为大数据/图片处理加尺寸限制。
使用方式:在 node_modules/<package>/ios/ 或 android/src/main/java/ 下定位源码并修改;生成补丁前必须清理 Android 构建缓存,例如 rm -rf node_modules/<package>/android/build(expo-image 为 rm -rf node_modules/expo-image/android/build),否则 .class、.jar 等二进制会污染补丁。随后执行 npx patch-package <package-name>,补丁位于 patches/<package-name>+<version>.patch。可用 grep -c "android/build" patches/<package-name>*.patch 验证结果为 0,再 git add 补丁文件并提交、用 gh pr create 创建 PR。
适用场景:需要临时修复上游原生模块崩溃、且无法等待官方发版的移动端项目。
限制与注意:补丁文件过大时需清理 android/build、ios/build、.gradle 后重新生成;补丁不生效时检查 node_modules 中包版本是否与补丁文件名版本一致,版本变化需重命名补丁。资料未提供具体收费、平台支持范围或效果保证等信息。