如何修复在 simulator/device 上完美运行但在存档上失败的 Xcode 构建?
How can I fix an Xcode build that works perfectly on simulator/device, but fails on archive?
怪异的链接相关错误
当我尝试在 Xcode 10.3
中构建存档时
环境信息
- RN: 0.59.3
- Xcode: 10.3
- React 本机手势处理程序 (RNGH):1.4.1
- 反应导航:3.11.0
React Native 信息输出:
...
/Users/me/Library/Developer/Xcode/DerivedData/MyApp-somehash/Build/Intermediates.noindex/ArchiveIntermediates/appId/BuildProductsPath/Release-iphoneos/libRNGestureHandler.a -lPods-appId -lRNFirebase -lAppCenterReactNative -lAppCenterReactNativeAnalytics -lAppCenterReactNativeCrashes -Xlinker -dependency_info -Xlinker
...
clang: error: no such file or directory: '/Users/me/Library/Developer/Xcode/DerivedData/MyApp-somehash/Build/Intermediates.noindex/ArchiveIntermediates/appId/BuildProductsPath/Release-iphoneos/libRNGestureHandler.a'
Command Ld failed with a nonzero exit code
重现步骤
安装(如果我没记错的话)Microsoft 的 App Center 工具(尽管它可能是 React Navigation)后,我注意到我的存档构建开始失败并出现上述未分类错误。奇怪的是,当我 运行 在模拟器或我的 iPhone.
上构建时,它似乎工作正常
到目前为止我尝试过的:
- 删除并重新添加 RNGH 库,然后手动将 link 添加到构建阶段。此尝试没有改变错误。回复:https://github.com/kmagiera/react-native-gesture-handler/issues/735
- 完全删除 link 到 RNGH。由于依赖于此的库,此尝试强制出现新错误。回复:https://github.com/kmagiera/react-native-gesture-handler/issues/614
- 尝试了这里的一些方法。 Build fails with "Command failed with a nonzero exit code"
- 尝试将应用程序的版本更改为 9.0 以匹配 RNGH 的版本。结果没有改变。 https://github.com/react-native-community/react-native-push-notification-ios/issues/17
- 尝试使用 Xcode 的旧版生成器
- 清除所有 React Native 缓存
- 删除并重新安装 node_modules
- 删除并重新安装 pods
- 正在清理构建文件夹
- 正在重启Xcode
- 正在重启我的笔记本电脑
来自 package.json 的完整环境信息:
"dependencies": {
"@react-native-community/blur": "^3.3.1",
"appcenter": "2.0.0",
"appcenter-analytics": "2.0.0",
"appcenter-crashes": "2.0.0",
"expo-keep-awake": "^5.0.1",
"expo-localization": "^5.0.0",
"i18n-js": "^3.2.2",
"moment": "^2.24.0",
"react": "16.8.3",
"react-native": "0.59.3",
"react-native-code-push": "^5.6.0",
"react-native-config": "^0.11.7",
"react-native-elements": "^1.1.0",
"react-native-firebase": "^5.4.3",
"react-native-gesture-handler": "^1.3.0",
"react-native-maps": "^0.24.2",
"react-native-paper": "^2.16.0",
"react-native-snap-carousel": "^3.8.0",
"react-native-unimodules": "^0.4.0",
"react-native-vector-icons": "^6.5.0",
"react-navigation": "^3.11.0",
"react-redux": "^7.0.3",
"redux": "^4.0.1",
"redux-persist": "^5.10.0",
"redux-starter-kit": "^0.5.1",
"redux-thunk": "^2.3.0"
}
存档时 xcode 10.2 和 xcode 10.3 有问题,我们遇到了同样的问题
我向 Apple 支持部门提交了工单,但没有得到任何回复。
尝试使用 xcode 10 存档。1.It 将解决您的问题。
我们仍然不知道确切的根本原因,但我们最好的猜测是这个问题可能与我们使用 RN 0.59.3 以及我们的一些软件包为 RN 0.60 做准备有关。
无论如何,我们确实让构建工作了!
我们的解决方法是使用 RN 0.60 开始一个全新的项目,然后一个一个地安装每个必需的包。虽然这种方法很耗时,但看起来运行良好,因为我们已经能够重新创建应用程序并成功构建。
p.s。一旦我们让 react-native-gesture-handler 与 react-native-maps 和 react-navigation 一起工作,我们就添加了 App Center。这样,在 CI 中观察我们的构建并确保一切保持稳定变得更加容易。
怪异的链接相关错误
当我尝试在 Xcode 10.3
中构建存档时环境信息
- RN: 0.59.3
- Xcode: 10.3
- React 本机手势处理程序 (RNGH):1.4.1
- 反应导航:3.11.0
React Native 信息输出:
...
/Users/me/Library/Developer/Xcode/DerivedData/MyApp-somehash/Build/Intermediates.noindex/ArchiveIntermediates/appId/BuildProductsPath/Release-iphoneos/libRNGestureHandler.a -lPods-appId -lRNFirebase -lAppCenterReactNative -lAppCenterReactNativeAnalytics -lAppCenterReactNativeCrashes -Xlinker -dependency_info -Xlinker
...
clang: error: no such file or directory: '/Users/me/Library/Developer/Xcode/DerivedData/MyApp-somehash/Build/Intermediates.noindex/ArchiveIntermediates/appId/BuildProductsPath/Release-iphoneos/libRNGestureHandler.a'
Command Ld failed with a nonzero exit code
重现步骤
安装(如果我没记错的话)Microsoft 的 App Center 工具(尽管它可能是 React Navigation)后,我注意到我的存档构建开始失败并出现上述未分类错误。奇怪的是,当我 运行 在模拟器或我的 iPhone.
上构建时,它似乎工作正常到目前为止我尝试过的:
- 删除并重新添加 RNGH 库,然后手动将 link 添加到构建阶段。此尝试没有改变错误。回复:https://github.com/kmagiera/react-native-gesture-handler/issues/735
- 完全删除 link 到 RNGH。由于依赖于此的库,此尝试强制出现新错误。回复:https://github.com/kmagiera/react-native-gesture-handler/issues/614
- 尝试了这里的一些方法。 Build fails with "Command failed with a nonzero exit code"
- 尝试将应用程序的版本更改为 9.0 以匹配 RNGH 的版本。结果没有改变。 https://github.com/react-native-community/react-native-push-notification-ios/issues/17
- 尝试使用 Xcode 的旧版生成器
- 清除所有 React Native 缓存
- 删除并重新安装 node_modules
- 删除并重新安装 pods
- 正在清理构建文件夹
- 正在重启Xcode
- 正在重启我的笔记本电脑
来自 package.json 的完整环境信息:
"dependencies": {
"@react-native-community/blur": "^3.3.1",
"appcenter": "2.0.0",
"appcenter-analytics": "2.0.0",
"appcenter-crashes": "2.0.0",
"expo-keep-awake": "^5.0.1",
"expo-localization": "^5.0.0",
"i18n-js": "^3.2.2",
"moment": "^2.24.0",
"react": "16.8.3",
"react-native": "0.59.3",
"react-native-code-push": "^5.6.0",
"react-native-config": "^0.11.7",
"react-native-elements": "^1.1.0",
"react-native-firebase": "^5.4.3",
"react-native-gesture-handler": "^1.3.0",
"react-native-maps": "^0.24.2",
"react-native-paper": "^2.16.0",
"react-native-snap-carousel": "^3.8.0",
"react-native-unimodules": "^0.4.0",
"react-native-vector-icons": "^6.5.0",
"react-navigation": "^3.11.0",
"react-redux": "^7.0.3",
"redux": "^4.0.1",
"redux-persist": "^5.10.0",
"redux-starter-kit": "^0.5.1",
"redux-thunk": "^2.3.0"
}
存档时 xcode 10.2 和 xcode 10.3 有问题,我们遇到了同样的问题
我向 Apple 支持部门提交了工单,但没有得到任何回复。 尝试使用 xcode 10 存档。1.It 将解决您的问题。
我们仍然不知道确切的根本原因,但我们最好的猜测是这个问题可能与我们使用 RN 0.59.3 以及我们的一些软件包为 RN 0.60 做准备有关。
无论如何,我们确实让构建工作了!
我们的解决方法是使用 RN 0.60 开始一个全新的项目,然后一个一个地安装每个必需的包。虽然这种方法很耗时,但看起来运行良好,因为我们已经能够重新创建应用程序并成功构建。
p.s。一旦我们让 react-native-gesture-handler 与 react-native-maps 和 react-navigation 一起工作,我们就添加了 App Center。这样,在 CI 中观察我们的构建并确保一切保持稳定变得更加容易。