Update (7. Dec 2018):

The issue seems to be resolved now. There was no software update required, the apps started to install as expected. This is a hint that after all it was a bug on the App Store side.

Although the apps finally install on my watch the bug report I filed (46149424), which was marked as a duplicate of 45856825, does not reflect that the original issue is resolved!





A few days ago Spotify released their first Apple Watch App version. 🎉 Since I’m a big fan of the service I instantly tried to install the app on my Apple Watch Series 4 ⌚️. Long story short, I failed to do so. 😑

I kept trying different solutions to resolve the issue, but nothing changed the situation. The following solutions will all fail, no matter how ofter you’ll try them. Spoiler alert, I have an iPhone 6 Plus 📱!

  • Deleting all apps from the Watch and trying to re-install them
    ⚠️ Warning: If you had Shazam installed before, it will fail to re-install after deletion!
  • Force killing the WatchApp on the iPhone
  • Rebooting both the iPhone and the Apple Watch
  • Unpairing / pairing the watch (with or without restoring from backup)
  • Trying to install while both devices are charging
  • Resetting network settings of the iPhone
  • Doing a factory reset of the iPhone
  • Restoring the iPhone (as a new phone) using the DFU method
  • Installing latest watchOS beta

Bad news, it wasn’t only the Spotify app that did not install on my watch, there are a lot more. To mention some of the apps:

  • AppleStore
  • Shazam
  • Nike+ Run Club
  • Apollo
  • GitHawk
  • etc.

However I discovered that for some reasons the WWDC app will always install successfully.

In frustration of trying literally everything I contacted Apple Support and they kindly provided me guidance with other steps I could try out. We sorted out that it wasn’t my Apple ID that might have had a wrong configuration which would prevent apps from being installed on my watch. 🕵️‍♂️

By the end of the day I also got the chance to pair my watch with an iPhone 7 and check if the apps are going to install there. Guess what, no issue there, everything installed as you would expect. 🤔 By this time I started suspecting that there might be an issue with my iPhone 6 Plus. By the way my iPhone has iOS 12.1 and the Apple Watch Series 4 had watchOS 5.1.1 (before I updated to 5.1.2 beta 1). After all the tests I did, this whole story started to feel like a software bug.

Since I’m an iOS developer, I hooked up my iPhone to my Mac and opened the Console app and tried to install the apps again. The Console app will show a gazillion of logs and it was hard to tell which logs are responsible for the installation of apps from the phone to the watch. However, because I already went that far, I didn’t want to give there. After some digging through the logs I stumbled upon a process called installd. The d at the end stand for daemon, which in short is a program that always runs in the background and handles some specific tasks. Since this process was prefixed with install, it sounded like the right spot to start investigating. In the top right corner of the Console app there is a very powerful filter field where you can query all the logs by complex filter expressions. 🔍

So let’s type installd and hit enter. Note that we don’t have to query specifically by a process here, because we are interested in all logs that contain the installd keyword in any relation. Before starting another attempt of installation it might be a good idea to clear the logs to start from a clear point.

Okay, the app failed to install as it always did, but we now have a bunch of interesting logs to look at. Some of the logs mention the bundle identifier of the app we tried to install. That means we might be on a right way to find something related to our issue. Reaching the end of the obtained logs we finally found something. 🥳

Failed to install app IDENTIFIER (p = N, ui = N) : 
  Error Domain = ACXErrorDomain Code = 17 "
    Got error 17 in install done from remote side (MI error IncorrectArchitecture ;
    Extended 0x0 ; 
    Desc Failed to find matching arch for 32-bit Mach-O input file /private/var/installd/Library/Caches/com.apple.mobile.installd.staging/temp.rwyo0p/extracted/Payload/APP_NAME.app/APP_FILE)
  " 
  UserInfo = {
    SourceFileLine = 591, 
    NSLocalizedDescription = Got error 17 in install done from remote side (MI error IncorrectArchitecture ; Extended 0x0 ; Desc Failed to find matching arch for 32-bit Mach-O input file /private/var/installd/Library/Caches/com.apple.mobile.installd.staging/temp.rwyo0p/extracted/Payload/APP_NAME.app/APP_FILE), 
    FunctionName = -[ACXServerInstallOperation receivedDictionaryOrData:]
  }
  • Why does this happen?

    Well, I did some research again and found a GitHub issue in an unrelated project called xamarin-macios. In xamarin-macios the issue occurred during manual deployment of the app to the device. This happens because the armv7k architecture is not compatible with the new Apple Watch Series 4, which on the other hand requires a new architecture called arm64_32 (could be another naming scheme for this architecture).

  • What does this tell us?

    There is some kind of an architecture mismatch, I’d guess. One of our systems seems not to know that a new 64-bit Apple Watch exists. It could be watchOS (though highly unlikely), the WatchApp on the phone, iOS 12.1 or even the App Store that may serve corrupted re-compiled builds to our devices.

I reported everything I discovered this far to the Apple Support and they told me to try it out with another iPhone 6 Plus if I had a chance. Likely I knew someone that still had the same iPhone model. A day later I finally had a chance to try to install some of the failing apps with another iPhone 6 Plus (iOS 12.1 as well) and discovered exactly same symptoms. Apparently Error 17 is a thing! 🐞

As before, I reported the logs from the other iPhone 6 Plus to Apple Support. Filed an additional bug report and created an open rdar://46149424.

My conclusion

If you cannot install apps on your Apple Watch Series 4, don’t panic and don’t try all these weird solutions you can find on the web, they really are nonsense. More importantly though, don’t blame the app developers because they cannot do anything about this issue. 🤝

Here is a summary on what you should do instead:

  • Connect your iPhone to a Mac (if you don’t have one, ask a friend or go the Apple Store and ask them to check the following steps for you)
  • Bring your Apple Watch close to your iPhone and open the WatchApp on your phone
  • Open Console app on the Mac
  • Select your iPhone in the list of the connected devices in the Console app
  • Type installd in the top right search field and hit enter
  • Clear the currently visible logs
  • Start installing an app on your watch (preferably an app which previously always failed to install)
  • Check the last logs after the installation failed
  • If you see the same Error 17 then your iPhone model is affected by the same bug
  • If you happen to have the same issue with a different device combination, please share this with us 📝

Next steps are very important:

  • Write down your iPhone’s and Apple Watch’s serial numbers
  • Write down the versions of iOS and watchOS installed on your devices
  • Copy the logs you gathered from the Console app on the Mac (select them all and hit cmd + c)
  • Go to the Bug Reporter and submit a new bug report referencing 46149424 (your Apple ID might need to be registered for development)

In doing so Apple will most likely prioritize this issue and fix it ASAP. 🛠

It’s been a long ride

We found a significant hint of the root cause for this issue, and this is how it should always be. There is one thing left on my mind though. If you left any review on the App Store on apps that failed to install on your Apple Watch, I highly encourage you to update it and mention on which devices it happens and that the issue was caused by Error 17.

Thank you for reading. 🙂

P.S.

Apps that fail to install from TestFlight do not produce the same kind of logs as shown above. However I would guess that the failure is going to be the same.


Found a temporary workaround

In this French blog post the author found a temporary workaround by using the 3rd party application iMazing to install the apps on your iPhone with non-corrupted builds of the watch apps. Keep in mind that you will need to sign-in to with your Apple ID to install the apps. ⚠️

Since I personally do not entrust my Apple ID to such services I had a different idea I wanted to try. Remember an app called iTunes? 😅 Well previously we were able to install apps on your iDevices using iTunes, but since macOS Mojave this feature was removed. You could potentially workaround this issue by using High Sierra but this does not come without more issues. Don’t get me wrong, I tried and got it to work but there must be a better solution, right!? Well there is indeed a better solution and it works on Mojave as well. 🥺

  1. Go to the App Store and download and install Apple Configurator 2
  2. Connect your iPhone to the Mac
  3. Delete the apps you cannot install on your Apple Watch from your iPhone (simple overriding might still prevent installation)
  4. Right click on the iPhone in the Apple Configurator 2 - Add - Apps… (you may need to sign-in with your Apple ID here)

  5. Find the app you want to install, select it and click on ‘Add’ (must be previously purchased in the App Store)

  6. Open WatchApp after installation and try to install the apps.
  7. Profit 🎉

Keep in mind that there might be other steps required in your case, but for me the mentioned steps were enough.

A potential solution for Windows / Linux and older macOS users

I will now explain a solution that may or may not work for other (older) operating systems. Be aware that I cannot not guarantee that it will work for you (I tested it on High Sierra only and had Windows users report to me that it worked for them as well). Linux user should try this with Wine, or similar tools or fallback to a virtual machine and install an OS that has been reported as compatible with the workaround. 🙏

  1. If your iTunes version still has the App Store for iOS then you can skip most of the steps.
    • Otherwise: Download and install (potentially override) a different version of iTunes
  2. If you see the following error, try the following steps. The file "iTunes Library.itl" cannot be read because it was created with a newer version of iTunes
    • Find the iTunes folder:
      • My Documents\My Music\iTunes\
      • or \Users\USERNAME\Music\iTunes\
    • On Windows or Linux I don’t know the path, you have to find it yourself. 🔍
    • Delete the iTunes Library.itl file (you can also move it to your desktop, just in case).
    • Go into the subfolder called Previous iTunes Libraries (if it’s not present see if any of the subfolders contain *.itl files).
    • Locate the *.itl file with the latest or nearerst date to today and copy it into the parent folder (the folder where we previoustly deleted the iTunes Library.itl file).
    • Try launching iTunes and see if the error is gone (or otherwise rename that file to iTunes Library.itl and retry)
  3. Delete the app you want to install on your Apple Watch from your iPhone (important step).
  4. Connect your iPhone to the computer.
  5. In iTunes find the Apps section and open the App Store.
  6. Download the same app from the App Store (sign-in if neccessary).
  7. Locate your iPhone and go to the apps section, there you should see the downloaded app and an Install button.
  8. Install the app, sync your iPhone.
  9. Open WatchApp on the iPhone and try installing the app (it should work now).

I hope that workaround worked for you. I wrote the steps from my memory, so keep in mind that it might differ for you in some way. Comments are very much appreciate. Tell us if it worked out or if you had to take slightly different approach towards the goal. 🤖

A few last words

Although this solution works, it is far from ideal nor is it convenient for a normal user. To fix the main issue as soon as possible please keep filing bug repots to Apple using the previously linked bug reporter!