狠狠撸

狠狠撸Share a Scribd company logo
還是 CocoaPods
zonble
雖然?大家都會?用,但是有些?用法?大家?比較少?用
讓?一個
Private Pod Spec
相依另?一個
Private Pod Spec
我最近在幹嘛?
? 我有?一個 Flutter 專案,?用到?自?己寫的 Flutter Plug-in

? 我想把這個 Flutter Plug-in 裡頭的 Code 抽出來來變成?一個
Library,可以與其他的 iOS 專案共?用

? ?而這個 Library 本身?又相依於其他內部 Library…

? Flutter 使?用 CocoaPods 管理理 iOS 平台的 Plugin,?一個
Flutter iOS Plugin 本身就有?一個 Pod Spec,所以,我也得
在這個 Pod Spec 中,設定相關的 Dependencies
在 CocoaPods Spec 中相依於其
他 Library 的?方式
? 把另外?一個套件變成 submodule,然後包裝成
vendor_framework 或 vendor_library

? 可以事先編好包進去

? 或是?用 prepare_command,在安裝這個 pod 的時候編

? 把另外?一個套件,變成?一個 CocoaPods spec

? 這樣也?方便便其他專案使?用這個被相依的套件
在 App 中使?用 Private Pods
? 在 Pod?le 裡頭設定 git 的路路徑

? 像是:?
pod ‘MyLib’, :git => ‘git@…./MyLib.git’
但是在 PodSpec 裡頭不不?行行
Pod::Spec.new do |s|

s.name = "myLib"

s.version = "1.0.10"

s.author = {"Weizhong Yang" => "wzyang@kkbox.com"}

s.source = {:git => “git@…/myLib.git”, :tag =>
s.version.to_s}

s.dependency ‘anotherLib’, :git => ‘git@……’
end
你應該怎麼做?
? 你必須要將你的 Private Pod Specs,放進?自?己的 Pod
Repo 當中

? 在需要?用到這些 Private Pod Repo 時,額外?用 “source” 語
法,指定 Pod Repo 的位置
Pod Spec?
Pod Repo?
名詞回顧
? Pod Spec:個別的 CocoaPods 套件,像是
AFNetworking、SDWebImage… 就是?一個個的 Spec

? Pod Repo:?用來來存放 Pod Spec 的地?方,?大家主要使?用
https://github.com/CocoaPods/Specs.git

? Private Pod Repo:與前者功能相同,但是存放在?自?己內部
的空間裡
?一般開發 CocoaPods Spec
的流程
? pod lib create <NewLib>

? 寫程式、修改 PodSpec

? pod lib lint

? git commit、git push;git tag、git push —tags

? pod spec lint # 其實 pod repo push 的時候也會幫你做

? pod repo push # Push 到官?方的 Pod Repo 裡頭
將原本的 Pod Spec 推到
Private Pod Repo
? pod repo add MyRepo git@….repo.git

? pod repo push MyRepo

? (這邊是原本的 Pod Spec 沒有相依於其他 Private Pod
Spec 的狀狀況)
在 App 中使?用 Private Pod Repo
中的 Pod Spec
# 這樣設定 Pod?le :

source 'https://github.com/CocoaPods/Specs.git' #
原本的你還是可能?用到

source ‘git@…/MyRepo.git’ # 我們的 Repo

use_frameworks!

target 'MyAppTarget' do

pod 'MyLib'

end
開發?一個?用到 Private Pod Repo
中的 Pod Spec 的 Pod Spec
? 以下指令都需要額外加上 Pod 參參數數

? pod lib lint--sources="https://github.com/CocoaPods/
Specs.git, git@…/MyRepo.git"

? pod repo push MyLib --sources="https://github.com/
CocoaPods/Specs.git, git@…/MyRepo.git"
產?生?一個?用到 Private Pod
Repo 中的 Pod Spec 的 Pod
Spec 的?文件
產?生?一個?用到 Private Pod Repo 中
的 Pod Spec 的 Pod Spec 的?文件
? jazzy 是套?用來來產?生 Objective-C/Swift 專案?文件的?工具

? pod lib lint 與 pod repo push ?支援 —source 參參數數,但是
jazzy 並不不?支援,所以直接下 jazzy,就會遇到因為無法成
功通過編譯,?而無法讓 jazzy 產?生?文件的問題

? ?山不不轉路路轉:我們不不直接讓對 Pod Spec 下 jazzy 命令,?而
是對 Pod 中的 Example App 產?生?文件
產?生?一個?用到 Private Pod Repo 中
的 Pod Spec 的 Pod Spec 的?文件
? 在使?用 pod lib create 的時候,會幫你建?立?一個 Example
App,讓你示範如何使?用這個 Pod Spec

? 這個 Example App 會?用 pod install 建?立好所有相依的
Pod,所以?一定可以編起來來

? 對單元測試的 target 下 jazzy 應該也可以
設定 .jazzy.yaml
min_acl: public
readme: README.md
author: Weizhong Yang
clean:
output: docs
module: MyLib # 我們只需要這個 module 的?文件
xcodebuild_arguments:
[
“-workspace", # Example App 的 Work Space
“Example/MyLibExample.xcworkspace",
“-scheme", # Example App 的 Scheme
"MyLibExample",
"-sdk",
"iphonesimulator",
]
設定 .gitlab-ci.yaml
stages:

- deploy

pages:

stage: deploy

script:

- cd Example

- pod install

- cd ..

- jazzy

- mv docs/ public/

artifacts:

paths:

- public/
完成这些?工程之后
我有了了內部 GitLab 上的
Pod Repo
GitLab Pages 也會
幫我產?生?文件
然後每當我在 Flutter App 中
發現我這個 Library 有問題
? 改我的 CocoaPods 專案的 code、git commit、git push、
git tag、git push —tags

? pod repo push MyRepo —sources=….

? 去 Flutter Plugin 專案,改 dependency 的版本,git
commit、git push、更更新 pubspec.yaml 中的版號

? 去 Flutter App 專案,改 pubspec.yaml,然後下?
?utter packages upgrade 指令…
CocoaPods private repo

More Related Content

What's hot (20)

[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
Edward Kuo
?
JSDC 2015 React-Native 實戰
JSDC 2015 React-Native 實戰JSDC 2015 React-Native 實戰
JSDC 2015 React-Native 實戰
Sam Lee
?
Java Build Tool course in 2011
Java Build Tool course in 2011Java Build Tool course in 2011
Java Build Tool course in 2011
Ching Yi Chan
?
Angular 4 網站開發最佳實務 (Modern Web 2017)
Angular 4 網站開發最佳實務 (Modern Web 2017)Angular 4 網站開發最佳實務 (Modern Web 2017)
Angular 4 網站開發最佳實務 (Modern Web 2017)
Will Huang
?
CocoaPods 使用教學
CocoaPods 使用教學CocoaPods 使用教學
CocoaPods 使用教學
ShengWen Chiou
?
极速 Angular 开发:效能调校技巧 (ngChina 2019)
极速 Angular 开发:效能调校技巧 (ngChina 2019)极速 Angular 开发:效能调校技巧 (ngChina 2019)
极速 Angular 开发:效能调校技巧 (ngChina 2019)
Will Huang
?
開放原始碼 Ch2.1 app - oss - oss ide (ver1.2)
開放原始碼 Ch2.1   app - oss - oss ide (ver1.2)開放原始碼 Ch2.1   app - oss - oss ide (ver1.2)
開放原始碼 Ch2.1 app - oss - oss ide (ver1.2)
My own sweet home!
?
開發人員不可不知的 Windows Container 容器技術預覽
開發人員不可不知的 Windows Container 容器技術預覽開發人員不可不知的 Windows Container 容器技術預覽
開發人員不可不知的 Windows Container 容器技術預覽
Will Huang
?
[2018 .NET Conf].NET Core與Azure DevOps應用於企業開發
[2018 .NET Conf].NET Core與Azure DevOps應用於企業開發[2018 .NET Conf].NET Core與Azure DevOps應用於企業開發
[2018 .NET Conf].NET Core與Azure DevOps應用於企業開發
Edward Kuo
?
Intro to Git 投影片
Intro to Git 投影片Intro to Git 投影片
Intro to Git 投影片
Tony Yeh
?
React-Native share
React-Native shareReact-Native share
React-Native share
Eddie Hsu
?
Angular 开发技巧 (2018 ngChina 开发者大会)
Angular 开发技巧 (2018 ngChina 开发者大会)Angular 开发技巧 (2018 ngChina 开发者大会)
Angular 开发技巧 (2018 ngChina 开发者大会)
Will Huang
?
Rancher 快速打造叢集的解決方案
Rancher 快速打造叢集的解決方案Rancher 快速打造叢集的解決方案
Rancher 快速打造叢集的解決方案
Miles Chou
?
Android gradle 从入门到gg 3
Android gradle 从入门到gg 3Android gradle 从入门到gg 3
Android gradle 从入门到gg 3
Jun Liu
?
Extend the Kubernetes API with CRD and Custom API Server
Extend the Kubernetes API with CRD and Custom API ServerExtend the Kubernetes API with CRD and Custom API Server
Extend the Kubernetes API with CRD and Custom API Server
inwin stack
?
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)
Will Huang
?
API Token 入門
API Token 入門API Token 入門
API Token 入門
Andrew Wu
?
Visual Studio Code 快速上手指南
Visual Studio Code 快速上手指南Visual Studio Code 快速上手指南
Visual Studio Code 快速上手指南
Shengyou Fan
?
Rancher: 建立你的牧場艦隊
Rancher: 建立你的牧場艦隊Rancher: 建立你的牧場艦隊
Rancher: 建立你的牧場艦隊
Miles Chou
?
专案啟动与设定
专案啟动与设定专案啟动与设定
专案啟动与设定
Shengyou Fan
?
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
Edward Kuo
?
JSDC 2015 React-Native 實戰
JSDC 2015 React-Native 實戰JSDC 2015 React-Native 實戰
JSDC 2015 React-Native 實戰
Sam Lee
?
Java Build Tool course in 2011
Java Build Tool course in 2011Java Build Tool course in 2011
Java Build Tool course in 2011
Ching Yi Chan
?
Angular 4 網站開發最佳實務 (Modern Web 2017)
Angular 4 網站開發最佳實務 (Modern Web 2017)Angular 4 網站開發最佳實務 (Modern Web 2017)
Angular 4 網站開發最佳實務 (Modern Web 2017)
Will Huang
?
极速 Angular 开发:效能调校技巧 (ngChina 2019)
极速 Angular 开发:效能调校技巧 (ngChina 2019)极速 Angular 开发:效能调校技巧 (ngChina 2019)
极速 Angular 开发:效能调校技巧 (ngChina 2019)
Will Huang
?
開放原始碼 Ch2.1 app - oss - oss ide (ver1.2)
開放原始碼 Ch2.1   app - oss - oss ide (ver1.2)開放原始碼 Ch2.1   app - oss - oss ide (ver1.2)
開放原始碼 Ch2.1 app - oss - oss ide (ver1.2)
My own sweet home!
?
開發人員不可不知的 Windows Container 容器技術預覽
開發人員不可不知的 Windows Container 容器技術預覽開發人員不可不知的 Windows Container 容器技術預覽
開發人員不可不知的 Windows Container 容器技術預覽
Will Huang
?
[2018 .NET Conf].NET Core與Azure DevOps應用於企業開發
[2018 .NET Conf].NET Core與Azure DevOps應用於企業開發[2018 .NET Conf].NET Core與Azure DevOps應用於企業開發
[2018 .NET Conf].NET Core與Azure DevOps應用於企業開發
Edward Kuo
?
Intro to Git 投影片
Intro to Git 投影片Intro to Git 投影片
Intro to Git 投影片
Tony Yeh
?
React-Native share
React-Native shareReact-Native share
React-Native share
Eddie Hsu
?
Angular 开发技巧 (2018 ngChina 开发者大会)
Angular 开发技巧 (2018 ngChina 开发者大会)Angular 开发技巧 (2018 ngChina 开发者大会)
Angular 开发技巧 (2018 ngChina 开发者大会)
Will Huang
?
Rancher 快速打造叢集的解決方案
Rancher 快速打造叢集的解決方案Rancher 快速打造叢集的解決方案
Rancher 快速打造叢集的解決方案
Miles Chou
?
Android gradle 从入门到gg 3
Android gradle 从入门到gg 3Android gradle 从入门到gg 3
Android gradle 从入门到gg 3
Jun Liu
?
Extend the Kubernetes API with CRD and Custom API Server
Extend the Kubernetes API with CRD and Custom API ServerExtend the Kubernetes API with CRD and Custom API Server
Extend the Kubernetes API with CRD and Custom API Server
inwin stack
?
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)
Will Huang
?
API Token 入門
API Token 入門API Token 入門
API Token 入門
Andrew Wu
?
Visual Studio Code 快速上手指南
Visual Studio Code 快速上手指南Visual Studio Code 快速上手指南
Visual Studio Code 快速上手指南
Shengyou Fan
?
Rancher: 建立你的牧場艦隊
Rancher: 建立你的牧場艦隊Rancher: 建立你的牧場艦隊
Rancher: 建立你的牧場艦隊
Miles Chou
?
专案啟动与设定
专案啟动与设定专案啟动与设定
专案啟动与设定
Shengyou Fan
?

Similar to CocoaPods private repo (20)

Composer 套件管理
Composer 套件管理Composer 套件管理
Composer 套件管理
Shengyou Fan
?
Artifacts management with CI and CD
Artifacts management with CI and CDArtifacts management with CI and CD
Artifacts management with CI and CD
Chen-Tien Tsai
?
該怎麼樣(認真的)部署你的 Python Web 應用程式?
該怎麼樣(認真的)部署你的 Python Web 應用程式?該怎麼樣(認真的)部署你的 Python Web 應用程式?
該怎麼樣(認真的)部署你的 Python Web 應用程式?
Andy Dai
?
CICD Workshop 20180922
CICD Workshop 20180922CICD Workshop 20180922
CICD Workshop 20180922
Earou Huang
?
Docker 基礎介紹與實戰
Docker 基礎介紹與實戰Docker 基礎介紹與實戰
Docker 基礎介紹與實戰
Bo-Yi Wu
?
LargeCodebases_Lecture01_Getting Set Up.pptx
LargeCodebases_Lecture01_Getting Set Up.pptxLargeCodebases_Lecture01_Getting Set Up.pptx
LargeCodebases_Lecture01_Getting Set Up.pptx
ssusere42ed6
?
啟動 Laravel 與環境設定
啟動 Laravel 與環境設定啟動 Laravel 與環境設定
啟動 Laravel 與環境設定
Shengyou Fan
?
Phalcon2014 Startup
Phalcon2014 StartupPhalcon2014 Startup
Phalcon2014 Startup
Steve Luo
?
打造你專屬的Xcode plugin
打造你專屬的Xcode plugin打造你專屬的Xcode plugin
打造你專屬的Xcode plugin
Yuhua Chen
?
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
Wen-Tien Chang
?
使用 Dify 做 AI 应用 - 接触2周的一些小想法小心得分享 Ruby Tuesday Shanghai
使用 Dify 做 AI 应用 - 接触2周的一些小想法小心得分享 Ruby Tuesday Shanghai使用 Dify 做 AI 应用 - 接触2周的一些小想法小心得分享 Ruby Tuesday Shanghai
使用 Dify 做 AI 应用 - 接触2周的一些小想法小心得分享 Ruby Tuesday Shanghai
Eric Guo
?
Node分享 展烨
Node分享 展烨Node分享 展烨
Node分享 展烨
tb-vertical-guide
?
Python 于 webgame 的应用
Python 于 webgame 的应用Python 于 webgame 的应用
Python 于 webgame 的应用
勇浩 赖
?
4. Go 工程化实践-0124-v2.pdf
4. Go 工程化实践-0124-v2.pdf4. Go 工程化实践-0124-v2.pdf
4. Go 工程化实践-0124-v2.pdf
ssuserd6c7621
?
使用 laravel 的前與後
使用 laravel 的前與後使用 laravel 的前與後
使用 laravel 的前與後
Shengyou Fan
?
Phalcon the fastest php framework 阿土伯
Phalcon   the fastest php framework 阿土伯Phalcon   the fastest php framework 阿土伯
Phalcon the fastest php framework 阿土伯
Hash Lin
?
Phalcon phpconftw2012
Phalcon phpconftw2012Phalcon phpconftw2012
Phalcon phpconftw2012
Rack Lin
?
Composer 套件管理
Composer 套件管理Composer 套件管理
Composer 套件管理
Shengyou Fan
?
Artifacts management with CI and CD
Artifacts management with CI and CDArtifacts management with CI and CD
Artifacts management with CI and CD
Chen-Tien Tsai
?
該怎麼樣(認真的)部署你的 Python Web 應用程式?
該怎麼樣(認真的)部署你的 Python Web 應用程式?該怎麼樣(認真的)部署你的 Python Web 應用程式?
該怎麼樣(認真的)部署你的 Python Web 應用程式?
Andy Dai
?
CICD Workshop 20180922
CICD Workshop 20180922CICD Workshop 20180922
CICD Workshop 20180922
Earou Huang
?
Docker 基礎介紹與實戰
Docker 基礎介紹與實戰Docker 基礎介紹與實戰
Docker 基礎介紹與實戰
Bo-Yi Wu
?
LargeCodebases_Lecture01_Getting Set Up.pptx
LargeCodebases_Lecture01_Getting Set Up.pptxLargeCodebases_Lecture01_Getting Set Up.pptx
LargeCodebases_Lecture01_Getting Set Up.pptx
ssusere42ed6
?
啟動 Laravel 與環境設定
啟動 Laravel 與環境設定啟動 Laravel 與環境設定
啟動 Laravel 與環境設定
Shengyou Fan
?
Phalcon2014 Startup
Phalcon2014 StartupPhalcon2014 Startup
Phalcon2014 Startup
Steve Luo
?
打造你專屬的Xcode plugin
打造你專屬的Xcode plugin打造你專屬的Xcode plugin
打造你專屬的Xcode plugin
Yuhua Chen
?
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
Wen-Tien Chang
?
使用 Dify 做 AI 应用 - 接触2周的一些小想法小心得分享 Ruby Tuesday Shanghai
使用 Dify 做 AI 应用 - 接触2周的一些小想法小心得分享 Ruby Tuesday Shanghai使用 Dify 做 AI 应用 - 接触2周的一些小想法小心得分享 Ruby Tuesday Shanghai
使用 Dify 做 AI 应用 - 接触2周的一些小想法小心得分享 Ruby Tuesday Shanghai
Eric Guo
?
Python 于 webgame 的应用
Python 于 webgame 的应用Python 于 webgame 的应用
Python 于 webgame 的应用
勇浩 赖
?
4. Go 工程化实践-0124-v2.pdf
4. Go 工程化实践-0124-v2.pdf4. Go 工程化实践-0124-v2.pdf
4. Go 工程化实践-0124-v2.pdf
ssuserd6c7621
?
使用 laravel 的前與後
使用 laravel 的前與後使用 laravel 的前與後
使用 laravel 的前與後
Shengyou Fan
?
Phalcon the fastest php framework 阿土伯
Phalcon   the fastest php framework 阿土伯Phalcon   the fastest php framework 阿土伯
Phalcon the fastest php framework 阿土伯
Hash Lin
?
Phalcon phpconftw2012
Phalcon phpconftw2012Phalcon phpconftw2012
Phalcon phpconftw2012
Rack Lin
?

More from Weizhong Yang (17)

Flutter BLE
Flutter BLEFlutter BLE
Flutter BLE
Weizhong Yang
?
怎樣在 Flutter app 中使用 Google Maps
怎樣在 Flutter app 中使用 Google Maps怎樣在 Flutter app 中使用 Google Maps
怎樣在 Flutter app 中使用 Google Maps
Weizhong Yang
?
关於延长役期这件事情
关於延长役期这件事情关於延长役期这件事情
关於延长役期这件事情
Weizhong Yang
?
iPlayground: CarPlay and MFI Hearing Aids
iPlayground: CarPlay and MFI Hearing AidsiPlayground: CarPlay and MFI Hearing Aids
iPlayground: CarPlay and MFI Hearing Aids
Weizhong Yang
?
那些年被蘋果 Ban 掉的 API
那些年被蘋果 Ban 掉的 API那些年被蘋果 Ban 掉的 API
那些年被蘋果 Ban 掉的 API
Weizhong Yang
?
苦集滅道:透過開發客製 Sketch Plug-in 改善產品設計流程
苦集滅道:透過開發客製 Sketch Plug-in  改善產品設計流程苦集滅道:透過開發客製 Sketch Plug-in  改善產品設計流程
苦集滅道:透過開發客製 Sketch Plug-in 改善產品設計流程
Weizhong Yang
?
使用 switch/case 重構程式碼
使用 switch/case 重構程式碼使用 switch/case 重構程式碼
使用 switch/case 重構程式碼
Weizhong Yang
?
怎樣寫出比較沒有問題的 Code
怎樣寫出比較沒有問題的 Code怎樣寫出比較沒有問題的 Code
怎樣寫出比較沒有問題的 Code
Weizhong Yang
?
Aspect Oriented Programming
Aspect Oriented ProgrammingAspect Oriented Programming
Aspect Oriented Programming
Weizhong Yang
?
Mac OS X 與 iOS 的 Audio API
Mac OS X 與 iOS 的 Audio APIMac OS X 與 iOS 的 Audio API
Mac OS X 與 iOS 的 Audio API
Weizhong Yang
?
Python 的文件系統
Python 的文件系統Python 的文件系統
Python 的文件系統
Weizhong Yang
?
Input Method Kit
Input Method KitInput Method Kit
Input Method Kit
Weizhong Yang
?
Refactoring
RefactoringRefactoring
Refactoring
Weizhong Yang
?
Core animation
Core animationCore animation
Core animation
Weizhong Yang
?
怎樣在 Flutter app 中使用 Google Maps
怎樣在 Flutter app 中使用 Google Maps怎樣在 Flutter app 中使用 Google Maps
怎樣在 Flutter app 中使用 Google Maps
Weizhong Yang
?
关於延长役期这件事情
关於延长役期这件事情关於延长役期这件事情
关於延长役期这件事情
Weizhong Yang
?
iPlayground: CarPlay and MFI Hearing Aids
iPlayground: CarPlay and MFI Hearing AidsiPlayground: CarPlay and MFI Hearing Aids
iPlayground: CarPlay and MFI Hearing Aids
Weizhong Yang
?
那些年被蘋果 Ban 掉的 API
那些年被蘋果 Ban 掉的 API那些年被蘋果 Ban 掉的 API
那些年被蘋果 Ban 掉的 API
Weizhong Yang
?
苦集滅道:透過開發客製 Sketch Plug-in 改善產品設計流程
苦集滅道:透過開發客製 Sketch Plug-in  改善產品設計流程苦集滅道:透過開發客製 Sketch Plug-in  改善產品設計流程
苦集滅道:透過開發客製 Sketch Plug-in 改善產品設計流程
Weizhong Yang
?
使用 switch/case 重構程式碼
使用 switch/case 重構程式碼使用 switch/case 重構程式碼
使用 switch/case 重構程式碼
Weizhong Yang
?
怎樣寫出比較沒有問題的 Code
怎樣寫出比較沒有問題的 Code怎樣寫出比較沒有問題的 Code
怎樣寫出比較沒有問題的 Code
Weizhong Yang
?
Aspect Oriented Programming
Aspect Oriented ProgrammingAspect Oriented Programming
Aspect Oriented Programming
Weizhong Yang
?
Mac OS X 與 iOS 的 Audio API
Mac OS X 與 iOS 的 Audio APIMac OS X 與 iOS 的 Audio API
Mac OS X 與 iOS 的 Audio API
Weizhong Yang
?

Recently uploaded (7)

原版昆士兰大学毕业证成绩单鲍蚕文凭学位证办理
原版昆士兰大学毕业证成绩单鲍蚕文凭学位证办理原版昆士兰大学毕业证成绩单鲍蚕文凭学位证办理
原版昆士兰大学毕业证成绩单鲍蚕文凭学位证办理
oybyk
?
阿伯丁大学毕业证(鲍辞础学位证学历认证国外留学)办理
阿伯丁大学毕业证(鲍辞础学位证学历认证国外留学)办理阿伯丁大学毕业证(鲍辞础学位证学历认证国外留学)办理
阿伯丁大学毕业证(鲍辞础学位证学历认证国外留学)办理
kaozytf
?
Cantonmade 2025 Hotel Supplier Catalog: Technical Specs for Engineers & Integ...
Cantonmade 2025 Hotel Supplier Catalog: Technical Specs for Engineers & Integ...Cantonmade 2025 Hotel Supplier Catalog: Technical Specs for Engineers & Integ...
Cantonmade 2025 Hotel Supplier Catalog: Technical Specs for Engineers & Integ...
RayChan91
?
匹兹堡大学毕业证(笔滨罢罢学位证范本毕业证书)办理
匹兹堡大学毕业证(笔滨罢罢学位证范本毕业证书)办理匹兹堡大学毕业证(笔滨罢罢学位证范本毕业证书)办理
匹兹堡大学毕业证(笔滨罢罢学位证范本毕业证书)办理
kaozytf
?
Build_With_AI_2025 Gemini 2.0 New Function
Build_With_AI_2025  Gemini 2.0 New FunctionBuild_With_AI_2025  Gemini 2.0 New Function
Build_With_AI_2025 Gemini 2.0 New Function
kevinchiu59
?
原版维多利亚大学硕士毕业证成绩单鲍痴颈肠文凭学位证办理
原版维多利亚大学硕士毕业证成绩单鲍痴颈肠文凭学位证办理原版维多利亚大学硕士毕业证成绩单鲍痴颈肠文凭学位证办理
原版维多利亚大学硕士毕业证成绩单鲍痴颈肠文凭学位证办理
oybyk
?
原版蒙特利尔大学毕业证文凭证书鲍诲别惭文凭学位证办理
原版蒙特利尔大学毕业证文凭证书鲍诲别惭文凭学位证办理原版蒙特利尔大学毕业证文凭证书鲍诲别惭文凭学位证办理
原版蒙特利尔大学毕业证文凭证书鲍诲别惭文凭学位证办理
oybyk
?
原版昆士兰大学毕业证成绩单鲍蚕文凭学位证办理
原版昆士兰大学毕业证成绩单鲍蚕文凭学位证办理原版昆士兰大学毕业证成绩单鲍蚕文凭学位证办理
原版昆士兰大学毕业证成绩单鲍蚕文凭学位证办理
oybyk
?
阿伯丁大学毕业证(鲍辞础学位证学历认证国外留学)办理
阿伯丁大学毕业证(鲍辞础学位证学历认证国外留学)办理阿伯丁大学毕业证(鲍辞础学位证学历认证国外留学)办理
阿伯丁大学毕业证(鲍辞础学位证学历认证国外留学)办理
kaozytf
?
Cantonmade 2025 Hotel Supplier Catalog: Technical Specs for Engineers & Integ...
Cantonmade 2025 Hotel Supplier Catalog: Technical Specs for Engineers & Integ...Cantonmade 2025 Hotel Supplier Catalog: Technical Specs for Engineers & Integ...
Cantonmade 2025 Hotel Supplier Catalog: Technical Specs for Engineers & Integ...
RayChan91
?
匹兹堡大学毕业证(笔滨罢罢学位证范本毕业证书)办理
匹兹堡大学毕业证(笔滨罢罢学位证范本毕业证书)办理匹兹堡大学毕业证(笔滨罢罢学位证范本毕业证书)办理
匹兹堡大学毕业证(笔滨罢罢学位证范本毕业证书)办理
kaozytf
?
Build_With_AI_2025 Gemini 2.0 New Function
Build_With_AI_2025  Gemini 2.0 New FunctionBuild_With_AI_2025  Gemini 2.0 New Function
Build_With_AI_2025 Gemini 2.0 New Function
kevinchiu59
?
原版维多利亚大学硕士毕业证成绩单鲍痴颈肠文凭学位证办理
原版维多利亚大学硕士毕业证成绩单鲍痴颈肠文凭学位证办理原版维多利亚大学硕士毕业证成绩单鲍痴颈肠文凭学位证办理
原版维多利亚大学硕士毕业证成绩单鲍痴颈肠文凭学位证办理
oybyk
?
原版蒙特利尔大学毕业证文凭证书鲍诲别惭文凭学位证办理
原版蒙特利尔大学毕业证文凭证书鲍诲别惭文凭学位证办理原版蒙特利尔大学毕业证文凭证书鲍诲别惭文凭学位证办理
原版蒙特利尔大学毕业证文凭证书鲍诲别惭文凭学位证办理
oybyk
?

CocoaPods private repo

  • 3. 我最近在幹嘛? ? 我有?一個 Flutter 專案,?用到?自?己寫的 Flutter Plug-in ? 我想把這個 Flutter Plug-in 裡頭的 Code 抽出來來變成?一個 Library,可以與其他的 iOS 專案共?用 ? ?而這個 Library 本身?又相依於其他內部 Library… ? Flutter 使?用 CocoaPods 管理理 iOS 平台的 Plugin,?一個 Flutter iOS Plugin 本身就有?一個 Pod Spec,所以,我也得 在這個 Pod Spec 中,設定相關的 Dependencies
  • 4. 在 CocoaPods Spec 中相依於其 他 Library 的?方式 ? 把另外?一個套件變成 submodule,然後包裝成 vendor_framework 或 vendor_library ? 可以事先編好包進去 ? 或是?用 prepare_command,在安裝這個 pod 的時候編 ? 把另外?一個套件,變成?一個 CocoaPods spec ? 這樣也?方便便其他專案使?用這個被相依的套件
  • 5. 在 App 中使?用 Private Pods ? 在 Pod?le 裡頭設定 git 的路路徑 ? 像是:? pod ‘MyLib’, :git => ‘git@…./MyLib.git’
  • 6. 但是在 PodSpec 裡頭不不?行行 Pod::Spec.new do |s| s.name = "myLib" s.version = "1.0.10" s.author = {"Weizhong Yang" => "wzyang@kkbox.com"} s.source = {:git => “git@…/myLib.git”, :tag => s.version.to_s} s.dependency ‘anotherLib’, :git => ‘git@……’ end
  • 7. 你應該怎麼做? ? 你必須要將你的 Private Pod Specs,放進?自?己的 Pod Repo 當中 ? 在需要?用到這些 Private Pod Repo 時,額外?用 “source” 語 法,指定 Pod Repo 的位置
  • 9. 名詞回顧 ? Pod Spec:個別的 CocoaPods 套件,像是 AFNetworking、SDWebImage… 就是?一個個的 Spec ? Pod Repo:?用來來存放 Pod Spec 的地?方,?大家主要使?用 https://github.com/CocoaPods/Specs.git ? Private Pod Repo:與前者功能相同,但是存放在?自?己內部 的空間裡
  • 10. ?一般開發 CocoaPods Spec 的流程 ? pod lib create <NewLib> ? 寫程式、修改 PodSpec ? pod lib lint ? git commit、git push;git tag、git push —tags ? pod spec lint # 其實 pod repo push 的時候也會幫你做 ? pod repo push # Push 到官?方的 Pod Repo 裡頭
  • 11. 將原本的 Pod Spec 推到 Private Pod Repo ? pod repo add MyRepo git@….repo.git ? pod repo push MyRepo ? (這邊是原本的 Pod Spec 沒有相依於其他 Private Pod Spec 的狀狀況)
  • 12. 在 App 中使?用 Private Pod Repo 中的 Pod Spec # 這樣設定 Pod?le : source 'https://github.com/CocoaPods/Specs.git' # 原本的你還是可能?用到 source ‘git@…/MyRepo.git’ # 我們的 Repo use_frameworks! target 'MyAppTarget' do pod 'MyLib' end
  • 13. 開發?一個?用到 Private Pod Repo 中的 Pod Spec 的 Pod Spec ? 以下指令都需要額外加上 Pod 參參數數 ? pod lib lint--sources="https://github.com/CocoaPods/ Specs.git, git@…/MyRepo.git" ? pod repo push MyLib --sources="https://github.com/ CocoaPods/Specs.git, git@…/MyRepo.git"
  • 14. 產?生?一個?用到 Private Pod Repo 中的 Pod Spec 的 Pod Spec 的?文件
  • 15. 產?生?一個?用到 Private Pod Repo 中 的 Pod Spec 的 Pod Spec 的?文件 ? jazzy 是套?用來來產?生 Objective-C/Swift 專案?文件的?工具 ? pod lib lint 與 pod repo push ?支援 —source 參參數數,但是 jazzy 並不不?支援,所以直接下 jazzy,就會遇到因為無法成 功通過編譯,?而無法讓 jazzy 產?生?文件的問題 ? ?山不不轉路路轉:我們不不直接讓對 Pod Spec 下 jazzy 命令,?而 是對 Pod 中的 Example App 產?生?文件
  • 16. 產?生?一個?用到 Private Pod Repo 中 的 Pod Spec 的 Pod Spec 的?文件 ? 在使?用 pod lib create 的時候,會幫你建?立?一個 Example App,讓你示範如何使?用這個 Pod Spec ? 這個 Example App 會?用 pod install 建?立好所有相依的 Pod,所以?一定可以編起來來 ? 對單元測試的 target 下 jazzy 應該也可以
  • 17. 設定 .jazzy.yaml min_acl: public readme: README.md author: Weizhong Yang clean: output: docs module: MyLib # 我們只需要這個 module 的?文件 xcodebuild_arguments: [ “-workspace", # Example App 的 Work Space “Example/MyLibExample.xcworkspace", “-scheme", # Example App 的 Scheme "MyLibExample", "-sdk", "iphonesimulator", ]
  • 18. 設定 .gitlab-ci.yaml stages: - deploy pages: stage: deploy script: - cd Example - pod install - cd .. - jazzy - mv docs/ public/ artifacts: paths: - public/
  • 22. 然後每當我在 Flutter App 中 發現我這個 Library 有問題 ? 改我的 CocoaPods 專案的 code、git commit、git push、 git tag、git push —tags ? pod repo push MyRepo —sources=…. ? 去 Flutter Plugin 專案,改 dependency 的版本,git commit、git push、更更新 pubspec.yaml 中的版號 ? 去 Flutter App 專案,改 pubspec.yaml,然後下? ?utter packages upgrade 指令…