iOS is it a static or a dynamic framework?

后端 未结 2 463
粉色の甜心
粉色の甜心 2020-12-04 12:32

This might sound like a silly question but If you have a thirdParty.framework file, can you tell if it\'s static or dynamic? I mean, do they look different if you look insid

相关标签:
2条回答
  • 2020-12-04 12:34

    I use this command to list all STATIC Frameworks from a path with a list of frameworks:

    find -E . -type f -iregex ".*\.framework\/[^./]*" -exec file {} \; | grep ': current ar archive' | sed 's/.*\/\(.*.framework\).*/\1/'
    
    0 讨论(0)
  • 2020-12-04 12:51

    It can be either.

    Only iOS8+ will allow dynamic frameworks in the app bundle, however.

    The way to find out is to look in the .framework and use the file command on the main file:

    $ 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
    

    Where ar archive means "static library".

    Alternatively, a "dynamic" framework will look like this and explicitly state that it's dynamically linked.

    $ 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
    
    0 讨论(0)
提交回复
热议问题