iOS 洪荒之力-SDK开发(二)

上一章节中,我们完成MySDK工程创建,并且能够利用我们的测试工程MySDKTests对SDK随时进行调试。本文中我们将一步一步来完善SDK工程配置,从而为我们后续的开发提供更加便利的条件。开始之前,确保你已经打开了我们之前创建好的Workspace。

Universal Target

选中MySDK工程,然后File->New->Target,当然你也可以直接点击TARGETS底下的“+”来创建

112893765-65c1dc83475669e2

找到iOS/Other/Aggregate,点击Next,命名为MySDK-Universal。为什么需要有这样一个集合类型的Target?因为我们在编译SDK后生成的Framework文件是分模拟器和真机两个版本,这取决于你选择的编译目标。那么为了让SDK能够同时适用于模拟器和真机,我们需要对两个版本的Framework进行合并。这里我们通过脚本来实现。在我们的scripts目录下创建脚本文件build-universal-framework.sh,并添加如下内容

然后在MySDK工程中选中MySDK-Universal,添加MySDK依赖

122893765-bfaf91c6263fdf64

为MySDK-Universal添加脚本

 

132893765-87df29ff0e5c8ee4

142893765-9fbeb23e997b146f

来测试一下,选中MySDK-Universal,然后Build

152893765-fb52c6303fc7f632

这时在你的SDK目录下会多出一个Build文件夹,里面就是最终我们需要的Framework文件

162893765-f7236b8c03ec875e

Configurations

之前在我们的目录中创建了Configurations文件夹,是时候把它加入到项目中来了

172893765-9208ffcd58325cea

然后在该Group下新建我们需要用到的几个config文件

182893765-406c52ca036aec4b

192893765-20df37e9dc005437

好,到这里我们完成了配置文件的创建,当然根据需要,你可以对其进行一些扩充。现在我们将这些文件配置到MySDK的Configurations中,看起来是大概如下:

202893765-683881f4d602d2da

这样做的好处是你可以直接通过这些文件去管理Project和Target的Build Settings。
我来测试一下,选择MySDK-Library.xcconfig,输入如下内容:

MACH_O_TYPE = staticlib

这时候你可以到你的Build Settings中查看

212893765-ab7112b847834ed9

对应的选项修改已经生效,细心的朋友可以看到我们在config文件中输入的名称MACH_O_TYPE和Build Settings中的“Mach-O Type”不一样,那么怎样才能知道我们需要修改项的内部定义名称呢?这里有两种方法,你可以去到Build Settings里面选择某一项复制,然后粘贴到配置文件中即可。另外我们也可以通过如下方式直接查看,

222893765-e3db7a1ef0eaf36e

以上是对Target的修改,之前我们同样也为Project设置了MySDK-Project-Debug.xcconfig和MySDK-Project-Release.xcconfig,为什么需要这么做,有一点需要记住,Target的配置会覆盖Project,也就是说Target的优先级更高,Project相当于Target的默认值。下面做个测试

MySDK-Project.xcconfig

MySDK-Project-Debug.xcconfig

MySDK-Project-Release.xcconfig

结果如下

232893765-c28253006ee01e36

到此,我们顺利完成了一些基本配置。下一章节将探讨Bundle的配置以及三方库的使用。

1 1 收藏 1 评论

相关文章

可能感兴趣的话题



直接登录
最新评论
  • xdkhan iOS开发 2016/09/11

    运行脚本文件会失败,提示
    cp: /Users/marcy/Library/Developer/Xcode/DerivedData/MySDK-hhjjluidfldescdctqbxequcsowi/Build/Products/Debug-iphoneos/TestFrame.framework: No such file or directory
    fatal error: lipo: can’t open input file: /Users/marcy/Library/Developer/Xcode/DerivedData/MySDK-hhjjluidfldescdctqbxequcsowi/Build/Products/Debug-iphoneos/TestFrame.framework/TestFrame (No such file or directory)

跳到底部
返回顶部