-
Are you sick and tired of thinking about / dealing with
Alcatraz
/ all yourXcode
plugins breaking with eachXcode
release? -
Have you tried those other hacks, and still you can't keep up with all the compatibility UUID's, aka
DVTPlugInCompatibilityUUIDs
? -
Does the fact that
Alcatraz
doesn't do this automcatically make you want to jump off a cliff?
Through the magic of science, the ever-incompatible Alcatraz
(and all it's little friends) will now "magically" BE compatible. Wow. Imagine. If something doesn't work, don't cry! Just delete the offending plugin-in from
~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/
and move on! You can always just install it later (now that you CAN depend on ALcatraz being available, via this plugin!)
--Xcode: PluginLoading: Required plug-in compatibility UUID XYZ-123-KILL-KILL-ALCATRAZ for plug-in at path '~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/SomeHaplessPlugin.xcplugin' not present in DVTPlugInCompatibilityUUIDs--
###Serenity Now!
- Automatically updates ALL your plugin's with ALL your installed Xcodes' various required UUID's, automatically!
- Make sure Alcatraz is ready to go when you update Xcode, without having to do ANYTHING!
- Works even when Xcode is closed, or if something changes with your plugins!
- Notifies you politely when it does something, or runs a check!
Behold
Simply build this Xcode project once and restart Xcode. You can delete the project afterwards. (The plugin will be copied to your system automatically after the build.)
If you get a "Permission Denied" error while building, please see this issue of the great ColorSense plugin.
The plugin automatically registers a LaunchAgent with launchd
, which keeps
~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/DVTPlugInCompatibilityUUIDifier.xcplugin/Contents/MacOS/DVTPlugInCompatibilityWatchdog
running for you, unassisted! DVTPlugInCompatibilityWatchdog
is the little macgic helper that makes sure you can ALWAYS be up and running with ALL your plugins/Alcatraz, no matter what!
Make sure to always Load Bundles when prompted by prissy/cooties-averse/xenophobic Xcode
.
Either manually delete
~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/DVTPlugInCompatibilityUUIDifier.xcplugin
or use the great JDPluginManager, and within Xcode
, just go to Plugins >
DVTPlugInCompatibilityUUIDifier >
Uninstall
and restart Xcode
.
DVTPlugInCompatibilityUUIDifier.xcplugin
└── Contents
├── Info.plist
└── MacOS
├── DVTPlugInCompatibilityUUIDifier // The bundle's executable.
├── DVTPlugInCompatibilityWatchdog // The LaunchAgent that will always run.
└── DVTCompatibilitizer.notfier.app // This bunlded app handles notifications
└── Contents
├── Info.plist
├── MacOS
│ └── applet
├── PkgInfo
└── Resources
├── Scripts
│ └── main.scpt
├── applet.icns
├── applet.rsrc
└── description.rtfd
└── TXT.rtf
First of all, this project requires AHLaunchCTL. However, if you forget to update/init your submodules, there is a pre-build step,
if [ ! -d AHLaunchCTL ]; then git submodule update --init --recursive; fi
that will handle it for you.
One problem the first version of this plug-in faced, was that when...
A. When Apple releases a new version of Xcode... B. I have yet to upgrade this plugin's list of PlugIn CompatibilityUUID's... C. Someone tries to install a NEW copy of this plugin...
that this plugin never loads, the watchdog never runs, and we are back to "square one".
Existing users of this plug-in should be unafftected, as the watchdog is already running, theoretically, actively fixing all your plug-ins.
The solution is a bit hacky.. but again, inside of Xcode's build settings, I've added a "Post-Build" script...
which simply brute-force launches the included watchdog. This way.. EVEN if Xcode NEVER has loaded this plugin (due to it being fucking UUID incompatible)... it won't matter. Simply by being built successfully... the watchdog will be running.. and you will be protectced from the ravages of small inconvenience!
Not only does the watchdog protect you from Alcatraz's refusal to self-update, and Apple's Nazi-esque "compatibility" police.. but it can ALSO test itself... This isn't more than an internal mechanisms, but I might as well document it here, for my own benfit.
I'm @mralexgray on Twitter. Please tweet about the plugin.