cocoapods-util介紹
cocoapods-util是一個iOS開發(fā)提效的cocoapods插件。
取名util的原因是我想做一個通用的插件,把一些iOS中常用的命令或問題整理起來。
插件中除了package命令是根據cocoapods-packager插件做了修改而來,其余命令都是屬于自己總結開發(fā)場景下的需求實現的,希望對各位iOSer有所幫助。
目前已支持功能有:
- pod repo push命令優(yōu)化,解決push私有庫慢、驗證時間長易失敗的問題
- 查看Pods組件安裝列表(詳細情況)以及各pod組件間的依賴關系
- 根據podspec文件打包生成二進制(.a、.framework、.xcframework)
- 把現有framework生成xcframework
- 二進制源碼鏈接調試
- 去除project.pbxproj文件重復引用
好了,話不多說,看一下插件怎么安裝使用吧。
安裝
$ gem install cocoapods-util
使用介紹
通過此命令查看util插件支持的所有功能
$ pod util --help
命令介紹
1. repo push
介紹
推送私有pod倉庫的命令,可以跳過驗證、跳過編譯過程,用于快速發(fā)布私有pod。
- 可以通過添加--skip-validate的選項跳過驗證步驟。
- 可以通過添加--skip-build的選項跳過編譯,但是會驗證tag,需要確保tag已存在。
$ pod util repo push --help
該命令是一個提效命令,在推送自己私有倉庫的時候可以通過設置--skip-validate選項跳過驗證直接推送到私有倉庫。
插件只是在原來的命令基礎上擴展了兩個參數,執(zhí)行命令的時候如果不配置這兩個參數,那么和原命令完全一樣。
示例
只需要在正常執(zhí)行pod repo push命令的時修改成pod util repo push。
$ pod util repo push [yourSpecs] [xxx.podspec] --skip-validate
2. install list
介紹
查看Pods安裝的列表(詳細情況)
- 可以省去開發(fā)者自己去閱讀Podfile.lock文件的時間,直接友好的提示
- 可以清晰的看出引用的組件個數、組件依賴情況、組件被依賴的情況、組件分支tag信息、倉庫地址等有效信息
- 建議在Podfile文件所在目錄執(zhí)行此命令
$ pod util install list --help
示例
$ pod util install list --showmore
Tips:我在最新的插件版本中重新實現了此命令,使用cocoapods中Installer類提供的依賴解析方法來解析組件的依賴,實現更簡單,可以遞歸的查找到所有依賴的組件。
?3. xcframework
介紹
可以把現有的framework生成xcframework。
該命令可以分析出是某個平臺的framework(如ios、osx、watchos),直接在framework同級目錄生成xcframework。
根據不同平臺的framework,分別提取真機、模擬器對應架構的二進制,最終再組合成xcframework文件。
示例
把現有的Alamofire.framework生成Alamofire.xcframework
$ pod util xcframework Alamofire.framework --force
?
4. package
介紹
通過podspec文件生成library、framework、xcframework。
- 支持swift和混編
- 支持自定義配置dependency(如配置某個組件為branch依賴)
- 支持排除模擬器
- 支持多平臺(ios、osx、watchos、tvos)
- 支持自定義設置工程的build settings(如:排除ios模擬器64位架構、設置支持的架構等)
- 支持設置modular_headers
$ pod util package --help
示例
生成xcfrmework、framework或library
克隆AFNetworking的源碼到本地,進入AFNetworking源碼的根目錄下,執(zhí)行下面的命令
$ pod util package AFNetworking.podspec --force --local --xcframework
$ pod util package AFNetworking.podspec --force --local --framework
$ pod util package AFNetworking.podspec --force --local --library
排除模擬器
如果你不需要編譯模擬器架構,可以添加--exclude-sim
$ pod util package AFNetworking.podspec --force --local --xcframework --exclude-sim
平臺設置
如果你只需要編譯ios架構下的xcframework,可以添加--platforms=ios
$ pod util package AFNetworking.podspec --force --local --xcframework --exclude-sim --platforms=ios
build settings配置
如果你想要做一些build settings特殊配置,可以添加 --build-settings,如設置編譯選項排除模擬器arm64架構。理論上來講,可以像直接操作工程一樣,靈活的配置build settings
- 如設置排除arm64位架構
$?--build-settings='{"EXCLUDED_ARCHS[sdk=iphonesimulator*]":"arm64"}'
- 設置編譯swift生成swiftinterface文件
$ -build-settings='{"BUILD_LIBRARY_FOR_DISTRIBUTION":"YES"}'
- 或者你想設置多個編譯選項
$ -build-settings='{"EXCLUDED_ARCHS[sdk=iphonesimulator*]":"arm64","BUILD_LIBRARY_FOR_DISTRIBUTION":"YES","VALID_ARCHS":"arm64"}'
自定義dependencies
如果你依賴的組件并沒有發(fā)布到私有倉庫,只是分支依賴。?如果你依賴的組件和官方源有沖突,你需要修改指定source源,這時候你可以通過配置--dependency-config={}
選項指定倉庫分支、tag或指定source源。
$ --dependency-config='{"PodA":{"git":"xxx","branch":"xxx"},"PodB":{"source":"xxx"}}'
5. linksource
介紹
源碼二進制鏈接功能。
$ pod util linksource --help
這個命令實現比較簡單,但是也不太實用。簡單來說就是源碼路徑在多臺電腦上很難統(tǒng)一,還會有權限問題。
6. uniq
介紹
對xcodeproj --> project.pbxproj文件做重復引用的去重。
該命令的來源是我發(fā)現工程的.pbxproj文件變得非常大,最大時發(fā)現有10M的大小,在執(zhí)行pod的更新時會卡在install的執(zhí)行過程User Project Integration
這一步很長的時間。
我檢查了一下這個工程文件,發(fā)現這里面有許多重復的引用,這是由于項目長期merge代碼的過程中沒有很好的解決沖突,保留了相同的引用,所以才有了這個命令。
我嘗試對pbxproj文件做了去重,文件大小從10M減小到了1.7M,再執(zhí)行pod install安裝時就不會再卡在User Project Integration
這一步驟了。
$ pod util uniq --help
文章來源:http://www.zghlxwxcb.cn/news/detail-466879.html
示例
$ pod util uniq project.xcodeproj
反饋
如果使用中有什么問題,可以提交評論,也可以去我的項目地址中去提交issue,我看到后會盡快回復。文章來源地址http://www.zghlxwxcb.cn/news/detail-466879.html
到了這里,關于iOS開發(fā)提效cocoapods插件cocoapods-util的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!