2013-07-04 12 views
11

Dość proste pytanie - czy mam plik .framework, czy istnieje polecenie/narzędzie, które może być użyte do określenia wersji SDK i docelowego wdrożenia, użytych do utworzenia frameworka?Określanie wersji docelowej OS X i docelowej wersji wdrażania z poziomu standardowego

Czy można to również wykonać w pliku binarnym aplikacji zapisanym w pliku .app? Zamierzam zautomatyzować skrypt, który przeszuka listę wcześniej zbudowanych aplikacji/frameworków, bez konieczności posiadania oryginalnych plików .xcodeproj i określania ich obsługiwanych wysokich/niskich wersji systemów operacyjnych.

Odpowiedz

17

Aby znaleźć zestaw SDK i cel wdrożenia dla niektórych plików binarnych, należy zapoznać się z komendą ładowania LC_VERSION_MIN_MACOSX. Użyj polecenia otool -l <some_binary>, aby wyświetlić polecenia ładowania.
Przykład:

$otool -l my_binary 
... 
Load command 9 
     cmd LC_VERSION_MIN_MACOSX 
    cmdsize 16 
    version 10.7 
     sdk 10.8 
... 

$otool -l /System/Library/Frameworks/CoreWLAN.framework/CoreWLAN 
... 
Load command 8 
     cmd LC_VERSION_MIN_MACOSX 
    cmdsize 16 
    version 10.8 
     sdk 10.8 
... 

Przykład z orurowaniem do grep:

otool -l my_binary | grep -A 3 LC_VERSION_MIN_MACOSX 
+0

* Idealne * Grałem około z 'otool', ale flagi były zniechęcająco liczne.. Moja struktura została rzeczywiście zbudowana z ustawieniem "version" i "sdk' ustawionym na 10,8, i mogę teraz potwierdzić, że zmiana (ustawienia domyślnego kompilacji) na 10.7 daje lepszą kopię. –

+0

Jakieś wskazówki dotyczące robienia tego samego na iOS? Próbowałem ustalić docelowy poziom wdrożenia obecnych frameworków Facebook i Crashlytics używanych w projekcie, ale to polecenie nie wyświetla niczego podobnego do wersji min. – Clafou

+0

@Clafou przepraszam, nie mogę ci pomóc w tym – cody

Powiązane problemy