Set By Set
新增框架專案
開啟終端機並且移動到你想要創立框架的位置(這邊舉例桌面)
1 | cd ~/Desktop |
建立專案
1 | pod lib create HelloMyFramwork |
你將會碰到幾個問題
- What platform do you want to use?? (你是為了什麼平台?)
[iOS / macOS]
- What language do you want to use?? (你想要使用什麼語言?)
[Swift / ObjC]
- Would you like to include a demo application with your library? (你是否想要在你的核心框架中給一個範例?)
[Yes / No]
- Which testing frameworks will you use? (你想使用哪種測試框架來進行測試?)
[Quick / None]
- Would you like to do view based testing?
[Yes / No]
開啟專案後刪除測試相關檔案
Pods
明明已經沒有選擇測試相關選項但仍然有出現測試檔案
- 原因未知
刪除框架專案中的「測試」目標與資料夾
Example
- 打開Example中的podfile
- 刪除測試的Target (圈起來的通通拿掉)
- 選擇Example專案並刪除測試Target
- 刪除測試資料夾
- 刪除Example中Pods資料夾底下與測試相關的檔案
- 刪除Example中Frameworks資料夾底下的測試框架
好,終於刪除所有測試的檔案了可以去泡杯咖啡抽跟菸喘一下 (累.PNG)
編輯podspec
- 修改框架支援OS版本
- 新增指令框架使用Swift語言
關閉Xcode 並且 pod install
每次有新增Flle或者XIB檔案等等操作都需要pod insasll
1 | pod install |
文件介紹
_Pods.xcodeproj
這是cocoapods的專案檔,裡面包含自己定義的框架
podspec
你可以把它想像成「描述框架文件」主要說明作者、版本、使用許可、倉庫地址甚至是支援版本
Example
範例專案,這個就不用多解釋了
你建立的框架名稱資料夾
這個範例的名稱叫做「HelloMyCocoapods」
這裡面基本上會包含兩個資料夾
- Assets
- 用來放置圖片、XIB等等資源
- Classes
- 用來放置File
- 用來放置File
File
從專案左側的資料夾可以看見一個很顯眼的File名叫「ReplaceMe」
這個命名也挺有意思,就是請你取代他
點開該文件發會發現空白,沒有任何說明(也可能官網有放說明…我沒看)
這邊有幾個狀況要特別再三說明,這些狀況我覺得其實應該大多數的網路文章都沒有仔細說明這塊
以下是我個人的經驗總結
新增資料夾
檔案很多,總該要有資料夾來做為分類管理
後面加入的Resopurce如果也需要資料夾分類管理,方法一樣
- 首先我們在我 Classes 底下建立兩個資料夾並命名為「Manager」與「Util」
- 回到框架的專案內並建立兩個File
新增File
在Pods底下直接cmd+N來新建立兩個.swift
直接指定好File到剛剛建立的資料夾底下
確認文件位置
- 確認好.swift的檔案有儲存到正確的位置
- 如果資料夾內沒有任何.swift的文件,後續pod install後該資料夾不會在Xcode中顯示
- 終端機 cd 到 Example資料夾底下
1
pod install
Podspec說明
1 | Pod::Spec.new do |s| |
依賴
如果自己開發的框架中有依賴另外一個第三方框架,可以在podspec中設定
1 | s.dependency "RxSwift" |
Resource
加入圖片資源檔案或者XIB
- 首先,選擇框架專案檔案
- 新增Target
- 選擇macOS後 右邊輸入
Bundle
並選擇 Bundle
Product Name 千萬不要與框架名稱相同
建議命名 框架名稱+Resource
- 例如:HelloMyCocoapodsresource
新增一個XIB作為測試,這邊命名為CocoaViewController
打開
HelloMyCocoapods.podspec
解開註解並編輯
替換Bundles的名字為剛才取的Product Name
並且宣告將要讀取的資源檔案
png,xib,xcassets
附檔名的前後要加入一個波浪括號
{}
(很多Blog就死不講,害新手打錯找半天)1
2
3s.resource_bundles = {
'HelloMyCocoapodsresource' => ['HelloMyCocoapods/Assets/*.{png,xib,xcassets}']
}
設定Base SDK
選擇「框架」專案中的Build Settings
項目Architectures裡頭的Base SDK改為「iOS」
在Assets
底下建立兩個資料夾
- 一個叫XIB一個叫IMG(名字隨便你取這邊只是範例)
- 點選你的框架底下的同名資料夾後
cmd + n
- 新增一個XIB,並且命名為CocoapodsViewController
- 新增時直接指定.xib放置的位置為剛剛建立的XIB資料夾
- 新增一個Asset Catalog 建議使用預設的
Media.xcassets
- 新增時直接指定.xcassets放置的位置為剛剛建立的IMG資料夾
把這兩個檔案「各別」放置到剛剛建立的XIB、IMG資料夾去
關閉Xcode 再次pod install
1 | pod install |
- 打開專案,應該要自動出現
Resources
這個資料夾,若有便是成功
新增圖片資源資料夾
作法一樣但要特別注意名稱,不要命名與Example一樣為
Images.xcassets
建議使用預設的
Media.xcassets
- 原因除了Xcode會替我們優化圖片的載入速度之外還有避免被逆向工程之後導出圖片的可能
~如圖,圖片都被壓縮在Assets.car裡面了,可能是我逆向的能力不足但我自己本身拆解不開….- 載入速度確實會比較快,但我還是找到破解Assets.car的方法了….
結束
基本上執行到這裡就算是完成了,Example的專案理當也可以使用框架中有開放的類別或者Resource的資源了