2013-07-04 9 views
11

Domanda abbastanza semplice - se si dispone di un file .framework, esiste un comando/strumento che può essere utilizzato per determinare le versioni dell'SDK e della destinazione di distribuzione utilizzate per creare il framework?Determinazione di OS X OSK e versioni di destinazione di distribuzione dal framework

Analogamente, questo può essere eseguito sul file binario dell'applicazione memorizzato all'interno di un file .app? Sto cercando di automatizzare uno script che cercherà una lista di app/framework precedentemente costruiti, senza avere i file originali .xcodeproj e determinando le loro versioni del sistema operativo supportate alte/basse.

risposta

17

Per individuare l'SDK e il Target di distribuzione di alcuni binari, è necessario esplorare il comando di caricamento LC_VERSION_MIN_MACOSX. Utilizzare otool -l <some_binary> per visualizzare i comandi di caricamento.
Esempio:

$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 
... 

Esempio con tubazioni per grep:

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

* * Perfetto avevo giocato in giro con 'otool', ma le bandiere erano scoraggiante numerosi.. Il mio framework è stato effettivamente costruito con 'version' e' sdk' impostato su 10.8, e ora posso confermare che la modifica di (Compiler Default) a 10.7 produce una copia migliore. –

+0

Qualche consiglio su come fare lo stesso per iOS? Ho provato a determinare il target di implementazione degli attuali framework Facebook e Crashlytics utilizzati in un progetto, ma questo comando non mostra nulla come una versione min. – Clafou

+0

@Clafou mi dispiace, non posso aiutarti in quel – cody

Problemi correlati