hermes: Invalid MinimumOSVersion. Apps that only support 64-bit devices must specify a deployment target of 8.0 or later. MinimumOSVersion in '[My App].app/Frameworks/hermes.framework' is ''."

Bug Description

When using Hermes on iOS (react-native 0.64-rc0) you cannot publish the archived application to the AppStore/Testflight, because it doesn’t specifiy a minimum OS version but requires 64-bit architectures.

Hermes version: 7.0.1 React Native version (if any): 0.64-rc0 Android version (if any): / Platform (most likely one of arm64-v8a, armeabi-v7a, x86, x86_64): iOS, arm64

Steps To Reproduce

  1. Create react-native 0.64-rc0 project
  2. Enable hermes in Podfile
  3. Clean everything
  4. Archive app (I’ve used the fastlane beta command for this)
  5. Upload archive to AppStore/Testflight (fastlane beta did that for me)

Logs

Fastlane logs
[11:13:59]: Going to upload updated app to App Store Connect
[11:13:59]: This might take a few minutes. Please don't interrupt the script.
[11:14:46]: [Transporter Error Output]: ERROR ITMS-90530: "Invalid MinimumOSVersion. Apps that only support 64-bit devices must specify a deployment target of 8.0 or later. MinimumOSVersion in '[My App].app/Frameworks/hermes.framework' is ''."
[11:14:46]: [Transporter Error Output]: ERROR ITMS-90360: "Missing Info.plist value. A value for the key 'MinimumOSVersion' in bundle [My App].app/Frameworks/hermes.framework is required."
[11:14:46]: [Transporter Error Output]: ERROR ITMS-90208: "Invalid Bundle. The bundle [My App].app/Frameworks/hermes.framework does not support the minimum OS Version specified in the Info.plist."
[11:14:46]: Transporter transfer failed.
[11:14:46]: 
[11:14:46]: ERROR ITMS-90530: "Invalid MinimumOSVersion. Apps that only support 64-bit devices must specify a deployment target of 8.0 or later. MinimumOSVersion in '[My App].app/Frameworks/hermes.framework' is ''."
ERROR ITMS-90360: "Missing Info.plist value. A value for the key 'MinimumOSVersion' in bundle [My App].app/Frameworks/hermes.framework is required."
ERROR ITMS-90208: "Invalid Bundle. The bundle [My App].app/Frameworks/hermes.framework does not support the minimum OS Version specified in the Info.plist."
[11:14:46]: [iTMSTransporter] [2020-11-24 11:14:46 CET] <main> ERROR: ERROR ITMS-90360: "Missing Info.plist value. A value for the key 'MinimumOSVersion' in bundle [My App].app/Frameworks/hermes.framework is required."

[11:14:46]: [iTMSTransporter] [2020-11-24 11:14:46 CET] <main> ERROR: ERROR ITMS-90208: "Invalid Bundle. The bundle [My App].app/Frameworks/hermes.framework does not support the minimum OS Version specified in the Info.plist."

[11:14:46]: [iTMSTransporter] [2020-11-24 11:14:46 CET] <main> DBG-X: The error code is: 1102

[11:14:46]: [iTMSTransporter] [2020-11-24 11:14:46 CET] <main>  INFO: Done performing authentication.

[11:14:46]: [iTMSTransporter] 

[11:14:46]: [iTMSTransporter] 

[11:14:46]: [iTMSTransporter] 

[11:14:46]: [iTMSTransporter] Package Summary:

[11:14:46]: [iTMSTransporter]  

[11:14:46]: [iTMSTransporter] 1 package(s) were not uploaded because they had problems:

[11:14:46]: [iTMSTransporter] 	/var/folders/3r/gxn72hgj7vl59jrshs0wxh600000gn/T/d20201124-44941-z1gelj/1535370501.itmsp - Error Messages:

[11:14:46]: [iTMSTransporter] 		ERROR ITMS-90530: "Invalid MinimumOSVersion. Apps that only support 64-bit devices must specify a deployment target of 8.0 or later. MinimumOSVersion in '[My App].app/Frameworks/hermes.framework' is ''."

[11:14:46]: [iTMSTransporter] 		ERROR ITMS-90360: "Missing Info.plist value. A value for the key 'MinimumOSVersion' in bundle [My App].app/Frameworks/hermes.framework is required."

[11:14:46]: [iTMSTransporter] 		ERROR ITMS-90208: "Invalid Bundle. The bundle [My App].app/Frameworks/hermes.framework does not support the minimum OS Version specified in the Info.plist."

[11:14:46]: [iTMSTransporter] [2020-11-24 11:14:46 CET] <main> DBG-X: Returning 1

[11:14:46]: iTunes Transporter output above ^
[11:14:46]: ERROR ITMS-90530: "Invalid MinimumOSVersion. Apps that only support 64-bit devices must specify a deployment target of 8.0 or later. MinimumOSVersion in '[My App].app/Frameworks/hermes.framework' is ''."
ERROR ITMS-90360: "Missing Info.plist value. A value for the key 'MinimumOSVersion' in bundle [My App].app/Frameworks/hermes.framework is required."
ERROR ITMS-90208: "Invalid Bundle. The bundle [My App].app/Frameworks/hermes.framework does not support the minimum OS Version specified in the Info.plist."
Return status of iTunes Transporter was 1: ERROR ITMS-90530: "Invalid MinimumOSVersion. Apps that only support 64-bit devices must specify a deployment target of 8.0 or later. MinimumOSVersion in '[My App].app/Frameworks/hermes.framework' is \nERROR ITMS-90208: "Invalid Bundle. The bundle [My App].app/Frameworks/hermes.framework does not support the minimum OS Version specified in the Info.plist."
The call to the iTMSTransporter completed with a non-zero exit status: 1. This indicates a failure.

According to Apple’s official documentation, specifying MinimumOSVersion in Info.plist is not recommended, so I’m not sure what the right solution for this would be. I’ve checked my Xcode project settings, and noticed that hermes-engine has a deployment target of iOS 10, which means it theoretically has a MinimumOSVersion set to 10. 🤔

I assume a quick and dirty fix would be setting the MinimumOSVersion in Info.plist, although I’m not sure how I can try this out for myself.

About this issue

  • Original URL
  • State: closed
  • Created 4 years ago
  • Comments: 18 (17 by maintainers)

Commits related to this issue

Most upvoted comments

Ok, so, to avoid people in the future having to do this, I think it’s fine if we add the MinimumOSVersion key to the Info.plist file of the iOS artefact and set it to the deployment target that we built it for (which is iOS 10 at the time of writing). It’s not something that needs to block the RN 0.64 release imo, though, as this can be set by the user as per @janicduplessis’ example. We might also want to set LSMinimumSystemVersion for the macOS artefact.

Using this script in xcode build phases to fix it automatically for now if that can help someone before a proper fix is available.

set -e

## Delete entry if it already exists
/usr/libexec/PlistBuddy -c "Delete :MinimumOSVersion" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework/Info.plist" || true

/usr/libexec/PlistBuddy -c "Add :MinimumOSVersion string 10.0" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework/Info.plist"

The fix onto 0.7 branch (https://github.com/facebook/hermes/pull/428) has been merged so RN 0.64 should be fine now. Assigned to myself to remind me merging https://github.com/facebook/hermes/pull/425 to the trunk to close this.