Pod:知識點匯總

國內cocoapods鏡像:
https://gitee.com/mirrors/CocoaPods-Specs.git

從podspec打包靜態庫

安裝cocoapods-packager

gem install cocoapods-packager

然后,執行

pod package podname.podspec

pod search 搜索類庫失敗

重裝CocoaPods后,執行 pod search MJExtension提示如下:

[!] Unable to find a pod with name, author, summary, or description matching xxxxx

解決方法:
先執行rm ~/Library/Caches/CocoaPods/search_index.json刪除索引,再執行pod setup,現在就可以正常的pod search xxx了。

補充: pod search xxx中,對xxx大小寫不敏感。


驗證

1、驗證.podspec會先測試本地.podspec文件是否存在語法錯誤。測試成功再根據.podspec文件找到遠端倉庫對應的版本clone到本地并進行配置。最后測試文件是否能夠編譯成功。

2、再次驗證
如果錯誤發生在.podspec中。當修改完時,不需要再次提交就可以直接驗證。如果錯誤發生在代碼中,則需要再次提交才能驗證。

3、pod spec相對于pod lib 會更為精確,pod lib相當于只驗證一個本地倉庫,pod spec會同時驗證本地倉庫和遠程倉庫。

4、—sources變量的使用
當你的.podspec文件依賴其他私有庫時要引入source
pod spec lint React.podspec —allow-warnings —sources=lcoal_spec_name,master
lint通過之后push的時候依然需要—sources
pod push local_spec_name React.podspec —allow-warning —source=local_spec_name,master


# s.libraries 表示這個pod依賴的 蘋果官方的庫,也就是類似libstdc++.a ,libsqlite.a 等等的a文件; 
# s.vendored_libraries 就表示用戶自己的a文件,比如新浪微博SDK的libWeiboSDK.a, 微信libWeChatSDK.a; 
# s.frameworks 表示pod依賴的 蘋果的framework, 比如 UIKit,SystemConfiguration等等 
# s.vendored_frameworks, 表示pod依賴的自己的framework,比如QQSDK的TencentOpenAPI.framework,JSPatch熱更新JSPatchPlatform.framework; 
# .a 或者 libz.tbd 后綴不要,名字里lib開頭的三個字母不要,libz.tbd 應寫成 'z'

例如:

# s.library = 'z' 
s.libraries = 'iconv','sqlite3','stdc++','z' 
s.vendored_libraries = 'Resources/lib/**/*.{a}' 
s.vendored_frameworks = 'Resources/Framework/**/*.{framework}'

依賴版本:
//使用本地索引庫里的最新的版本
pod 'SSZipArchive' 

//指定使用某個版本
pod 'SSZipArchive', '2.1.3'

//2.1.3與2.2版本之間的最新版本
pod 'SSZipArchive', '~> 2.1.3'

//使用大于等于2.1.3的最新版本(可以是2.1.4)
pod 'SSZipArchive', '>= 2.1.3'

Build配置
//只有在debug模式下才使用PonyDebugger庫
  pod 'SSZipArchive', :configuration => 'Debug'
Subspecs 配置
#Subspecs 配置, 只使用pod中某一個或者某一些子pod 庫
//使用QueryKit下的Attribute庫: pod 'QueryKit/Attribute' 
//使用QueryKit下的Attribute庫和QuerySet庫: pod 'QueryKit', :subspecs => ['Attribute', 'QuerySet']
設置pod庫
//使用master分支 pod 'AFNetworking', :git => 'https://github.com/gowalla/AFNetworking.git' 
//使用指定分支 pod 'AFNetworking', :git => 'https://github.com/gowalla/AFNetworking.git', :branch => 'dev' 
//使用指定tag pod 'AFNetworking', :git => 'https://github.com/gowalla/AFNetworking.git', :tag => '0.7.0' 
//使用某一次commit pod 'AFNetworking', :git => 'https://github.com/gowalla/AFNetworking.git', :commit => '082f8319af
設置podSpec的來源
pod 'AFNetworking', :podspec => 'https://example.com/AFNetworking.podspec'
本地pod庫(cocoapod會在指定的文件夾下找podspec,所以當前文件夾下一定要有podspec文件)
pod 'AFNetworking', :path => '~/Documents/AFNetworking'
inherit!:給當前target設置集成模式
:complete : 全部繼承父target 
:none :全部不繼承 
:search_paths :只繼承父target的searchPaths 

例如:

target 'App' do
   target 'AppTests' do 
      inherit! :search_paths 
    end 
end
Target配置

platform: 兩個參數。一個是name, 一個是target

name屬性
osx for OS X, :ios for iOS, :tvos for tvOS, or :watchos for watchOS.

target:版本

例如:

platform :ios, '4.0'
platform :ios
inhibit_all_warnings : 忽略所有庫中的警告,也可以指定某一個具體庫的警告。

例如:

//全部忽略
platform :ios, '8.0'

inhibit_all_warnings!

source 'https://github.com/CocoaPods/Specs.git'

target 'TestPod' do

  pod 'SummerOCProjectFrame', '~> 0.0'

end

//某一個忽略
pod 'SummerOCProjectFrame', '~> 0.0', :inhibit_warnings => true
Source : 可以指定CocoaPods Master Repository,也可以自定義的Repository。

例如:

source 'https://github.com/artsy/Specs.git'
source 'https://github.com/CocoaPods/Specs.git'
pre_install:在pod下載完初始化前可以通過它做邏輯處理。

例如:

pre_install do |installer|
  # Do something fancy!
end
post_install:在形成project后寫入本地前可以通過它做邏輯處理。

比如設置target的build setting, 代碼如下:

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['GCC_ENABLE_OBJC_GC'] = 'supported'
    end
  end
end
def name end。 如果project依賴的庫很多,比如有自己開發的庫,有第三方的庫,可以對這些庫進行分類。例如:
def myPods
pod xxx
pod xxx1
pod xxx2
end

def thirdPods
pod yyy
pod yyy1
pod yyy2
end

target 'xxx' do
  myPods
  thirdPods
end

關于實戰,可參考我的另一篇文章:向CocoaPods提交開源代碼


其他還可閱讀:

number1
number2

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容