In the project settings window, under Platforms, iOS… There used to be a place to select which version you wanted for distribution and shipping. You could either choose to use armv7, armv7s, arm64, a mix, or all of the above for each heading. Now in 4.17 that build section is very much simplified. I am going to say because of everything needing to be arm64 on iOS.
Here’s the rub…
If that is the case and we are only packaging the arm64 slice, Application Loader won’t send it to the App Store or TestFlight unless the info.plist has the following…
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>arm64</string>
<string>metal</string>
</array>
Not a problem… I can add that in the ‘Additional plist Data’ section. That will indeed add that info to the end of the info.plist file when it gets autogenerated. But why? Why isn’t it just generating that by default now that we don’t even have the option of selecting arm7 or arm7s. See, it keeps the default…
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
<string>metal</string>
</array>
Like I said, it will add the arm64 code that I put in the Additional plist Data section, but it does not overwrite the default, it just appends to the end. Seems like it should just make that the default.
I am assuming that my workaround is working, as I did just upload to TestFlight and got a notification that the current build is ready to test.
Is this a bug? Should that be defaulting to autogenerate an info.plist with the arm64 in there? Please, correct me if I am missing something.
As a side note, those of you that are getting the -
ERROR ITMS-90502: “Invalid Bundle. Apps that only contain the arm64 slice must also have ‘arm64’ in the list of UIRequiredDeviceCapabilities in Info.plist.”
- you will need to add the above arm64 section to the Additional plist Data section of the project settings… Under Platforms, iOS…