Building standalone locally with `expo/public-tools`

Basically, because of an issue with push notifications, I’m following the guide here to implement a fix that was pushed but not yet released as a part of an SDK release. My app is not detached, and has been published in the app store so I am generally familiar with the build process.

I am in way over my head with this and currently very stuck.

Steps I’ve taken:

  • git clone
  • it failed to clone the submodules so I manually cloned expo’s fork of react-native
  • got into stack overflow hell trying to fix issues with the pod Folly
  • removed all previous expo versions from the release in folders ./versioned-react-native as well as commenting out all their requirements in the Podfile
  • exited stack overflow hell
  • applied fixes seen here
  • attempted to run gulp ios-shell-app --action build --type archive --configuration Release

And it fails with the following error:

xcodebuild is running. Logging errors only. To see full output, use --verbose 1...

The following build commands failed:
        Ld /Users/derek/projects/expo-fix/shellAppBase-archive/Build/Intermediates.noindex/ArchiveIntermediates/ExpoKitApp/IntermediateBuildFilesPath/ normal armv7
(1 failure)
[20:57:13] 'ios-shell-app' errored after 3.62 min
[20:57:13] Error: Process exited with non-zero code: 65
    at ChildProcess.child.on (/Users/derek/projects/expo-fix/tools-public/node_modules/@expo/spawn-async/build/spawnAsync.js:39:21)
    at emitTwo (events.js:126:13)
    at ChildProcess.emit (events.js:214:7)
    at maybeClose (internal/child_process.js:925:16)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:209:5)

I have no idea where to start - I feel like I did a fair amount of messing around and there are a lot of threads to pull at.

P.S. expo is the shit, thank god I haven’t had to deal with this kind of stuff until I wanted to do something really crafty

Hey, Derek!

When it comes to cloning the submodules, next time I would recommend running git submodule update --init, which takes care of both initializing any missing submodules and updating them to required commits. :slightly_smiling_face:

You don’t need to remove previous SDK versions from versioned-react-native (in fact it may cause more problems). There is another way to strip old SDKs from the archive—run the command with --shellAppSdkVersion UNVERSIONED param. This will ensure that both the Podfile (package.json for native iOS dependencies) and the project are configured well for a single SDK app (and that’s what we’re trying to build here).

What happens if you run:?

gulp ios-shell-app --action build --type archive --configuration Release --shellAppSdkVersion UNVERSIONED

What if you tried adding --verbose 1 to the xcodebuild printed just above ARCHIVE FAILED section and running it manually?

Hey, thanks for the response!

When it comes to cloning the submodules…

I think the submodules issue was because I wasn’t cloning them over https, and my public key doesn’t have permission to clone it, so I did it over https and it worked fine.

You don’t need to remove previous SDK versions from versioned-react-native (in fact it may cause more problems).

Doing that was the only way I was able to fix the pod issue, I had a feeling it was going to mess things up.

When I ran it with --verbose 1, this is the result. Here’s the result of building it with xcode, not sure if it helps. Going to re-fork the repo and try to run it with UNVERSIONED without having removed everything I did, I’ll let you know how that goes.

@sjchmiela I ran gulp ios-shell-app --action build --type archive --configuration Release --shellAppSdkVersion UNVERSIONED on release 2.10.1 without the changes in your pull request applied, and it built fine. However, when I make the changes to EXKernel.m and EXUserNotificationManager.m, it fails with the same error.

Edit: I stashed the change to EXKernel.m and only ran it with the changes to EXUserNotificationManager.m and the build completed.

This topic was automatically closed 20 days after the last reply. New replies are no longer allowed.