automation validate framework configure
前言
由于需要提供多个语言版本的framework,以供客户使用。因此需要根据指定语言版本使用对应的XCode打包,为了减少人工的错误,所以校验framework的配置非常必要, 于是我想使用Swift写个command line tool 校验一下
功能
- 校验 XCode 版本
- 校验 minimumOSVersion
- 校验 DTPlatformVersion
- 校验 code architecture , 主要是检查是否仅包含真机指令集,还是包含所有指令集
方案
- 比对标准的plist文件和待检测的framework 的plist文件, 校验 XCode 版本, minimumOSVersion, DTPlatformVersion
- 使用
lipo
命令检测framework architectures
制作过程
配置依赖性
image not load
error: 'init(fileURLWithPath:relativeTo:)' is only available on OS X 10.11 or newer
image.png
修改package.swift注释 可以切换不同版本的 swift-version-tool
image.png
偷偷的改了下5.0, 果然不让我通过
error: package at '/Users/*****/Desktop/自开发工具tools/FrameworkValidateCheckTools/FrameworkValidate' requires a minimum Swift tools version of 5.0.0 (currently 4.2.0)
没办法,只能向现实低头,老老实实的写#available
, 接下来就比较简单了递归遍历目标文件夹,检测*framework/Info.plist
, 校验配置属性的合法性
执行lipo 命令
总结
- swift package manager 开发起来还是引起了不少不适,主要在于没有project文件,要频繁使用命令行进行编译,错误提示也不太友好,导致开发比较低效,可能有更好的使用swift package manager方式,我不知道罢了。
- 对于三方库的集成我觉得可以将三方库编译成.o文件,这样应该就可以在不使用swift package manager 的情况下, 对其进行集成