Closed topherjamesknoll closed 1 week ago
I believe that your issue is that you put GOOGLE_SERVICES_FILE_IOS
in the env
section of your build profile in eas.json
. Using this env var in your current setup lets expo config know where to look for the Google services .plist
file, and I believe it's not under /path/to/your/project/directory/GOOGLE_SERVICES_FILE_IOS
, right?
What you need to do to make it work is:
eas.json
googleServicesFile: process.env.GOOGLE_SERVICES_FILE_IOS ?? '/your/local/path/to/the/file'
This way:
process.env.GOOGLE_SERVICES_FILE_IOS
will be used on cloud builds'/your/local/path/to/the/file'
will be used for local development and will be available when resolving config when using EAS CLI.@szdziedzic Ah, thanks for the reply! Yeah, I was going to update this just now. I added the ternaries as you suggested and removed them from eas.json and it actually builds now:
googleServicesFile: process.env.GOOGLE_SERVICES_FILE_IOS ?? "./GoogleService-Info-dev.plist"
I'll open an issue with react-native-firebase just in case but I still think there's something wonky with the iOS file. I can log in with an Android in production to my app just fine but I get "auth/internal-error" when trying to login on an iOS device.
Yes, I have a local copy of the .plist file with dev credentials, and my prod credentials are uploaded to Expo.dev.
Build/Submit details page URL
No response
Summary
I'm trying to use the files I generated from Firebase for react-native-firebase. I have one .json file and one .plist file. I'm trying to store them in Expo Secrets so I don't have to commit them to my repo. I've successfully uploaded and used my .json file using these steps: https://docs.expo.dev/build-reference/variables/#how-to-upload-a-secret-file-and-use-it-in-my-app-config. I ran
eas build --platform android
and all was well in the resulting build. But, when I try to do the same thing uploading a .plist file and runeas build --platform ios
I get the following error:I have the following under ios in my app.config.js file:
googleServicesFile: process.env.GOOGLE_SERVICES_FILE_IOS
I also have, and I don't know if I need to, but it works, under production.env in my eas.json file:
"GOOGLE_SERVICES_FILE_IOS": "GOOGLE_SERVICES_FILE_IOS",
Managed or bare?
Managed
Environment
expo-env-info 1.2.1 environment info: System: OS: macOS 15.0.1 Shell: 5.9 - /bin/zsh Binaries: Node: 20.12.2 - ~/.nvm/versions/node/v20.12.2/bin/node Yarn: 1.22.22 - ~/.nvm/versions/node/v20.12.2/bin/yarn npm: 10.8.2 - ~/.nvm/versions/node/v20.12.2/bin/npm Watchman: 2024.04.29.00 - /opt/homebrew/bin/watchman Managers: CocoaPods: 1.15.2 - /opt/homebrew/bin/pod SDKs: iOS SDK: Platforms: DriverKit 24.1, iOS 18.1, macOS 15.1, tvOS 18.1, visionOS 2.1, watchOS 11.1 IDEs: Android Studio: 2024.2 AI-242.23339.11.2421.12550806 Xcode: 16.1/16B40 - /usr/bin/xcodebuild npmPackages: expo: ~51.0.39 => 51.0.39 expo-router: ~3.5.24 => 3.5.24 react: 18.2.0 => 18.2.0 react-native: 0.74.5 => 0.74.5 npmGlobalPackages: eas-cli: 13.1.1 Expo Workflow: managed
✔ Check package.json for common issues ✔ Check Expo config for common issues ✔ Check native tooling versions ✔ Check if the project meets version requirements for submission to app stores ✔ Check for common project setup issues ✔ Check dependencies for packages that should not be installed directly ✔ Check for app config fields that may not be synced in a non-CNG project ✔ Check for issues with Metro config ✔ Check npm/ yarn versions ✔ Check Expo config (app.json/ app.config.js) schema ✔ Check that packages match versions required by installed Expo SDK ✔ Check for legacy global CLI installed locally ✔ Check that native modules do not use incompatible support packages ✖ Check that native modules use compatible support package versions for installed Expo SDK
Detailed check results:
Expected package @expo/config-plugins@~8.0.0 Found invalid: @expo/config-plugins@7.8.4 (for more info, run: npm why @expo/config-plugins) Expected package metro@~0.80.8 Found invalid: metro@0.80.6 (for more info, run: npm why metro) Expected package metro-resolver@~0.80.8 Found invalid: metro-resolver@0.80.6 (for more info, run: npm why metro-resolver) Expected package metro-config@~0.80.8 Found invalid: metro-config@0.80.6 (for more info, run: npm why metro-config)
Error output
Failed to read the app config from the project using "npx expo config" command: npx expo config --json --type introspect exited with non-zero code: 1. Falling back to the version of "@expo/config" shipped with the EAS CLI. [ios.infoPlist]: withIosInfoPlistBaseMod: ENOENT: no such file or directory, open '/Users/topher/Projects/bessa/GOOGLE_SERVICES_FILE_IOS'
Reproducible demo or steps to reproduce from a blank project
I uploaded my .plist file to Expo Secrets under the key, GOOGLE_SERVICES_FILE_IOS I added GOOGLE_SERVICES_FILE_IOS to eas.json I switched my app config from app.json to app.config.js and exported the JSON I used process.env.GOOGLE_SERVICES_FILE_IOS to insert my file under ios.googleServicesFile I ran eas build and selected ios, then I received the error.