expo / eas-cli

Fastest way to build, submit, and update iOS and Android apps
https://docs.expo.dev/eas/
MIT License
718 stars 77 forks source link

SDK 49 - eas build ios failed on "run fastlane" #2109

Open johnfau opened 8 months ago

johnfau commented 8 months ago

Build/Submit details page URL

https://expo.dev/accounts/johnfa/projects/carles-connect/builds/5f04dc92-7dbc-42c8-9f9f-bb1dac0c7b2c#run-fastlane

Summary

We started a new project with expo 49. It errors with the following message :

Build failed: The "Run fastlane" step failed with an unknown error. Refer to "Xcode Logs" below for additional, more detailed logs.

We don't see any errors in Xcode logs, I put the end of the log on the Error ouput below.

Another project on the same expo account, same computer, same ios credentials (except for provisionning) on expo 47 still builds correctly.

We don't have any Mac device to test a local build which make the issue extra-difficult to understand. We tried suggestion from https://github.com/expo/eas-cli/issues/2024 and https://github.com/expo/expo/issues/25105 but the error remained.

Managed or bare?

managed

Environment

expo-env-info 1.0.5 environment info: System: OS: Windows 10 10.0.19045 Binaries: Node: 18.6.0 - C:\Program Files\nodejs\node.EXE npm: 8.13.2 - C:\Program Files\nodejs\npm.CMD npmPackages: @expo/webpack-config: ^19.0.0 => 19.0.0 expo: ~49.0.11 => 49.0.16 react: 18.2.0 => 18.2.0 react-native: 0.72.6 => 0.72.6 react-native-web: ~0.19.6 => 0.19.9 Expo Workflow: managed

✔ Check Expo config for common issues ✔ Check package.json for common issues ✔ Check dependencies for packages that should not be installed directly ✔ Check for common project setup issues ✔ Check npm/ yarn versions ✔ Check Expo config (app.json/ app.config.js) schema ✔ Check that native modules do not use incompatible support packages ✔ Check for legacy global CLI installed locally ✔ Check that packages match versions required by installed Expo SDK ✔ Check that native modules use compatible support package versions for installed Expo SDK

Didn't find any issues with the project!

Error output

Build failed: The "Run fastlane" step failed with an unknown error. Refer to "Xcode Logs" below for additional, more detailed logs.

    /usr/bin/codesign --force --sign REDACTED --entitlements /Users/expo/Library/Developer/Xcode/DerivedData/AppNameRedacted-REDACTED/Build/Intermediates.noindex/ArchiveIntermediates/AppNameRedacted/IntermediateBuildFilesPath/AppNameRedacted.build/Release-iphoneos/AppNameRedacted.build/AppNameRedacted.app.xcent --generate-entitlement-der /Users/expo/Library/Developer/Xcode/DerivedData/AppNameRedacted-REDACTED/Build/Intermediates.noindex/ArchiveIntermediates/AppNameRedacted/InstallationBuildProductsLocation/Applications/AppNameRedacted.app

RegisterExecutionPolicyException /Users/expo/Library/Developer/Xcode/DerivedData/AppNameRedacted-REDACTED/Build/Intermediates.noindex/ArchiveIntermediates/AppNameRedacted/InstallationBuildProductsLocation/Applications/AppNameRedacted.app (in target 'AppNameRedacted' from project 'AppNameRedacted')

    cd /Users/expo/workingdir/build/ios

    builtin-RegisterExecutionPolicyException /Users/expo/Library/Developer/Xcode/DerivedData/AppNameRedacted-REDACTED/Build/Intermediates.noindex/ArchiveIntermediates/AppNameRedacted/InstallationBuildProductsLocation/Applications/AppNameRedacted.app

Validate /Users/expo/Library/Developer/Xcode/DerivedData/AppNameRedacted-REDACTED/Build/Intermediates.noindex/ArchiveIntermediates/AppNameRedacted/InstallationBuildProductsLocation/Applications/AppNameRedacted.app (in target 'AppNameRedacted' from project 'AppNameRedacted')

    cd /Users/expo/workingdir/build/ios

    builtin-validationUtility /Users/expo/Library/Developer/Xcode/DerivedData/AppNameRedacted-REDACTED/Build/Intermediates.noindex/ArchiveIntermediates/AppNameRedacted/InstallationBuildProductsLocation/Applications/AppNameRedacted.app

Touch /Users/expo/Library/Developer/Xcode/DerivedData/AppNameRedacted-REDACTED/Build/Intermediates.noindex/ArchiveIntermediates/AppNameRedacted/InstallationBuildProductsLocation/Applications/AppNameRedacted.app (in target 'AppNameRedacted' from project 'AppNameRedacted')

    cd /Users/expo/workingdir/build/ios

    /usr/bin/touch -c /Users/expo/Library/Developer/Xcode/DerivedData/AppNameRedacted-REDACTED/Build/Intermediates.noindex/ArchiveIntermediates/AppNameRedacted/InstallationBuildProductsLocation/Applications/AppNameRedacted.app

Reproducible demo or steps to reproduce from a blank project

run eas build --platform ios from my expo account on a project with expo ~49.0.11

{
  "name": "app",
  "version": "1.0.0",
  "main": "index.js",
  "scripts": {
    "start": "expo start",
    "android": "expo run:android",
    "ios": "expo run:ios",
    "web": "expo start --web"
  },
  "dependencies": {
    "@expo/webpack-config": "^19.0.0",
    "@react-native-async-storage/async-storage": "1.18.2",
    "axios": "^1.5.0",
    "expo": "~49.0.11",
    "expo-asset": "~8.10.1",
    "expo-constants": "~14.4.2",
    "expo-dev-client": "~2.4.11",
    "expo-file-system": "~15.4.4",
    "expo-font": "~11.4.0",
    "expo-intent-launcher": "~10.7.0",
    "expo-linear-gradient": "~12.3.0",
    "expo-linking": "~5.0.2",
    "expo-media-library": "~15.4.1",
    "expo-router": "^2.0.0",
    "expo-splash-screen": "~0.20.5",
    "expo-status-bar": "~1.6.0",
    "nativewind": "^2.0.11",
    "react": "18.2.0",
    "react-native": "0.72.6",
    "react-native-gesture-handler": "~2.12.0",
    "react-native-safe-area-context": "4.6.3",
    "react-native-screens": "~3.22.0",
    "react-native-svg": "13.9.0",
    "react-native-toast-message": "^2.1.7",
    "react-native-view-shot": "3.7.0",
    "react-native-web": "~0.19.6",
    "react-native-webview": "13.2.2",
    "expo-network": "~5.4.0"
  },
  "devDependencies": {
    "@babel/core": "^7.20.0",
    "@expo/vector-icons": "^13.0.0",
    "@uidotdev/usehooks": "^2.4.0",
    "js-base64": "^3.7.5",
    "lodash-es": "^4.17.21",
    "react-native-anchor-point": "^1.0.6",
    "react-native-element-dropdown": "^2.10.0",
    "react-native-linear-gradient": "^2.8.3",
    "react-native-outside-press": "^1.2.1",
    "react-native-snap-carousel": "^4.0.0-beta.6",
    "tailwindcss": "3.3.2"
  },
  "private": true
}
iam-rohid commented 8 months ago

I'm also having the same issue

jake-stewart commented 8 months ago

I am facing the same issue

LaKrue commented 8 months ago

Not sure if it's related, but I had errors like that. Building without associatedDomains in app.json for iOS linking worked, but failed with it. As hinted in https://github.com/expo/eas-cli/issues/1687 I ran my build command without --non-interactive and it worked. Should note that I also deleted kind of everything app related from my apple dev account to have it regenerated.

jwNorwood commented 8 months ago

I am running into the same issue, works on Expo 47, iOS build fails on 48/49 but android build works.

johnfau commented 8 months ago

I don't use associatedDomains. I always run build without --non-interactive. Dev builds are working fine for both android and ios. I can use the app on the ad-hoc provisioned iphone device. Only the production build for iOS is failing eas build --platform ios

› Generating debug CConnect » CConnect .app.dSYM

› Executing CConnect » Bundle React Native code and images

    Bundler cache is empty, rebuilding (this may take a minute)

› Executing CConnect » [CP] Copy Pods Resources

› Executing CConnect » [CP] Embed Pods Frameworks

› Signing   CConnect » CConnect .app

› Creating  CConnect » CConnect .app

    Run script build phase '[CP-User] Generate app.config for prebuilt Constants.manifest' will be run during every build because it does not specify any outputs. To address this warning, either add output dependencies to the script phase, or configure it to run in every build by unchecking "Based on dependency analysis" in the script phase. (in target 'EXConstants' from project 'Pods')

▸ ** ARCHIVE FAILED **

2023-11-08 02:06:10.948 xcodebuild[4670:13722] DVTCoreDeviceEnabledState: DVTCoreDeviceEnabledState_Disabled set via user default (DVTEnableCoreDevice=disabled)

** ARCHIVE FAILED **

Exit status: 65
sascha93 commented 8 months ago

I am running into the same issue, works on Expo 47, iOS build fails on 48/49 but android build works.

same here

szdziedzic commented 7 months ago

Hi,

This issue seems super weird and I feel like it can be related to some issues with your credentials. Did you verify that all of your certificates are valid on the Apple Developer Portal?

johnfau commented 7 months ago

Hi,

This issue seems super weird and I feel like it can be related to some issues with your credentials. Did you verify that all of your certificates are valid on the Apple Developer Portal?

Yes, I even recreated fresh certificates, profiles and identifiers as suggested in https://github.com/expo/eas-cli/issues/2024 . I didnt delete them as we are using them on another project but if it is necessary we can try

szdziedzic commented 7 months ago

Can you try to run a simulator build? If the issue itself is related to credentials, which sim builds don't use, it should work well.

johnfau commented 7 months ago

Can you try to run a simulator build? If the issue itself is related to credentials, which sim builds don't use, it should work well.

Yes simulator build is working well.

I deleted all certificates and profiles from apple developer account. I couldn't delete Identifiers from apple developer account as I get a message "The App ID 'XXX' appears to be in use by the App Store".

I ran again eas build ios , new certificate and profiles have been created but the build failed with the same error.

szdziedzic commented 7 months ago

Are you using local credentials or credentials managed by EAS?

johnfau commented 7 months ago

We are using the default method which I think is managed by EAS. I can see all my certificates and keys on my expo.dev account.

BogdanJWK commented 7 months ago

Any update? I'm going through the same thing, no solution so far. Edit: In the meantime I decided to use eas remote build which works fine, but would still like to build locally.

Christian-Mugumwa commented 7 months ago

Going through the same issue here too

andrewminton commented 7 months ago

Having same issue on SDK 46,47,49. Can't deploy at all here. Frustrating error that wasn't here 2 months ago. Any updates/workarounds?

humbroll commented 7 months ago

Got the same issue. Has anyone figured out solution ?

Christian-Mugumwa commented 7 months ago

@humbroll @andrewminton So I fixed this by going into app.json and changing "bundleIdentifier" to something unique. Initially just changed it to a random number (try make it as random as possible). Then later changed it to com.myname.app and it worked.

I think the issue resides in that it has to be unique for some reason. I hope this works for you.

johnfau commented 7 months ago

@humbroll @andrewminton So I fixed this by going into app.json and changing "bundleIdentifier" to something unique. Initially just changed it to a random number (try make it as random as possible). Then later changed it to com.myname.app and it worked.

I think the issue resides in that it has to be unique for some reason. I hope this works for you.

I did it, generated new distribution certificate and provisionning profile but still got the exact same error.

dattx1 commented 6 months ago

--local --non-interactive it's worked for me, thank @LaKrue saved my day

johnfau commented 6 months ago

--non-intereactive doesnt help.

We finally got a Mac (the very thing we wanted to avoid using eas...) and tried to build on it we the same result. Here is the full log of a failed build from project creation to error. We used the basic project template, expo project creation and new certificate and profile creation. It is basically :

npx create-expo-app frbeprojo001
cd frbeprojo001
npm run ios
> iOs bundling complete and project opens correctly in iPhone emulator
npx eas-cli@latest build:configure
npx eas-cli@latest build --platform ios --local
> RUN_FASTLANE error, Archive failed  

eas-cli-build-error.pdf

I have no idea what other test I could do from there. I guess the error in related to something in our apple developer account but buying a new account for test purpose seems a bit much.

dattx1 commented 6 months ago

eas build -p ios -e sit --clear-cache --local --non-interactive This is my build command, after add the --non-interactive agr i can build normaly

johnfau commented 6 months ago

No change

BogdanJWK commented 6 months ago

I eventually switched to build my app from Xcode. I had some credentials/provision issues and recreated all of them in order to make it work. EAS fails with a different error now, regarding my ad-hoc credentials, but for the moment I consider building exclusively from xcode.

ahmed-khlifi commented 6 months ago

Any updates about this issue ? ( Am on SDK 48 )

dattx1 commented 6 months ago

Clean Xcode project build (production => clean build folder)

Close Xcode

Open terminal

Run cd ~/Library/Developer/Xcode/DerivedData && open .

Delete all item in folder

Open terminal and cd to project

yarn && npx pod-install ios

Open Xcode

Wait to Xcode index project

After Xcode finish index project => Start build (command + B)

After build finish run eas build -p ios -e sit --clear-cache --local --non-interactive

Please wait the xcode finish all step

Just-Moh-it commented 6 months ago

Having the same issue... tried everything in the thread but still failing at fastlane. If it helps, cloud builds and simulator builds work.

johnfau commented 5 months ago

I was able to publish on Mac using Xcode and @dattx1 steps. Build on eas still errors even when I try to use the provisioning and certificate created by Xcode. Having to use a MAC to publish is a big step back for us :(

weetos commented 5 months ago

Hello friends, I also was struggling with this issue past days! Drived me crazy! Because at best the xcode build logs were misleading me... and very much like all of you Expo x Fastlane was throwing nothing more than error 65. So what I did is to clean all my project and rebuild it, step by step, to find what was breaking my bundling. Here are my findings:

  1. I am using @react-navigation/stack for my navigation between screens. For whatever reason the following options {{ headerShown: false, presentation: 'card', animationTypeForReplace: 'pop', animation: 'slide_from_right' }} caused the bundling to fail on iOS. I figured that it wasn't too happy with the props animation. So I removed it.

  2. In my StyleSheet I had a duplicated key.

Now it's bundling like a charm ;)

But seriously the error log management is horrible!

I hope it will help some of you out there...

johnfau commented 5 months ago

Hello, I think this error is not the one I am facing. As I mentioned in a previous post the build is failing even with an empty application created with "npx create-expo-app" (no react-navigation nor stylesheet), that is why I can't go back to when the app stopped building as it didn't build since the beginning.

noctivityinc commented 5 months ago

Hello friends, I also was struggling with this issue past days! Drived me crazy! Because at best the xcode build logs were misleading me... and very much like all of you Expo x Fastlane was throwing nothing more than error 65. So what I did is to clean all my project and rebuild it, step by step, to find what was breaking my bundling. Here are my findings:

  1. I am using @react-navigation/stack for my navigation between screens. For whatever reason the following options {{ headerShown: false, presentation: 'card', animationTypeForReplace: 'pop', animation: 'slide_from_right' }} caused the bundling to fail on iOS. I figured that it wasn't too happy with the props animation. So I removed it.
  2. In my StyleSheet I had a duplicated key.

Now it's bundling like a charm ;)

But seriously the error log management is horrible!

I hope it will help some of you out there...

@weetos how on earth did you figure that out!? I am trying to remove my animationTypeForReplace now to try to get this to build but super curious how you even knew that was the issue

weetos commented 5 months ago

@noctivityinc a lot of patience! Like I said, I bundled every step of the way my project, from scratch... To locate where it was breaking. By browsing line by line xcode build logs; I couldnt find a thing in there :/ Let me know if on your side, you manage to solve it ;)

noctivityinc commented 5 months ago

@weetos I did solve my issue. Here's a small trick for anyone struggling - DONT try to read the Xcode logs if fastland keeps failing. Just watch the build in the browser as its running Fastlane and at the end, when it fails, it SHOULD show you where it failed. The hours I spent trying to parse the Xcode logs Ill never get back!

bradydowling commented 5 months ago

@noctivityinc can you share what the actual issue and fix was for you?

pfndesign commented 5 months ago

hi, I had the same problem after 5 hours of debugging it was a duplicate object definition in stylesheets. xcode.log : warning: the property "loading" was set multiple times in the object definition. I had no problem with development builds and the expo in Android but the expo in iOS was stuck on loading. I thought it was because of some native modules but it was duplicate objects Now Fastlane is not throwing error

andreibardas commented 5 months ago

tried multiple possible solutions, nothing worked so far

gustavo-fior commented 5 months ago

--local --non-interactive it's worked for me, thank @LaKrue saved my day

THIS MAN IS A GOD AMONG HUMANS.

3 days of this bullshit, thanks a lot man

murat0 commented 5 months ago

Clearing the derived data and letting the script to build it again is precisely what worked for us;

rm -rf ~/Library/Developer/Xcode/DerivedData/*

CapleaIonut-Alexandru commented 5 months ago

I have the same issue, nothing works from here

andreibardas commented 4 months ago

Tried everything here but nothing works. Anyone found a solution for this? I am thinking about starting a new project with the latest expo version and copy pasting every component manually and running builds until I see something that breaks the build.

VadymBezsmertnyi commented 4 months ago

@andreibardas I am facing the same issue

shahidul5 commented 4 months ago

@andreibardas any solution? I'm facing the same issue.

VadymBezsmertnyi commented 4 months ago

@dev-shahidul It helped me:

  1. npx react-native-clean-project

  2. npx expo-doctor

  3. npx expo install --fix

  4. npx expo prebuild --clean Opened Xcode and waited until everything checked out and the first time without warnings.

  5. ran the command from package.json: "ios": "expo run:ios",

EmanuelOcampo commented 4 months ago

@VadymBezsmertnyi it works for me thanks

debashreecbnits commented 3 months ago

@VadymBezsmertnyi you are a savior..thanks

mikeRChambers610 commented 1 month ago

I am getting this issues as well and so far all of the above comment suggestions have not worked for me. The build was working fine on SDK 49 and now not working for me anymore once upgrading to SDK 51. My dev build was perfectly fine in the expo go app.

lalobecerra7 commented 1 month ago

@dev-shahidul It helped me:

  1. npx react-native-clean-project
  2. npx expo-doctor
  3. npx expo install --fix
  4. npx expo prebuild --clean Opened Xcode and waited until everything checked out and the first time without warnings.
  5. ran the command from package.json: "ios": "expo run:ios",

This worked for me, thanks.

nickmaio commented 1 month ago

I am getting this issues as well and so far all of the above comment suggestions have not worked for me. The build was working fine on SDK 49 and now not working for me anymore once upgrading to SDK 51. My dev build was perfectly fine in the expo go app.

Same issue after upgrading to SDK 51.

landorid commented 1 month ago

Set export EAS_LOCAL_BUILD_SKIP_CLEANUP=1 so you can actually read your logs. My issue was with the provision cert, i deleted all the related certificates from the keychain and my build was successful.

johnfau commented 1 month ago

None of previous answers applied to my issue. I updated to 50 and 51 with same result. The absence of meaningful log on the run fastlane step is the real problem here, there are countless issues which can lead to the "archive failed" message and nothing of importance in the Xcode logs.

I finally figured out that my problem was a duplicate key in a js object. It seems like the fastlane build for iOS fail if one object has a duplicate key which make me think it might be a lint error during build.

very simple steps to reproduce:

npx create-expo-app .

edit _layout.tsx with

const bug = {
    error: "",
    test: 3,
    error: 123,
};
npm install
npx expo start 

==> the app runs fine on android and iOS

npx eas-cli@latest build:configure
npx eas-cli@latest build --platform ios

==> build fail remove the bug object from _layout.tsx

npx eas-cli@latest build --platform ios

==> build success

I don't think it is normal to fail a build for a duplicate key, especially without error message. My initial project is not on typescript, only the ESLint "no-dupe-keys" rule raise a warning.

nickmaio commented 1 month ago

None of previous answers applied to my issue. I updated to 50 and 51 with same result. The absence of meaningful log on the run fastlane step is the real problem here, there are countless issues which can lead to the "archive failed" message and nothing of importance in the Xcode logs.

I finally figured out that my problem was a duplicate key in a js object. It seems like the fastlane build for iOS fail if one object has a duplicate key which make me think it might be a lint error during build.

very simple steps to reproduce:

npx create-expo-app .

edit _layout.tsx with

const bug = {
    error: "",
    test: 3,
    error: 123,
};
npm install
npx expo start 

==> the app runs fine on android and iOS

npx eas-cli@latest build:configure
npx eas-cli@latest build --platform ios

==> build fail remove the bug object from _layout.tsx

npx eas-cli@latest build --platform ios

==> build success

I don't think it is normal to fail a build for a duplicate key, especially without error message. My initial project is not on typescript, only the ESLint "no-dupe-keys" rule raise a warning.

Same here, took a few days and 50+ build attempts to locate a breaking object { error: false, error: false } in a project with about a 250K+ lines of code. Horrible experience indeed...