2012-10-18 15 views
8

Mam proste narzędzie stworzone przeze mnie, które uruchamia główną aplikację kakao z powłoki.Jak przeprowadzić piaskownicę narzędzia wiersza poleceń?

muszę go piaskownica, ale kiedy go uruchomić, to zawiesza się z powodu błędu „nielegalne nauczania: 4”, na console.app widzę następujący komunikat o błędzie

tworzenie Sandbox nie powiodło się: kontenerze obiektu inicjalizacji nie powiodło się: NIL obiekt informacji o pojemniku bez opisu błędu dla visdiff

Plik jest poprawnie podpisany za pomocą codesign.

Czytałem post Mac OS app, sandbox with command line tool? ale to nie pomaga

+0

Być może potrzeba więcej informacji. W jaki sposób narzędzie jest spakowane wraz z aplikacją? Jak wykonać narzędzie "z powłoki" (kod, proszę). Co nie pomogło ci w drugim pytaniu, o którym wspomniałeś (gdzie napotkasz problemy)? –

+0

Czy używałeś argumentu --entitlements podczas wysyłania kodów? – Marius

Odpowiedz

5

Miałem dokładnie ten problem i odszedł, kiedy dodałem osadzoną listę Info.plist.

Spróbuj flagi dzyń (zakładając, że masz info.plist w katalogu build):

-Xlinker -sectcreate -Xlinker __TEXT -Xlinker __info_plist -Xlinker info.plist

+1

Wow. Uratowałeś ten dzień. Przekazałbym ci wszystkie moje punkty SO, jeśli mógłbym. DZIĘKUJĘ CI!!! – Lizza

+0

Nie ma za co :) –

+0

jakie informacje zostały dodane w osadzonej Info.plist? Wierzę, że ten plik plist jest dla pliku UNIX – Swati

4

jest zastosowanie konsoli uruchomić bezpośrednio z konsoli lub jest ona wywoływana z głównego piaskownicy aplikacji? I otrzymała podobny błąd podczas próby piaskownica niektóre pliki binarne i byłam w stanie zrobić to praca przy użyciu tylko poniższe uprawnienia:

<dict>                                          
    <key>com.apple.security.app-sandbox</key>                                 
    <true/>                                          
    <key>com.apple.security.inherit</key>                                  
    <true/>                                          
</dict> 

oczywiście, po tym można tylko nazwać binarnego z procesu macierzystego że jest już piaskownicą (dlatego spytałem, jak nazwano twój plik binarny :)).

+0

Nie, moje narzędzie wiersza poleceń jest wywoływane z powłoki unix, jest całkowicie niezależne od głównej aplikacji piaskownicy – dafi

0

Wydaje jeśli podpisać wykonywalny z com.apple.security.inherit może być wywołana tylko przez inny aplikacja, która jest już piaskownica. Więc nie możesz już wywoływać tego z cmdline po uruchomieniu codeign.

+0

Tak - ten problem uderzył we mnie, gdy tylko podpisałem pliki pomocnicze helperów z tym minimalnym plikiem com.apple.security.app-sandbox + com.apple.security.inherit plist. Czy jest w pobliżu praca? Czy muszę dodać uprawnienia "rzeczywiste" dla każdego pliku wykonywalnego pomocnika, tak jakby to była aplikacja nadrzędna? com.apple.security.network.client? Martwię się o uprawnienia do systemu plików, ponieważ moi pomocnicy mogą potrzebować dość szerokiego dostępu, daleko poza obszarem domowego folderu. – user1475135

Powiązane problemy