Mein Ziel ist es, eine Erweiterung zu erstellen, die das clang-Format ausführt. Mein Code sieht ungefähr so aus:
%Vor%Der Grund, warum ich diesen try-catch-Block brauche, ist, dass beim Versuch, diesen Code auszuführen, eine Ausnahme ausgelöst wird. Der Ausnahmegrund ist:
Fehler: Startpfad nicht zugänglich
Der Pfad für mein clang-Format ist / usr / local / bin / clang-format. Was ich entdeckt habe, ist, dass ich nicht versuche, auf eine Anwendung in / usr / local / bin zuzugreifen, aber / bin ist in Ordnung (wenn ich versuche, / bin / ls auszuführen, gibt es kein Problem).
Eine andere Lösung, die ich ausprobiert habe, war / bin / bash, indem ich den Startpfad und Argumente wie folgt einstelle:
%Vor%Dies startet die Aufgabe erfolgreich, aber es schlägt mit der folgenden Fehlerausgabe fehl:
/ bin / bash: / etc / profile: Operation nicht erlaubt / bin / bash: / usr / local / bin / clang-format: Operation nicht erlaubt
Die erste Fehlermeldung ist darauf zurückzuführen, dass versucht wurde, den Parameter -l in bash aufzurufen, der versucht, sich als Benutzer anzumelden.
Irgendeine Idee, wie ich den Zugang zu diesen anderen Ordnern ermöglichen kann? Gibt es irgendeine Art von Sandbox-Umgebungseinstellung, die ich aktivieren muss?
Ich persönlich denke, dass Sie alles falsch machen. Erweiterungen sollen schnell sein (wenn man sich das Video auf Xcode-Erweiterungen anschaut, wiederholt er es mehrmals, um rein und raus zu kommen). Und sie sind stark eingeschränkt.
Es gibt jedoch noch eine andere - die Container-App kann diese Verarbeitung für Ihre Erweiterung ohne alle Hacks durchführen. Der Nachteil ist, dass Sie den Puffer zu und von der Erweiterung übergeben müssen.
Es ist nicht einfach, aber es kann gemacht werden. Einfach peasy, um Ihren Container zum Laufen zu bringen. Ändern Sie zunächst die Info.plist der Container-App (nicht die Erweiterung Info.plist), sodass sie einen URL-Typ aufweist.
In Ihrer Erweiterung können Sie die Container-App "aufwachen", indem Sie Folgendes ausführen:
%Vor%Wie für die Kommunikation zwischen den beiden, hat Apple eine Fülle von Methoden. Ich, ich bin Old-School, also verwende ich DistributedNotificationCenter - für den Moment.
Obwohl ich es nicht ausprobiert habe, sehe ich nicht, warum bei der Container-App ein Problem beim Chatten auftreten sollte (ich verwende die Container-App für Einstellungen).
Tags und Links xcode xcode8 nstask clang-format xcode-extension