Can't change info.plist uirequireddevicecapabilities key value and upload IPA

paul_macpaul_mac Member ✭✭✭
edited June 13 in Xamarin.iOS
I'm trying to upload the updated IPA via application loader for my xamarin.forms based iOS project. I am facing errors when I upload the IPA. Only when the uirequireddevicecapabilities key is set to a value as given in previous app version (armv7), the IPA gets uploaded. I did so after finding in Apple docs that I can only expand my requirements in new app version, but must not restrict earlier requirements as it may affect earlier users. But shouldnt I have to change it to ARM64 as per latest Apple requirements? Or can I add both armv7 and ARM64 in that device capabilities key in my new info.plist file?

Also, I have a doubt as to what minimum ios version I can support for the 64-bit app requirement. I'm totally confused and don't know the proper way to configure the app. The answers to my following questions can clarify me a lot. Please bear with me and assist. I tried with min os version to be 11.0 and then 9.0 without having armv7 alone in uidevicecapabilities key, both failed. Finally, I uploaded with armv7 and 9.0 which was successful but not visible in app Store connect after waiting for nearly 12 hours. I checked in activity, only the build that was invalid is there (one entry only)

Keeping the latest Apple requirements in view,
Q1: what is the minimum os version / deployment target that can be set (previous version has value of 9.0) now?
Q2: What supported architectures should I configure (previous version has armv7 + ARM64) now?
NOTE: Latest ios apps must be built with iOS SDK 12.1. For this in ios build properties, I have only two options for the SDK version field - Default and 12.2, so I have chosen 12.2

Best Answer

  • ColeXColeX Xamurai
    edited June 13 Accepted Answer

    Q1: what is the minimum os version / deployment target that can be set (previous version has value of 9.0) now?

    It depends on Xcode version , the minimum ios version is 8.0 now ,refer https://developer.apple.com/documentation/xcode_release_notes/xcode_10_2_release_notes?language=objc

    Q2: What supported architectures should I configure (previous version has armv7 + ARM64) now?

    Different architectures for different devices , check the Architecture support.

    ARMv6 (Xamarin.iOS discontinued support for ARMv6 with v8.10)
    iPhone (original), 3G
    iPod 1st, 2nd generation
    ARMv7
    iPhone 3GS, 4, 4S
    iPad 1, 2, 3, Mini
    iPod 3, 4, 5th generation
    ARMv7s
    iPhone 5
    iPhone 5c
    iPad 4
    ARM64 (Xamarin.iOS started supporting ARM64 in v8.6)
    iPhone 5s
    iPhone SE
    iPhone 6, 6 Plus
    iPhone 6s, 6s Plus
    iPhone 7, 7 Plus
    iPhone 8, 8 Plus
    iPhone X
    iPad Air
    iPad Air 2
    iPad Mini 2, 3, 4
    iPad Pro (all)

    Generally speaking , we choose ARMv7s + ARM64

Answers

  • ColeXColeX Member, Xamarin Team Xamurai
    edited June 13 Accepted Answer

    Q1: what is the minimum os version / deployment target that can be set (previous version has value of 9.0) now?

    It depends on Xcode version , the minimum ios version is 8.0 now ,refer https://developer.apple.com/documentation/xcode_release_notes/xcode_10_2_release_notes?language=objc

    Q2: What supported architectures should I configure (previous version has armv7 + ARM64) now?

    Different architectures for different devices , check the Architecture support.

    ARMv6 (Xamarin.iOS discontinued support for ARMv6 with v8.10)
    iPhone (original), 3G
    iPod 1st, 2nd generation
    ARMv7
    iPhone 3GS, 4, 4S
    iPad 1, 2, 3, Mini
    iPod 3, 4, 5th generation
    ARMv7s
    iPhone 5
    iPhone 5c
    iPad 4
    ARM64 (Xamarin.iOS started supporting ARM64 in v8.6)
    iPhone 5s
    iPhone SE
    iPhone 6, 6 Plus
    iPhone 6s, 6s Plus
    iPhone 7, 7 Plus
    iPhone 8, 8 Plus
    iPhone X
    iPad Air
    iPad Air 2
    iPad Mini 2, 3, 4
    iPad Pro (all)

    Generally speaking , we choose ARMv7s + ARM64

  • paul_macpaul_mac Member ✭✭✭
    edited June 13

    @ColeX, thank you very much for you reply.

    So, I'll choose ARMv7s + ARM64 for the Supported Architectures in iOS project properties -> Build. But should I have to include ARMv7s in UIRequiredDeviceCapabilities key found in info.plist for including ARMv7s in supported architectures? Please let me know what should I input in the UIRequiredDeviceCapabilities key value for architetures armv7 or armv7s or arm64 or any combination. As I said in my question, my previous app version has armv7 value like this

    <key>UIRequiredDeviceCapabilities</key>
        <array>
            <string>armv7</string>
        </array>
    

    It seems apple will not allow to change any values in info.plist if it restricts the device requirements given in the info.list file of previous app version. But it only allows to expand device requirements, which means I can add a new device requirement like camera under the UIRequiredDeviceCapabilities key, but not remove existing requirements I guess.

    Can MinOS version can be set independant of the supported architectures and architecture value given under UIRequiredDeviceCapabilities key..?

    Kindly clarify. Thanks

  • paul_macpaul_mac Member ✭✭✭

    I saw in some websites that they have given arm64 in the UIRequiredDeviceCapabilities key like this

    <key>UIRequiredDeviceCapabilities</key>
        <array>
            <string>arm64</string>
        </array>
    

    that's why I am asking whether I can have armv7 value only or not? Also, I could not upload without giving armv7 in UIRequiredDeviceCapabilities key. Else I am getting the error as displayed in the screenshot attached with my question

  • paul_macpaul_mac Member ✭✭✭

    @paul_mac said:
    .....
    Can MinOS version can be set independant of the supported architectures and architecture value given under UIRequiredDeviceCapabilities key..?

    Kindly clarify. Thanks

    I can see that the minosversion key and the supported architectures are dependant. Because when I set the minosversion value from 11.0 to 9.0, I can see armv7, armv7s along with arm64. I am now clarified about this. Kindly let me know the answer for the below question I asked earlier:

    Please let me know what should I input in the UIRequiredDeviceCapabilities key value for architetures armv7 or armv7s or arm64 or any combination. As I said in my question, my previous app version has armv7 value like this

    I saw in some websites that they have given arm64 in the UIRequiredDeviceCapabilities key like this

    UIRequiredDeviceCapabilities

    arm64

    that's why I am asking whether I can have armv7 value only or not? Also, I could not upload without giving armv7 in UIRequiredDeviceCapabilities key. Else I am getting the error as displayed in the screenshot attached with my question

  • paul_macpaul_mac Member ✭✭✭

    @ColeX , any idea..?

Sign In or Register to comment.