zoukankan      html  css  js  c++  java
  • iOS中的dynamic linking

    1. 库的链接

    静态库

    静态库可以理解成目标文件的存档
    当链接静态库时, static linker会把库中的目标文件跟应用程序目标代码打包成一个可执行文件

    动态库

    动态库可以按需load(称为动态加载库)。可以在启动时load, 也可以是在运行时 (称为动态连接库)

    framework

    对苹果开发者来说,framework可以理解成一个包含了动态库、头文件、以及资源文件的bundle

    我的理解

    库是可执行的代码;framework包含了动态库、头文件、资源文件等

    2. ios上的动态库

    Every Apple framework that you link into your application contains a dynamic shared library. Can you imagine what the size of the executable would be if you had to statically link UIKit and other frameworks into every single application?

    在iOS上构建动态库

    通过实验,可以构建动态库、framework, 以及plugin, 并在在模拟器上运行

    3. 在设备上运行会怎样

    动态库

    在设备上运行时, xcode会提示你dynamic library和framework需要被签名

    用跟主app一样的签名来签名之后,启动app崩溃

    framework

    在设备上运行时,只要用来给framework签名的证书,以及相应的配置文件合适(包含设备), framework就可以被dyld加载, app可以正确运行。注意,给framework签名的证书不需要与主app的证书一致

    plugin

    与framework情况类似

    4. 提交app store会是怎样的呢?

    framework和plugin都应该使用跟主app一样的发布证书签名, 并被苹果签名。实际上,Mac App Store就是这么干的。
    但现在iOS App Store还不支持 framework和plugin。xcode 6发布后发生了变化

    我的理解

    应用提交苹果审核通过后,苹果会用私钥对应用签名,用fairplay对应用进行加密。只有这样的应用才能安装在用户的设备上(非越狱)。
    被苹果签名的意思是:被苹果签名、加密后
    更新:xcode 6发布后,支持创建动态framework。
    从服务端下载的framework显然是没经过苹果签名的;但是打包在app例的framework,用跟主app一样的发布证书签名,可以通过审核么???待验证

    原文链接:http://realmacsoftware.com/blog/dynamic-linking

  • 相关阅读:
    MyBatis 延迟加载
    超经典的 25 道 MyBatis 面试题
    公钥与私钥,HTTPS详解
    分布式,集群,微服务的理解
    单例模式的饿汉式和懒汉式的实现以及比较它们的区别比较(Java实现)
    Mybatis的一级缓存和二级缓存详解
    Maven install没有将jar包加载到本地仓库
    Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
    数据结构_C语言_单链表
    Java实现一个简单的LRUCache
  • 原文地址:https://www.cnblogs.com/mindyme/p/4429254.html
Copyright © 2011-2022 走看看