本人之前在使用Carthage打包的時候,希望能將打包的framework隨著項目一起發(fā)布到遠端git上,結(jié)果發(fā)現(xiàn)每次生成的framework,并不是根據(jù)pull下來的Sources文件去臨時build framework。 而是從本地push上去的framework,導(dǎo)致每次修改Sources文件,都必須在本地carthage update 后把framework發(fā)布到git上,這顯然不是我想要的效果。
因此,接下來介紹一種使用swift package 來構(gòu)建一個適用Carthage發(fā)包的一個項目。
首先:新建一個目錄
$ mkdir PhotoPick
$ cd PhotoPick/
在該目錄下執(zhí)行
$ swift package init
初始化生成一個符合package標(biāo)準(zhǔn)的項目(可忽略刪掉Tests文件夾)
$ swift package generate-xcodeproj
生成一個Xcode項目

打開這個工程之后,你會發(fā)現(xiàn)這個項目是一個MAC OS 項目,接下來我們需要把這個項目設(shè)置為iOS項目。

將Base SDK 的macOS 修改為 iOS , 將Supported PlatForms 修改為iOS
接著點擊TARGETS 上的 PhotoPick,重復(fù)一遍上面操作,將SDK改成iOS類型
然后把想要編譯的源文件放入Source目錄下。
確定需要編譯的文件

接著執(zhí)行命令 carthage build --no-skip-current?
若執(zhí)行失敗出現(xiàn)
Build Failed
Task failed with exit code 65:
/usr/bin/xcrun xcodebuild -project /Users/Auto/Desktop/PhotoPick/PhotoPick.xcodeproj -scheme PhotoPick -configuration Release -sdk watchos ONLY_ACTIVE_ARCH=NO BITCODE_GENERATION_MODE=bitcode CODE_SIGNING_REQUIRED=NO CODE_SIGN_IDENTITY= CARTHAGE=YES clean build
是由于 Supported PlatForms選項未修改成iOS 平臺SDK所造成的??梢試L試修改正確
若build成功,則可以看到,PhotoPick.framework成功生成

接著我們可以新建一個Demo來測試一下freamwork的功能。
File -> New -> Target -> Single View Application

在Embedded Binaries 上添加該framework

framework可以正常使用
終于大功告成了!
最后,可以將項目發(fā)布到github或git上面,注意給版本添加標(biāo)簽。
使用Carthage管理的項目,只需要在Carthage文件內(nèi)添加該git路徑以及標(biāo)簽號。
最后執(zhí)行carthage update 拉下Souces下源碼后,立刻自動build 相應(yīng)的framework。
盡情享受Carthage 管理第三方依賴包所帶來的便捷吧~