Raamiz Abbasi
Raamiz Abbasi

Reputation: 321

Expo EAS Build iOS Failed: Attempted to initialize an object with an unknown UUID

I know that a similar question has been asked by a few people on StackOverflow, but they were not using expo to build their project, so the solution of using XCode does not apply to me.

I am trying to build my expo project using the command eas build --profile development --platform ios, and it keeps failing with the error [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.

The relevant solutions proposed by other people such as downgrading to SDK Version 43 do not work for me. I was hoping someone could look at my error trace stack and see what could be the issue. I have attached my package.json, Podfile, environment info, as well as an image of my error.

If someone could please figure this out for me that would be excellent because this has significantly held the development of my app for about a week. I have also added this issue on GitHub, but I didn't get a response and I really need quick help to continue development. Here are the links:

GitHub Link - SDK Version 44

GitHub Link - SDK Version 43

Environment:

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
}

Podfile

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

Build Log:

Upvotes: 1

Views: 3860

Answers (1)

Raamiz Abbasi
Raamiz Abbasi

Reputation: 321

I figured out the answer thanks partially to the help of @brentvatne. The issue was actually not related to the [stderr] at the bottom of the error logs where it says <PBXResourcesBuildPhase UUID=13B07F8E1A680F5B00A75B9A> attempted to initialize an object with an unknown UUID. In fact, the issue was related to the warning, undefined method pre_install for nil:NilClass. If you look at the Podfile, the line $RNMBGL.pre_install(installer) required the $RNMBGL object to exist, but this was provided by the @react-native-mapbox-gl/maps-pre_installer which I had previously installed, but then uninstalled before running the build. Therefore, the error kept popping up saying that the pre_install could not be done, and that was all because the appropriate package for that line in the Podfile was not downloaded at the time of building.

Upvotes: 1

Related Questions