Update to MobileDevice.framework on macOS Breaks Old GarageBand
My old iMac isn’t supported by Mojave or Catalina, so I’m still on High Sierra. Whenever I update to a new iOS version, I get a prompt from iTunes saying A Software Update Is Required to Connect to Your iPhone, and I just blindly install.
However, the latest install seems to have broken GarageBand.
Running from the command line:
james@Jamess-iMac: /Applications/GarageBand.app/Contents/MacOS $ ./GarageBand dyld: Library not loaded: /System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice Referenced from: /System/Library/Frameworks/CoreAudioKit.framework/Versions/A/CoreAudioKit Reason: no suitable image found. Did find: /System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice: mach-o, but wrong architecture /System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice: stat() failed with errno=45 /System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice: mach-o, but wrong architecture Abort trap: 6
Hmmm, let’s check out MobileDevice:
james@Jamess-iMac: /System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A $ file MobileDevice MobileDevice: Mach-O 64-bit dynamically linked shared library x86_64
64-bit only. And updated recently:
For some confusion:
james@Jamess-iMac: ~ $ arch i386 james@Jamess-iMac: ~ $ uname -m x86_64 james@Jamess-iMac: ~ $ uname -p i386 james@Jamess-iMac: ~ $ machine i486
Anyway, my old version of GarageBand:
james@Jamess-iMac: ~ $ /usr/bin/file '/Applications/GarageBand.app/Contents/MacOS/GarageBand' /Applications/GarageBand.app/Contents/MacOS/GarageBand: Mach-O executable i386
Hmmm, only 32-bit Intel code.
I have a clone of my drive from before the update, let’s check out MobileDevice from back then:
james@Jamess-iMac: /Volumes/CCC/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A $ file MobileDevice MobileDevice: Mach-O universal binary with 2 architectures: [i386:Mach-O dynamically linked shared library i386] [x86_64] MobileDevice (for architecture i386): Mach-O dynamically linked shared library i386 MobileDevice (for architecture x86_64): Mach-O 64-bit dynamically linked shared library x86_64
Built for both archs…
Sooooo, I could fiddle with
csrutil and replace the new framework with the one from my clone, or, see if there’s an update. No update has ever shown up in the App Store for GarageBand, but it turns out there is one:
After the update:
james@Jamess-iMac: /Applications/GarageBand.app/Contents/MacOS $ file GarageBand GarageBand: Mach-O 64-bit executable x86_64
And it works:
Um, if you want to check out the song I recorded, here’s a preview: