Swift -《从0到1 - 4》:Swift项目使用CocoaPods

Swift -《从0到1 - 4》:Swift项目使用CocoaPods,第1张

CocoaPods是OS X和iOS下的一个第三类库管理工具,通过CocoaPods工具我们可以为项目添加被称为“Pods”的依赖库(这些类库必须是CocoaPods本身所支持的),并且可以轻松管理其版本

GitHub Demo 地址

CocoaPods的安装教程可以看:
iOS安装CocoaPods详细过程

使用CocoaPods

swift项目中使用CocoaPodsoc一样,先创建Podfile文件,然后添加三方库

1、直接创建名字为Podfile的文件,然后通过文件编辑器打开文件
2、在Podfile文件中添加pod 三方库名称,下面是我的demo中用的三方库
3、终端cd 到项目路径下,运行pod install

三方库
platform :ios, '9.0'
target 'JhSwiftDemo' do

use_frameworks!

# 屏蔽所有第三方框架警告
inhibit_all_warnings!


# source 'https://github.com/CocoaPods/Specs.git'
  
# -------------- 指令 --------------

# pod install --no-repo-update 跳过检查更新
# pod install
# pod install --repo-update 检查更新
# removing SDWebImage

# pod --version 查看版本
# sudo gem update cocoapods 更新升级CocoaPods
# sudo gem update --system  更新升级gem
# sudo gem install -n /usr/local/bin cocoapods 安装CocoaPods

# -------------- 指令 --------------


# -------------- Swift --------------

# 网络请求
pod 'Alamofire', '4.9.1'
pod 'Moya', '13.0.1'
pod 'ReachabilitySwift', '5.0.0'
# 模型转换,数据处理
pod 'SwiftyJSON', '5.0.1'
pod 'HandyJSON', '5.0.2'
# 自动布局
pod 'SnapKit', '4.2.0'
# 网络图片加载缓存
pod 'Kingfisher', '4.10.1'
pod 'IQKeyboardManagerSwift', '6.5.9'
pod 'Gifu', '3.3.1'

# 数据存储与数据安全
pod 'SQLite.swift', '0.13.2'
#pod 'RealmSwift'
pod 'SwiftyUserDefaults', '5.3.0'
#pod 'KeychainAccess'
pod 'Cache', '5.3.0'
pod 'CryptoSwift', '1.4.3'

# 时间转换
pod 'SwiftDate', '6.3.1'
# 标准库扩展
pod 'Dollar', '9.0.0'
# 扩展库
#pod 'SwifterSwift'

# 日志
#pod 'XCGLogger'
#pod 'Log'

# 异步、函数响应式编程
#pod 'PromiseKit'
#pod 'AsyncSwift'
#pod 'RxSwift', '6.5.0'
#pod 'RxCocoa', '6.5.0'

# 主题和颜色
pod 'SwiftTheme', '0.6.4' # 主题
#pod 'UIImageColors' # 从图像中获取最主要和最突出的颜色
#pod 'Hue'
#pod 'DynamicColor'
#pod 'UIColor_Hex_Swift'

# d框
pod 'SCLAlertView', '0.8'
pod 'SwiftMessages', '9.0.6'
#pod 'BulletinBoard'
#pod 'FloatingPanel' # 浮动界面
#pod 'XLActionController' # 底部菜单栏控件
# 加载框
pod 'Toast-Swift', '5.0.1'
#pod 'PKHUD'
#pod 'ProgressHUD'
#pod 'Toaster'
# pop
pod 'Popover', '1.3.0'
#pod 'PopupDialog'
#pod 'AMPopTip'
# 顶部
pod 'SwiftEntryKit', '2.0.0'
#pod 'NotificationBannerSwift'
# 加载动画
#pod 'NVActivityIndicatorView'

# 图片选择器
pod 'HXPHPicker', '1.0.8'
#pod 'ZLPhotoBrowser'
#pod 'YPImagePicker'
#pod 'BSImagePicker'
#pod 'ImagePicker'

# 图片浏览
pod 'Lantern', '1.1.2'
#pod 'JXPhotoBrowser'
#pod 'ImageViewer'

# 滑动面板
#pod 'JXSegmentedView'
#pod 'Panels'

# 轮播
pod 'FSPagerView', '0.8.3'
# 侧滑菜单
pod 'SideMenu', '5.0.1'
#pod 'SlideMenuControllerSwift'

pod 'ESTabBarController-swift', '2.8.0'
#pod 'RAMAnimatedTabBarController'

# 引导页
pod 'Instructions', '2.1.1'
#pod 'RazzleDazzle'
#pod 'ZLaunchAd'

# 二维码
pod 'EFQRCode', '6.2.1'
pod 'swiftScan', '1.2.1'
#pod 'WeScan'

# 图表 SwiftUICharts
pod 'AAInfographics', '6.0.0'
#pod 'AAInfographics', :git => 'https://github.com/AAChartModel/AAChartKit-Swift.git'
#pod 'Charts'
#pod 'SwiftCharts'
#pod 'SwiftChart' # 最后更新2018
#pod 'PNChartSwift',:git => 'https://github.com/kevinzhow/PNChart-Swift.git' # 最后更新2017

# 富文本
#pod 'SwiftyAttributes'
#pod 'Atributika'
#pod 'SwiftRichString'
#pod 'TextAttributes'

# 日历
pod 'JTAppleCalendar', '7.1.7'
#pod 'CVCalendar'
#pod 'HorizonCalendar'
#pod 'CalendarKit'

# 下拉刷新
pod 'ESPullToRefresh', '2.9.3'
#pod 'DGElasticPullToRefresh'
#pod 'PullToRefresher'

# UI
#pod 'Eureka' # 表单
#pod 'Former' # 表单
#pod 'FoldingCell' # 折叠cell
#pod 'SwipeCellKit' # 滑动cell
#pod 'Reusable' #cell
#pod 'ActiveLabel'
#pod 'LTMorphingLabel'
#pod 'MarqueeLabel'
#pod 'TextFieldEffects' # 浮动输入
#pod 'SkyFloatingLabelTextField' # 浮动输入
#pod 'RichTextView'
#pod 'NextGrowingTextView'
#pod 'PhoneNumberKit'
#pod 'Cosmos', '~> 23.0' # 星星评分
#pod 'RAMPaperSwitch'
#pod 'Koloda'
#pod 'JXMarqueeView' # 跑马灯

# 音视频
#pod 'BMPlayer'
#pod 'Player'

# web
#pod 'vapor'
#pod 'Swifter'
#pod 'SwiftSoup' # HTML解析
#pod 'Starscream' # WebSocket

# 其它
#pod 'URLNavigator' # 路由
#pod 'BluetoothKit' # 蓝牙
#pod 'Appz' # App跳转
#pod 'MonkeyKing' # 社会化分享
#pod 'Siren'  # 版本检查
#pod 'Tiercel' # 资源下载
#pod 'R.swift' # 资源使用
#pod 'SwiftGen' # 资源管理
#pod 'SwiftLocation'
#pod 'SwiftOCR'
#pod 'OAuthSwift'








# -------------- OC --------------
 
pod 'AFNetworking', '4.0.1'
pod 'DZNEmptyDataSet','1.8.1'
pod 'MJExtension','3.4.0'
pod 'MJRefresh','3.7.2'
pod 'Masonry','1.1.0'
pod 'SVProgressHUD','2.2.5'
pod 'MBProgressHUD', '1.1.0'
pod 'LEEAlert','1.5.1'
pod 'BRPickerView','2.7.6'

# ios14适配 SDWebImage升级到至少5.8.3版本,防止图片不显示、黑屏
pod 'SDWebImage','5.12.1'

#pod 'IQKeyboardManager','6.5.9'
# 选择图片依赖HXPhotoPickerSDWebImage,可以分开加或者使用: pod 'HXPhotoPicker/SDWebImage', '3.1.9'
#pod 'HXPhotoPicker'
#pod 'FDFullscreenPopGesture', '1.1' #全屏手势 拖进来了
#pod 'GKPhotoBrowser','2.2.1'
#pod 'PPBadgeView','2.1.0'  #小红点



# 更改所有第三方框架 Target 版本
post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '9.0'
    end
  end
end


end
安装之前的文件结构

安装成功之后的文件结构

之后打开项目都点击[项目名称].xcworkspace

遇到问题

安装时报错,需要更新CocoaPods

更新命令

 sudo gem update cocoapods 更新升级CocoaPods
关于 use_frameworks!

use_frameworks!和#use_frameworks!的区别、解决Swift项目中use_frameworks!冲突的问题

use_frameworks! -> static libraries 方式 -> .a

(1) swift项目cocoapods 默认 use_frameworks!
(2) OC项目cocoapods 默认 #use_frameworks!

1、用cocoapods导入OC框架到swift项目

(1)#use_frameworks! 必须创建头文件,在头文件里面 #import “xxx.h”
(2)use_frameworks! 如果有头文件,在头文件里面 #import “xxx/xxx.h”,其它swift文件中用到不需要再import;如果没有头文件,则在每个需要用到的swift文件里 import xxx。

2、用cocoapods导入swift框架到swift项目

(1)必须use_frameworks!
(2)不需要头文件,在需要用到框架的swift文件里 import xxx

3、用cocoapods导入OC框架到OC项目

(1)#use_frameworks! 在需要用到的文件里 #import “xxx.h”;也可以通过pch文件,用法类似swift中的头文件。
(2)use_frameworks! 与(1)类似,用法上没有区别。

总结:

(1)用swift项目考虑到会使用 OC 和 swift 两种第三方框架,所以Podfile中使用swift项目默认的 use_frameworks! 更为妥当,并且frameworks动态链接库具有一定的优势。

(2)可以建立一个Bridge头文件,用来import那些OC框架的.h文件:#import “xxx/xxx.h”。或者不建头文件,像swift框架一样,直接在需要用到的swift文件中import xxx。

解决Swift项目中use_frameworks!冲突的问题,详见:https://blog.csdn.net/feng2qing/article/details/73835805

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/996735.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存