Cela peut sembler une question idiote, mais si vous avez un troisième fichier Party.framework, pouvez-vous dire s'il est statique ou dynamique? Je veux dire, ont-ils l'air différents si vous regardez à l'intérieur?
Ce peut être l'un ou l'autre.
Cependant, seul iOS8 + autorise les cadres dynamiques dans le bundle d'applications.
La façon de le savoir est de regarder dans le .framework
et utilisez la commande file
sur le fichier principal:
$ cd iOS/Crashlytics.framework
$ ls -l
total 9984
-rwxr-xr-x 1 andy staff 4710656 11 Sep 17:11 Crashlytics
drwxr-xr-x 8 andy staff 272 11 Sep 17:11 Headers
-rw-r--r-- 1 andy staff 1553 11 Sep 17:11 Info.plist
drwxr-xr-x 3 andy staff 102 11 Sep 17:11 Modules
-rwxr-xr-x 1 andy staff 146164 11 Sep 17:11 run
-rwxr-xr-x 1 andy staff 241688 11 Sep 17:11 submit
$ file Crashlytics
Crashlytics: Mach-O universal binary with 5 architectures
Crashlytics (for architecture armv7): current ar archive random library
Crashlytics (for architecture armv7s): current ar archive random library
Crashlytics (for architecture i386): current ar archive random library
Crashlytics (for architecture x86_64): current ar archive random library
Crashlytics (for architecture arm64): current ar archive random library
Où ar archive
signifie "bibliothèque statique".
Alternativement, un framework "dynamique" ressemblera à ceci et indiquera explicitement qu'il est lié dynamiquement.
$ cd /Library/Frameworks/iTunesLibrary.framework/
$ ls -l
total 40
lrwxr-xr-x 1 root wheel 24 10 Sep 17:38 Headers -> Versions/Current/Headers
lrwxr-xr-x 1 root wheel 24 10 Sep 17:38 Modules -> Versions/Current/Modules
lrwxr-xr-x 1 root wheel 26 10 Sep 17:38 Resources -> Versions/Current/Resources
drwxr-xr-x 4 root wheel 136 10 Sep 17:41 Versions
lrwxr-xr-x 1 root wheel 22 10 Sep 17:38 XPCServices -> Versions/A/XPCServices
lrwxr-xr-x 1 root wheel 30 10 Sep 17:38 iTunesLibrary -> Versions/Current/iTunesLibrary
$ file Versions/Current/iTunesLibrary
Versions/Current/iTunesLibrary: Mach-O universal binary with 2 architectures
Versions/Current/iTunesLibrary (for architecture i386): Mach-O dynamically linked shared library i386
Versions/Current/iTunesLibrary (for architecture x86_64): Mach-O 64-bit dynamically linked shared library x86_64
J'utilise cette commande pour répertorier tous les cadres STATIC à partir d'un chemin avec une liste de cadres:
find -E . -type f -iregex ".*\.framework\/[^./]*" -exec file {} \; | grep ': current ar archive' | sed 's/.*\/\(.*.framework\).*/\1/'
Merci @trojanfoe
La réponse courte est d'utiliser la commande file
. Il affiche simplement le type de fichier avec des détails sur l'architecture, le format de fichier objet et plus encore.
file <path_to_binary>
file <name>.a //static library
file <name>.dylib //dynamic library
file .../<framework_name>.framework/<framework_name>
current ar archive random library
- bibliothèque statiquedynamically linked shared library
- bibliothèque dynamique