Forum Xamarin.iOS
We are excited to announce that the Xamarin Forums are moving to the new Microsoft Q&A experience. Q&A is the home for technical questions and answers at across all products at Microsoft now including Xamarin!

We encourage you to head over to Microsoft Q&A for .NET for posting new questions and get involved today.

Upon iOS App Store Submission - ERROR ITMS-90733: The binary you uploaded was invalid

As the headline hints I get the following error message, when uploading my ipa file to the App Store

ERROR ITMS-90733: "The binary you uploaded was invalid"

It appears to be a problem specifically for iOS apps with an Apple Watch extension which suits my case

Similar to the Xcode users on the thread https://forums.developer.apple.com/thread/108405, my issue appeared when updating Xcode (and Xamarin) to the version offering emulators for the new Apple Watch S4. My current VS version is 7.6.9

The Xcode users have overcome this issue by changing the architecture settings for the Watch Extension project. I have tried multiple variations of architecture settings, but unfortunately I have not been successful

The other thread mentions choosing the architecture for the watch extension to be "arm64_32 and armv7k". arm64_32 is not an option I can pick, and when I add the architecture settings manually using a text editor I get the error, that it could not parse the architecture settings, when building the ipa file

Anyone got this problem?

Thanks!

Best Answers

  • FullMetalJacobFullMetalJacob Member ✭✭
    Accepted Answer

    Thanks for the pointer ColeX - it helped me out!

    Here is what I did

    1. Open a terminal
    2. Navigate to the watch extension project
    3. Run the commands in the terminal listed below

    /usr/libexec/PlistBuddy -c 'Set :DTPlatformBuild 15T212' Info.plist
    /usr/libexec/PlistBuddy -c 'Set :DTPlatformVersion 4.3' Info.plist
    /usr/libexec/PlistBuddy -c 'Set :DTSDKBuild 15T212' Info.plist
    /usr/libexec/PlistBuddy -c 'Set :DTSDKName watchos4.3' Info.plist
    /usr/libexec/PlistBuddy -c 'Set :DTXcode 0940' Info.plist
    /usr/libexec/PlistBuddy -c 'Set :DTXcodeBuild 9F1027a' Info.plist

    Afterwards I was successful at uploading my app to the App Store :)

    Whats going on?

    This is a workaround

    When the ipa file is uploaded to the App Store it will for projects build using Xcode 10 require the arm64_32 architecture for the extension project. With the commands above we edit the Info.plist file, such that it claims that the project was build using Xcode 9.4

    See https://github.com/xamarin/xamarin-macios/issues/4810 for additional info

Answers

  • KociKoci Member

    Hi, I'm experiencing the same issue.

    VS Version: 7.6.9 (build 22)
    Xamarin.iOS Version: 12.0.0.15

  • ColeXColeX Member, Xamarin Team Xamurai
  • FullMetalJacobFullMetalJacob Member ✭✭
    Accepted Answer

    Thanks for the pointer ColeX - it helped me out!

    Here is what I did

    1. Open a terminal
    2. Navigate to the watch extension project
    3. Run the commands in the terminal listed below

    /usr/libexec/PlistBuddy -c 'Set :DTPlatformBuild 15T212' Info.plist
    /usr/libexec/PlistBuddy -c 'Set :DTPlatformVersion 4.3' Info.plist
    /usr/libexec/PlistBuddy -c 'Set :DTSDKBuild 15T212' Info.plist
    /usr/libexec/PlistBuddy -c 'Set :DTSDKName watchos4.3' Info.plist
    /usr/libexec/PlistBuddy -c 'Set :DTXcode 0940' Info.plist
    /usr/libexec/PlistBuddy -c 'Set :DTXcodeBuild 9F1027a' Info.plist

    Afterwards I was successful at uploading my app to the App Store :)

    Whats going on?

    This is a workaround

    When the ipa file is uploaded to the App Store it will for projects build using Xcode 10 require the arm64_32 architecture for the extension project. With the commands above we edit the Info.plist file, such that it claims that the project was build using Xcode 9.4

    See https://github.com/xamarin/xamarin-macios/issues/4810 for additional info

  • MehdiRouhMehdiRouh USMember ✭✭

    Hi,

    I am experiencing the same issue:
    ERROR ITMS-90733: "The binary you uploaded was invalid"

    I have Visual Studio 2017 on windows 10, Xamarin.Forms Latest stable 3.3.0.912540
    On Mac visual studio for mac is installed (Version 7.6.10, build 27), XCode Version 10.0 (10A255)

    My App has also apple watch extension, and that's i think what get rejected.

    Response of Apple to the problem:

    App Store Connect only accepts 64bit binaries compiled for armv7k architectures (for watchOS bundles).
    Most likely you’re uploading the 64 + 32bit portion which is causing the rejection. ITMS 90733 is a legit error in this case.
    Unfortunately we don’t support these 3rd party tools so can’t even suggest a workaround that sits outside our Xcode toolchain.:(
    Hope they update your support soon because that’s a requirement across all our platforms now.

    In my WatchOSExtension under "Supported Architectures" i can only select "ARMv7k"

    Is there any workaround for xamarin on visual studio 2017 on windows?

    Thanks!

  • MehdiRouhMehdiRouh USMember ✭✭

    Thank you JohnWilkings for your Workaround :smile::+1:

    Can you please tell me where exactly i have to execute the above commands?

    in my .../Library/Caches/Xamarin/mtbs/builds folder on mac
    appname.IOS
    appname.IOS.OnWatch.WatchOSApp
    appname.OnWatch.WatchOSExtension

    Inside the appname.OnWatch.WatchOSExtension there is a Info.plist file but when i execute for example

    /usr/libexec/PlistBuddy -c 'Set :DTPlatformBuild 15T212' Info.plist

    inside that folder, then i get the error:

    Set: Entry, ":DTXcodeBuild", Does not Exist

  • MehdiRouhMehdiRouh USMember ✭✭

    sorry i mean:
    Set: Entry, ":DTPlatformBuild", Does not Exist

    and so on for each command

  • JohnWilkinsJohnWilkins GBMember ✭✭

    Run the build as normal on Visual Studio. During the "pause" go to the build host and navigate to the build folder for the Extension project.

    It will depend on your project names, but will be something like this:

    ~/Library/Caches/Xamarin/mtbs/builds///bin/iPhone/Release/.appex

    The last folder is a package. Once you've entered that folder there's a plist file. That's the one that the above commands modify. Simply paste into your terminal.

    Assuming you're quick enough, the VS build will then complete and build and sign the IPA for you.

  • MehdiRouhMehdiRouh USMember ✭✭

    Hi JohnWilkins

    thanks you for the information :smile:

    unfortunatly i don't have any .appex folder at any time in my:

    ~/Library/Caches/Xamarin/mtbs/builds/....OnWatch.WatchOSExtension/..../bin/iPhone/Release/.appex

    i changed the pause time also to 120 sec.

    <MSBuild.Community.Tasks.Sleep Milliseconds="120000" />

    i keep watching in that folder with:
    sudo ls -la
    and with
    sudo cd .appex

    but at no time that folder appears :-(

  • JohnWilkinsJohnWilkins GBMember ✭✭

    The .appex package is named after your project. find it with ls *.appex

  • MehdiRouhMehdiRouh USMember ✭✭
    edited October 2018

    Perfect thank you :+1:

    i thought that was a hidden folder, it is why i couldn't find it

    i found now the folder (...IOS.OnWatch.WatchOSExtension.appex) and executed the commands inside that folder,
    Info.plist got modified successfully, i checked it,
    and i could also upload my ipa with the "application loader"

  • JohnWilkinsJohnWilkins GBMember ✭✭

    Glad it worked for you.

Sign In or Register to comment.