iOS 15: Cannot launch enterprise signed application

I installed the iOS 15 beta to test our apps that are distributed internally and signed with enterprise distribution (no app store)

“My App Name” Needs to be updated

The developer of this app needs to update it to work with this version of iOS.

Only mention I was able to find is: https://developer.apple.com/forums/thread/681792?answerId=678622022

Which seems to indicate that the app must be built and signed with the beta version of XCode. I would guess that the Expo build servers are not using this yet. That said it’s a fairly vague message, so this is just a guess.

Expo go still seems to work fine.

1 Like

We will add xcode 13 image when version GM will become available, in a meantime, you can also try

Using the latest build server image resolved the issue for me. The documentation wasn’t very clear to me, so here’s how you do it:

Add this line to your eas.json file:

{
  "builds": {
    "ios": {
      "release": {
        "workflow": "generic"
      },
      "preview": {
        "distribution": "internal",
        "workflow": "generic",
        "image": "latest" // Add this line
      }
    }
  }
}

Can you clarify what part was not clear, so we can improve the docs?

Was the problem with finding docs for image field? or did you tried setting image to “macos-big-sur-11.4-xcode-12.5”?

if the second one, then it was correct, image field should accept “macos-big-sur-11.4-xcode-12.5”, but we didn’t release a new cli version that supports this value.

Sure. To be clear, I was able to figure out exactly what I needed to do on my first try using the docs, but I still think there’s room for improvement. Looking at that page you linked to, it says you need set your “image” to “macos-big-sur-11.4-xcode-12.5” or “latest”. The page mentions putting this into your eas.json file, but it doesn’t say where you should put the “image” key in your config file.

Looking at the article on how to configure your eas.json file, the “image” key is referenced, which is good. However, the only example of how to use “image” looks like this:

{
  "workflow": "generic",
  "extends": string,
  "credentialsSource": "local" | "remote", // default: "remote"
  "scheme": string,
  "schemeBuildConfiguration": string,
  "artifactPath": string, // default: "ios/build/App.ipa"
  "releaseChannel": string, // default: "default"
  "distribution": "store" | "internal" | "simulator", // default: "store"
  "enterpriseProvisioning": "adhoc" | "universal",
  "autoIncrement": boolean | "version" | "buildNumber", // default: false
  "image": string, // default: "default"
  "node": string,
  "yarn": string,
  "bundler": string,
  "fastlane": string,
  "cocoapods": string,
  "env": Record<string, string>,
  "cache": {
    "disabled" : boolean, // default: false
    "key": string,
    "cacheDefaultPaths": boolean, // default: true
    "customPaths": string[] // default: []
  }
}

But my eas.json file looked like this:

{
  "builds": {
    "android": {
      "release": {
        "workflow": "generic"
      },
      "preview": {
        "distribution": "internal",
        "workflow": "generic"
      }
    },
    "ios": {
      "release": {
        "workflow": "generic"
      },
      "preview": {
        "distribution": "internal",
        "workflow": "generic"
      }
    }
  }
}

At what level of nesting are you supposed to put the “image” key? I figured it out because I noticed that your example was missing the “builds” key, but did have the “workflow” key at the top-level, so I inferred that the example in the docs was showing a nested object inside of the overall eas.json object. So I guessed (correctly) that I should put the “image” key in the same nesting level as “workflow”.

I think most people would be able to figure out what to do like I did, but my only feedback for the docs would be to use the full eas.json structure in your examples. So I would update the example in your doc to look like this:

{
	"builds": {
		"ios": {
			"BUILD_PROFILE_NAME": {
				"workflow": "generic",
				"extends": string,
				"credentialsSource": "local" | "remote", // default: "remote"
				"scheme": string,
				"schemeBuildConfiguration": string,
				"artifactPath": string, // default: "ios/build/App.ipa"
				"releaseChannel": string, // default: "default"
				"distribution": "store" | "internal" | "simulator", // default: "store"
				"enterpriseProvisioning": "adhoc" | "universal",
				"autoIncrement": boolean | "version" | "buildNumber", // default: false
				"image": string, // default: "default"
				"node": string,
				"yarn": string,
				"bundler": string,
				"fastlane": string,
				"cocoapods": string,
				"env": Record < string,
				string > ,
				"cache": {
					"disabled": boolean, // default: false
					"key": string,
					"cacheDefaultPaths": boolean, // default: true
					"customPaths": string[] // default: []
				}
			}
		}
	}
2 Likes