expo / eas-cli

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

Unable to Build Expo App with Family Controls Enabled #2715

Open jbrumwell opened 13 hours ago

jbrumwell commented 13 hours ago

Build/Submit details page URL

https://expo.dev/accounts/focused/projects/focused/builds/599cae7a-ced3-4369-9391-0c7b21b624d2

Summary

When trying to build an Expo app with Family Controls enabled, the build process fails with the following Xcode error:

Provisioning profile "*[expo] com.****.focusid AdHoc ..." doesn't include the com.apple.developer.family-controls.development entitlement. Profile qualification is using entitlement definitions that may be out of date. Connect to network to update.

Despite configuring entitlements in app.config.js as follows:

ios: {
  entitlements: {
    'com.apple.security.application-groups': [
      '...',
    ],
    'com.apple.developer.family-controls': true,
    'com.apple.developer.family-controls.development': true,
  },
 }

The entitlement is active in the Apple Developer Portal for the app identifier, as shown in the attached image. Family Controls have been approved by Apple. All certificates and provisioning profiles have been deleted and regenerated, but the error persists.

image

Managed or bare?

Managed

Environment

expo-env-info 1.2.1 environment info: System: OS: Linux 6.9 Pop!_OS 22.04 LTS Shell: 5.1.16 - /bin/bash Binaries: Node: 20.12.2 - /run/user/1000/fnm_multishells/5962_1731793463600/bin/node Yarn: 1.22.22 - /run/user/1000/fnm_multishells/5962_1731793463600/bin/yarn npm: 10.5.0 - /run/user/1000/fnm_multishells/5962_1731793463600/bin/npm Watchman: 4.9.0 - /usr/bin/watchman npmPackages: @expo/metro-config: ~0.18.11 => 0.18.11 @expo/webpack-config: ^19.0.0 => 19.0.1 expo: ~51.0.38 => 51.0.38 expo-router: ~3.5.23 => 3.5.23 react: 18.2.0 => 18.2.0 react-dom: 18.2.0 => 18.2.0 react-native: 0.74.5 => 0.74.5 react-native-web: ~0.19.6 => 0.19.10 npmGlobalPackages: eas-cli: 13.3.0 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 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 for common project setup issues ✔ 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.9.1 (for more info, run: npm why @expo/config-plugins) Advice: Upgrade dependencies that are using the invalid package versions.

Used by react-native-ble

Error output

No response

Reproducible demo or steps to reproduce from a blank project

  1. Create a new Expo project with expo init.

  2. Add the following configuration to app.json or app.config.js:

    ios: {
    entitlements: {
    'com.apple.security.application-groups': [
      '...',
    ],
    'com.apple.developer.family-controls': true,
    'com.apple.developer.family-controls.development': true,
    },
    }
  3. Submit the Family Controls request via the Apple Developer Portal and get it approved.

  4. Ensure the Family Controls entitlement is visible under your app identifier and active in the Apple Developer Portal.

  5. Generate provisioning profiles with the entitlement and link them to the app.

  6. Use eas build --platform ios to build the app.

  7. Observe the build failure with the following error in Xcode logs:

Provisioning profile "*[expo] ..." doesn't include the com.apple.developer.family-controls.development entitlement.

Please let me know if you'd like any additional information!