Apps not installing on the Watch or `Error 17`
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 hadShazam
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 calledarm64_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 hitcmd + 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.
Related topics on the web
- https://github.com/GitHawkApp/GitHawk/issues/2438
- https://github.com/xamarin/xamarin-macios/issues/4864
- https://discussions.apple.com/message/34165335 [Update: It seems like Apple deleted this conversaion!]
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. 🥺
- Go to the App Store and download and install
Apple Configurator 2
- Connect your iPhone to the Mac
- Delete the apps you cannot install on your Apple Watch from your iPhone (simple overriding might still prevent installation)
- Right click on the iPhone in the
Apple Configurator 2
- Add - Apps… (you may need to sign-in with your Apple ID here)
- Find the app you want to install, select it and click on ‘Add’ (must be previously purchased in the App Store)
- Open WatchApp after installation and try to install the apps.
- 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. 🙏
- 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
- 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 theiTunes Library.itl
file). - Try launching iTunes and see if the error is gone (or otherwise rename that file to
iTunes Library.itl
and retry)
- Find the iTunes folder:
- Delete the app you want to install on your Apple Watch from your iPhone (important step).
- Connect your iPhone to the computer.
- In iTunes find the Apps section and open the App Store.
- Download the same app from the App Store (sign-in if neccessary).
- Locate your iPhone and go to the apps section, there you should see the downloaded app and an
Install
button. - Install the app, sync your iPhone.
- 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!