閑來無事消略,將自己的一個iOS項(xiàng)目支持Carthage堡称,遇到一些問題記錄于此
- Carthage 只能支持動態(tài)庫即 Dynamic Frameworks(iOS 8以上)。
新建一個Xcode工程并選擇Cocoa Touch Framework模板艺演。
新建Framework
將源文件却紧,資源文件,加入工程胎撤,編譯晓殊,通過。
-
Carthage要求工程的Scheme必須為Shared伤提。
Xcode -> Product -> Scheme -> Manage Schemes...
設(shè)置Scheme為Shared
carthage update 時(shí)巫俺,如遇到錯誤提示Dependency "xxx" has no shared framework schemes 說明工程的scheme沒有被標(biāo)記為shared,原因可能是git忽略了對應(yīng)的工程文件肿男。檢查gitignore
確保此文件未被忽略 xxx.xcodeproj/xcshareddata/xcschemes/xxx.xcscheme
gitignore.io生成的gitignoe(macOS介汹,Xcode,Swift舶沛,Carthage)會有
### Swift.SwiftPackageManager Stack ###
Packages
.build
xcuserdata
# *.xcodeproj 這句注釋掉
修改一下就好嘹承,因?yàn)楹竺孢€有:
### Xcode Patch ###
*.xcodeproj/*
!*.xcodeproj/project.pbxproj
!*.xcodeproj/xcshareddata
!*.xcworkspace/contents.xcworkspacedata
/*.gcno
Carthage 默認(rèn)通過Tag來獲取源碼版本進(jìn)行編譯,所以必須將要發(fā)布的版本打上Tag如庭,否則會提示No tagged versions found for github xxx叹卷。不過也可以指定版本 "master",來獲取當(dāng)前最新代碼坪它。
最后要注意 class 的Access Levels:需要從其他模塊訪問的屬性骤竹,方法至少需要public
-
carthage幾個常用的命令:
- update 根據(jù)文件
Cartfile
重新構(gòu)建所有依賴,文件Cartfile.resolved
將重新生成往毡,然后去下載對應(yīng)的源代碼并編譯蒙揣。 - bootstrap 根據(jù)文件
Cartfile.resolved
鎖定的版本構(gòu)建依賴,下載對應(yīng)的源代碼并編譯开瞭。 - build 不重新下載源代碼懒震,在現(xiàn)有版本源代碼基礎(chǔ)上(可以經(jīng)過修改)編譯 。
- update 根據(jù)文件
-
幾個常用的參數(shù):
- --platform 只編譯指定平臺的版本惩阶,比如挎狸,ios
- --no-use-binaries 不使用預(yù)編譯的二進(jìn)制版本扣汪,從源碼編譯
有時(shí)候update不能獲取最新的版本断楷,可以試試清除緩存
rm -rf ~/Library/Caches/org.carthage.CarthageKit