美文网首页ios frame特别收藏
Import framework by module map

Import framework by module map

作者: 巴依老爷的锅 | 来源:发表于2017-03-30 21:55 被阅读419次

一般的Swift项目(Executable)中如需使用Objc库可以使用Bridging Header的方式,然而如果Swift项目是Framework则无法采用此种方式,这时就需要另一种方式:Module Map。
下面以CommonCrypto为例

  1. 在我们的Swift Framework工程中添加一个新的Target, 类型选择Framework,起名为CommonCrypto
  2. 给CommonCrypto添加一个文件,类型选择Other->Configuration Settings File,起名为CommonCrypto.xcconfig,这是一个配置文件,其内容为:
    MODULEMAP_FILE[sdk=iphoneos] = $(SRCROOT)/CommonCrypto/iphoneos.modulemap
    MODULEMAP_FILE[sdk=iphonesimulator
    ] = $(SRCROOT)/CommonCrypto/iphonesimulator.modulemap
    分别对应真机和模拟器上的modulemap文件。
  3. 创建配置文件中引用的modulemap模块文件:
    1. iphoneos.modulemap 内容为:
      module CommonCrypto [system] {
      header "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include/CommonCrypto/CommonCrypto.h"
      export *
      }
    2. iphonesimulator.modulemap 内容为:
      module CommonCrypto [system] {
      header "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/include/CommonCrypto/CommonCrypto.h"
      export *
      }
      如果两个文件内容相同可以使用同一文件,header字段为framework的头文件路径。
  4. 选择我们的Framework Project设置Info->Configurations,找到Target CommonCrypto,将其Debug和Release的Based On Configuration File设置为CommonCrypto,即对应CommonCrypto.xcconfig文件。


    未命名.jpg
  5. 选择我们的Framework Target设置 Build Phases 添加依赖CommonCrypto


    屏幕快照 2017-03-30 下午9.49.28.png
  6. 大功告成

相关文章

网友评论

  • 冰三尺:你好, 我是在cocoachina提问的小飞向前冲, 我按照你的文章操作后还是会报错, 请问第三步的配置也是写在CommonCrypto.xcconfig文件里面把
    巴依老爷的锅:第三步是要创建两个单独的文件. 你可以参考完整的工程文件https://github.com/darkdong/DarkSwift

本文标题:Import framework by module map

本文链接:https://www.haomeiwen.com/subject/jmnpottx.html