Expo EAS Build iOS 失败:尝试初始化具有未知 UUID 的对象
Expo EAS Build iOS Failed: Attempted to initialize an object with an unknown UUID
我知道 Whosebug 上有几个人问过类似的问题,但他们没有使用 expo 来构建他们的项目,所以使用 XCode 的解决方案不适用于我。
我正在尝试使用命令 eas build --profile development --platform ios
构建我的 expo 项目,但它一直失败并显示错误 [stderr] [!] <PBXResourcesBuildPhase UUID=13B07F8E1A680F5B00A75B9A>attempted to initialize an object with an unknown UUID.5360B39C71704D31869D9F73for attribute:files. This can be the result of a merge and the unknown UUID is being discarded.
其他人提出的降级到SDK版本43等相关解决方案对我不起作用。我希望有人可以查看我的错误跟踪堆栈,看看可能是什么问题。我附上了我的 package.json、Podfile、环境信息,以及我的错误图像。
如果有人能帮我解决这个问题,那就太好了,因为这已经使我的应用程序开发持续了大约一个星期。我还在 GitHub 上添加了这个问题,但我没有得到回应,我真的需要快速帮助才能继续开发。以下是链接:
环境:
System:
OS: macOS 12.2.1
Shell: 5.8 - /bin/zsh
Binaries:
Node: 16.3.0 - /opt/homebrew/bin/node
Yarn: 1.22.10 - /opt/homebrew/bin/yarn
npm: 8.3.0 - /opt/homebrew/bin/npm
Watchman: 2022.01.31.00 - /opt/homebrew/bin/watchman
Managers:
CocoaPods: 1.11.3 - /usr/local/bin/pod
SDKs:
iOS SDK:
Platforms: DriverKit 21.4, iOS 15.4, macOS 12.3, tvOS 15.4, watchOS 8.5
IDEs:
Xcode: 13.3/13E113 - /usr/bin/xcodebuild
npmPackages:
expo: ^44.0.0 => 44.0.6
react: 17.0.1 => 17.0.1
react-dom: 17.0.1 => 17.0.1
react-native: 0.64.3 => 0.64.3
react-native-web: 0.17.1 => 0.17.1
npmGlobalPackages:
eas-cli: 0.47.0
expo-cli: 5.3.0
Expo Workflow: bare
package.json
{
"name": "yourhud",
"version": "1.0.0",
"scripts": {
"start": "expo start --dev-client",
"android": "expo run:android",
"ios": "expo run:ios",
"web": "expo start --web",
"eject": "expo eject"
},
"dependencies": {
"@config-plugins/react-native-ble-plx": "^0.0.2",
"@expo-google-fonts/be-vietnam": "^0.2.0",
"@expo-google-fonts/dev": "^0.2.0",
"@expo-google-fonts/heebo": "^0.2.2",
"@expo-google-fonts/hind-siliguri": "^0.2.2",
"@expo-google-fonts/inter": "^0.2.2",
"@expo-google-fonts/josefin-sans": "^0.2.2",
"@expo-google-fonts/lato": "^0.2.2",
"@expo-google-fonts/michroma": "^0.2.0",
"@expo-google-fonts/montserrat": "^0.2.0",
"@expo-google-fonts/nunito": "^0.2.0",
"@expo-google-fonts/open-sans": "^0.2.2",
"@expo-google-fonts/orbitron": "^0.2.2",
"@expo-google-fonts/oswald": "^0.2.2",
"@expo-google-fonts/overpass": "^0.2.2",
"@expo-google-fonts/poppins": "^0.2.2",
"@expo-google-fonts/prompt": "^0.2.2",
"@expo-google-fonts/quicksand": "^0.2.0",
"@expo-google-fonts/raleway": "^0.2.0",
"@expo-google-fonts/rubik": "^0.2.0",
"@expo-google-fonts/varela-round": "^0.2.2",
"@expo-google-fonts/work-sans": "^0.2.2",
"@mapbox/polyline": "^1.1.1",
"@miblanchard/react-native-slider": "^2.1.0",
"@react-native-async-storage/async-storage": "~1.15.0",
"@react-native-community/geolocation": "^2.0.2",
"@react-native-picker/picker": "2.2.1",
"@react-navigation/drawer": "^6.1.8",
"@react-navigation/material-top-tabs": "^6.0.6",
"@react-navigation/native": "^6.0.6",
"@react-navigation/native-stack": "^6.2.5",
"@types/haversine": "^1.1.5",
"@types/mapbox__polyline": "^1.0.2",
"@types/react-native-base64": "^0.2.0",
"@types/react-native-linear-gradient": "^2.4.0",
"@types/react-native-snap-carousel": "^3.8.5",
"@types/react-native-version-check": "^3.4.4",
"axios": "^0.24.0",
"dotenv": "^10.0.0",
"eas-cli": "0.49.0",
"expo": "^44.0.0",
"expo-app-loading": "~1.3.0",
"expo-av": "~10.2.0",
"expo-brightness": "~10.1.0",
"expo-dev-client": "~0.8.4",
"expo-device": "~4.1.0",
"expo-font": "~10.0.4",
"expo-in-app-purchases": "~12.1.0",
"expo-linear-gradient": "~11.0.3",
"expo-linking": "~3.0.0",
"expo-location": "~14.0.1",
"expo-notifications": "~0.14.0",
"expo-permissions": "~13.1.0",
"expo-sensors": "~11.1.0",
"expo-speech": "~10.1.0",
"expo-splash-screen": "~0.14.1",
"expo-status-bar": "~1.2.0",
"expo-task-manager": "~10.1.0",
"haversine": "^1.1.1",
"luxon": "^2.2.0",
"react": "17.0.1",
"react-dom": "17.0.1",
"react-native": "0.64.3",
"react-native-anchor-point": "^1.0.6",
"react-native-base64": "^0.2.1",
"react-native-ble-plx": "^2.0.3",
"react-native-bouncy-checkbox": "^2.1.9",
"react-native-color-matrix-image-filters": "^5.2.14",
"react-native-dotenv": "^3.3.1",
"react-native-dropdown-picker": "^5.3.0",
"react-native-email": "^1.1.0",
"react-native-gesture-handler": "~2.1.0",
"react-native-google-places-autocomplete": "^2.4.1",
"react-native-html-parser": "^0.1.0",
"react-native-numeric-input": "^1.9.0",
"react-native-obd2": "^0.0.2",
"react-native-pager-view": "5.4.9",
"react-native-picker-select": "^8.0.4",
"react-native-progress": "^5.0.0",
"react-native-reanimated": "~2.3.1",
"react-native-render-html": "^6.3.4",
"react-native-safe-area-context": "3.3.2",
"react-native-screens": "~3.10.1",
"react-native-shake": "^5.1.1",
"react-native-snap-carousel": "^3.9.1",
"react-native-speedometer": "^1.0.5",
"react-native-svg": "12.1.1",
"react-native-swiper": "^1.6.0",
"react-native-tab-view": "^3.1.1",
"react-native-track-player": "^2.1.3",
"react-native-triangle": "^0.0.9",
"react-native-tts": "^4.1.0",
"react-native-version-check": "^3.4.2",
"react-native-web": "0.17.1",
"shortid": "^2.2.16",
"use-places-autocomplete": "^1.11.0"
},
"devDependencies": {
"@babel/core": "^7.12.9",
"@types/jest": "^27.4.0",
"@types/luxon": "^2.0.9",
"@types/react": "~17.0.21",
"@types/react-native": "~0.64.12",
"@types/react-test-renderer": "^17.0.1",
"@types/shortid": "^0.0.29",
"typescript": "~4.3.5"
},
"private": true
}
播客文件
require File.join(File.dirname(`node --print "require.resolve('expo/package.json')"`), "scripts/autolinking")
require File.join(File.dirname(`node --print "require.resolve('react-native/package.json')"`), "scripts/react_native_pods")
require File.join(File.dirname(`node --print "require.resolve('@react-native-community/cli-platform-ios/package.json')"`), "native_modules")
platform :ios, '12.0'
require 'json'
podfile_properties = JSON.parse(File.read('./Podfile.properties.json')) rescue {}
target 'YourHUD' do
use_expo_modules!
config = use_native_modules!
pod 'expo-dev-launcher', path: '../node_modules/expo-dev-launcher', :configurations => :debug
pod 'expo-dev-menu', path: '../node_modules/expo-dev-menu', :configurations => :debug
# @generated begin pre_installer - expo prebuild (DO NOT MODIFY) sync-c8812095000d6054b846ce74840f0ffb540c2757
pre_install do |installer|
# @generated begin @react-native-mapbox-gl/maps-pre_installer - expo prebuild (DO NOT MODIFY) sync-5a7ed0a20d5aff2d61639bc5bb4fd5551233d57c
$RNMBGL.pre_install(installer)
# @generated end @react-native-mapbox-gl/maps-pre_installer
end
# @generated end pre_installer
use_react_native!(
:path => config[:reactNativePath],
:hermes_enabled => podfile_properties['expo.jsEngine'] == 'hermes'
)
# Uncomment to opt-in to using Flipper
#
# if !ENV['CI']
# use_flipper!('Flipper' => '0.75.1', 'Flipper-Folly' => '2.5.3', 'Flipper-RSocket' => '1.3.1')
# end
post_install do |installer|
react_native_post_install(installer)
# Workaround `Cycle inside FBReactNativeSpec` error for react-native 0.64
# Reference: https://github.com/software-mansion/react-native-screens/issues/842#issuecomment-812543933
installer.pods_project.targets.each do |target|
if (target.name&.eql?('FBReactNativeSpec'))
target.build_phases.each do |build_phase|
if (build_phase.respond_to?(:name) && build_phase.name.eql?('[CP-User] Generate Specs'))
target.build_phases.move(build_phase, 0)
end
end
end
end
end
post_integrate do |installer|
begin
expo_patch_react_imports!(installer)
rescue => e
Pod::UI.warn e
end
end
end
构建日志:
部分归功于@brentvatne 的帮助,我找到了答案。该问题实际上与错误日志底部的 [stderr]
无关,其中显示 <PBXResourcesBuildPhase UUID=13B07F8E1A680F5B00A75B9A> attempted to initialize an object with an unknown UUID.
事实上,该问题与警告 undefined method pre_install for nil:NilClass
有关。如果您查看 Podfile,行 $RNMBGL.pre_install(installer)
需要 $RNMBGL
对象存在,但这是由我之前安装的 @react-native-mapbox-gl/maps-pre_installer
提供的,但在 [=19] 之前卸载了=] 构建。因此,错误不断弹出说 pre_install 无法完成,这都是因为在构建时没有下载 Podfile 中该行的相应包。
我知道 Whosebug 上有几个人问过类似的问题,但他们没有使用 expo 来构建他们的项目,所以使用 XCode 的解决方案不适用于我。
我正在尝试使用命令 eas build --profile development --platform ios
构建我的 expo 项目,但它一直失败并显示错误 [stderr] [!] <PBXResourcesBuildPhase UUID=13B07F8E1A680F5B00A75B9A>attempted to initialize an object with an unknown UUID.5360B39C71704D31869D9F73for attribute:files. This can be the result of a merge and the unknown UUID is being discarded.
其他人提出的降级到SDK版本43等相关解决方案对我不起作用。我希望有人可以查看我的错误跟踪堆栈,看看可能是什么问题。我附上了我的 package.json、Podfile、环境信息,以及我的错误图像。
如果有人能帮我解决这个问题,那就太好了,因为这已经使我的应用程序开发持续了大约一个星期。我还在 GitHub 上添加了这个问题,但我没有得到回应,我真的需要快速帮助才能继续开发。以下是链接:
环境:
System:
OS: macOS 12.2.1
Shell: 5.8 - /bin/zsh
Binaries:
Node: 16.3.0 - /opt/homebrew/bin/node
Yarn: 1.22.10 - /opt/homebrew/bin/yarn
npm: 8.3.0 - /opt/homebrew/bin/npm
Watchman: 2022.01.31.00 - /opt/homebrew/bin/watchman
Managers:
CocoaPods: 1.11.3 - /usr/local/bin/pod
SDKs:
iOS SDK:
Platforms: DriverKit 21.4, iOS 15.4, macOS 12.3, tvOS 15.4, watchOS 8.5
IDEs:
Xcode: 13.3/13E113 - /usr/bin/xcodebuild
npmPackages:
expo: ^44.0.0 => 44.0.6
react: 17.0.1 => 17.0.1
react-dom: 17.0.1 => 17.0.1
react-native: 0.64.3 => 0.64.3
react-native-web: 0.17.1 => 0.17.1
npmGlobalPackages:
eas-cli: 0.47.0
expo-cli: 5.3.0
Expo Workflow: bare
package.json
{
"name": "yourhud",
"version": "1.0.0",
"scripts": {
"start": "expo start --dev-client",
"android": "expo run:android",
"ios": "expo run:ios",
"web": "expo start --web",
"eject": "expo eject"
},
"dependencies": {
"@config-plugins/react-native-ble-plx": "^0.0.2",
"@expo-google-fonts/be-vietnam": "^0.2.0",
"@expo-google-fonts/dev": "^0.2.0",
"@expo-google-fonts/heebo": "^0.2.2",
"@expo-google-fonts/hind-siliguri": "^0.2.2",
"@expo-google-fonts/inter": "^0.2.2",
"@expo-google-fonts/josefin-sans": "^0.2.2",
"@expo-google-fonts/lato": "^0.2.2",
"@expo-google-fonts/michroma": "^0.2.0",
"@expo-google-fonts/montserrat": "^0.2.0",
"@expo-google-fonts/nunito": "^0.2.0",
"@expo-google-fonts/open-sans": "^0.2.2",
"@expo-google-fonts/orbitron": "^0.2.2",
"@expo-google-fonts/oswald": "^0.2.2",
"@expo-google-fonts/overpass": "^0.2.2",
"@expo-google-fonts/poppins": "^0.2.2",
"@expo-google-fonts/prompt": "^0.2.2",
"@expo-google-fonts/quicksand": "^0.2.0",
"@expo-google-fonts/raleway": "^0.2.0",
"@expo-google-fonts/rubik": "^0.2.0",
"@expo-google-fonts/varela-round": "^0.2.2",
"@expo-google-fonts/work-sans": "^0.2.2",
"@mapbox/polyline": "^1.1.1",
"@miblanchard/react-native-slider": "^2.1.0",
"@react-native-async-storage/async-storage": "~1.15.0",
"@react-native-community/geolocation": "^2.0.2",
"@react-native-picker/picker": "2.2.1",
"@react-navigation/drawer": "^6.1.8",
"@react-navigation/material-top-tabs": "^6.0.6",
"@react-navigation/native": "^6.0.6",
"@react-navigation/native-stack": "^6.2.5",
"@types/haversine": "^1.1.5",
"@types/mapbox__polyline": "^1.0.2",
"@types/react-native-base64": "^0.2.0",
"@types/react-native-linear-gradient": "^2.4.0",
"@types/react-native-snap-carousel": "^3.8.5",
"@types/react-native-version-check": "^3.4.4",
"axios": "^0.24.0",
"dotenv": "^10.0.0",
"eas-cli": "0.49.0",
"expo": "^44.0.0",
"expo-app-loading": "~1.3.0",
"expo-av": "~10.2.0",
"expo-brightness": "~10.1.0",
"expo-dev-client": "~0.8.4",
"expo-device": "~4.1.0",
"expo-font": "~10.0.4",
"expo-in-app-purchases": "~12.1.0",
"expo-linear-gradient": "~11.0.3",
"expo-linking": "~3.0.0",
"expo-location": "~14.0.1",
"expo-notifications": "~0.14.0",
"expo-permissions": "~13.1.0",
"expo-sensors": "~11.1.0",
"expo-speech": "~10.1.0",
"expo-splash-screen": "~0.14.1",
"expo-status-bar": "~1.2.0",
"expo-task-manager": "~10.1.0",
"haversine": "^1.1.1",
"luxon": "^2.2.0",
"react": "17.0.1",
"react-dom": "17.0.1",
"react-native": "0.64.3",
"react-native-anchor-point": "^1.0.6",
"react-native-base64": "^0.2.1",
"react-native-ble-plx": "^2.0.3",
"react-native-bouncy-checkbox": "^2.1.9",
"react-native-color-matrix-image-filters": "^5.2.14",
"react-native-dotenv": "^3.3.1",
"react-native-dropdown-picker": "^5.3.0",
"react-native-email": "^1.1.0",
"react-native-gesture-handler": "~2.1.0",
"react-native-google-places-autocomplete": "^2.4.1",
"react-native-html-parser": "^0.1.0",
"react-native-numeric-input": "^1.9.0",
"react-native-obd2": "^0.0.2",
"react-native-pager-view": "5.4.9",
"react-native-picker-select": "^8.0.4",
"react-native-progress": "^5.0.0",
"react-native-reanimated": "~2.3.1",
"react-native-render-html": "^6.3.4",
"react-native-safe-area-context": "3.3.2",
"react-native-screens": "~3.10.1",
"react-native-shake": "^5.1.1",
"react-native-snap-carousel": "^3.9.1",
"react-native-speedometer": "^1.0.5",
"react-native-svg": "12.1.1",
"react-native-swiper": "^1.6.0",
"react-native-tab-view": "^3.1.1",
"react-native-track-player": "^2.1.3",
"react-native-triangle": "^0.0.9",
"react-native-tts": "^4.1.0",
"react-native-version-check": "^3.4.2",
"react-native-web": "0.17.1",
"shortid": "^2.2.16",
"use-places-autocomplete": "^1.11.0"
},
"devDependencies": {
"@babel/core": "^7.12.9",
"@types/jest": "^27.4.0",
"@types/luxon": "^2.0.9",
"@types/react": "~17.0.21",
"@types/react-native": "~0.64.12",
"@types/react-test-renderer": "^17.0.1",
"@types/shortid": "^0.0.29",
"typescript": "~4.3.5"
},
"private": true
}
播客文件
require File.join(File.dirname(`node --print "require.resolve('expo/package.json')"`), "scripts/autolinking")
require File.join(File.dirname(`node --print "require.resolve('react-native/package.json')"`), "scripts/react_native_pods")
require File.join(File.dirname(`node --print "require.resolve('@react-native-community/cli-platform-ios/package.json')"`), "native_modules")
platform :ios, '12.0'
require 'json'
podfile_properties = JSON.parse(File.read('./Podfile.properties.json')) rescue {}
target 'YourHUD' do
use_expo_modules!
config = use_native_modules!
pod 'expo-dev-launcher', path: '../node_modules/expo-dev-launcher', :configurations => :debug
pod 'expo-dev-menu', path: '../node_modules/expo-dev-menu', :configurations => :debug
# @generated begin pre_installer - expo prebuild (DO NOT MODIFY) sync-c8812095000d6054b846ce74840f0ffb540c2757
pre_install do |installer|
# @generated begin @react-native-mapbox-gl/maps-pre_installer - expo prebuild (DO NOT MODIFY) sync-5a7ed0a20d5aff2d61639bc5bb4fd5551233d57c
$RNMBGL.pre_install(installer)
# @generated end @react-native-mapbox-gl/maps-pre_installer
end
# @generated end pre_installer
use_react_native!(
:path => config[:reactNativePath],
:hermes_enabled => podfile_properties['expo.jsEngine'] == 'hermes'
)
# Uncomment to opt-in to using Flipper
#
# if !ENV['CI']
# use_flipper!('Flipper' => '0.75.1', 'Flipper-Folly' => '2.5.3', 'Flipper-RSocket' => '1.3.1')
# end
post_install do |installer|
react_native_post_install(installer)
# Workaround `Cycle inside FBReactNativeSpec` error for react-native 0.64
# Reference: https://github.com/software-mansion/react-native-screens/issues/842#issuecomment-812543933
installer.pods_project.targets.each do |target|
if (target.name&.eql?('FBReactNativeSpec'))
target.build_phases.each do |build_phase|
if (build_phase.respond_to?(:name) && build_phase.name.eql?('[CP-User] Generate Specs'))
target.build_phases.move(build_phase, 0)
end
end
end
end
end
post_integrate do |installer|
begin
expo_patch_react_imports!(installer)
rescue => e
Pod::UI.warn e
end
end
end
构建日志:
部分归功于@brentvatne 的帮助,我找到了答案。该问题实际上与错误日志底部的 [stderr]
无关,其中显示 <PBXResourcesBuildPhase UUID=13B07F8E1A680F5B00A75B9A> attempted to initialize an object with an unknown UUID.
事实上,该问题与警告 undefined method pre_install for nil:NilClass
有关。如果您查看 Podfile,行 $RNMBGL.pre_install(installer)
需要 $RNMBGL
对象存在,但这是由我之前安装的 @react-native-mapbox-gl/maps-pre_installer
提供的,但在 [=19] 之前卸载了=] 构建。因此,错误不断弹出说 pre_install 无法完成,这都是因为在构建时没有下载 Podfile 中该行的相应包。