久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

iOS組件化實(shí)踐:CocoaPods創(chuàng)建本地Pod全流程指南

iOS組件化實(shí)踐:CocoaPods創(chuàng)建本地Pod全流程指南 iOS 組件化之使用 Cocoapods 創(chuàng)建本地 Pod做 iOS 組件化改造這段時(shí)間踩得最深、也最值得拿出來說的一個(gè)環(huán)節(jié)就是用 Cocoapods 搭一套本地 Pod 的開發(fā)調(diào)試環(huán)境。很多人一開始就把目標(biāo)定在私有 Pod 倉庫、二進(jìn)制化、遠(yuǎn)程 Spec Repo 上結(jié)果連最基礎(chǔ)的“怎么把現(xiàn)有代碼拆成一個(gè) Pod”都沒理清楚。實(shí)際上組件化的第一步應(yīng)該是先把模塊切出來用本地 Pod 把邊界定死再考慮后續(xù)的遠(yuǎn)成、版本、二進(jìn)制分發(fā)。這篇文章就把我實(shí)際創(chuàng)建本地 Pod 的過程、Podspec 里每個(gè)字段怎么填、集成時(shí)遇到哪些坑完整過一遍。這套東西適合誰如果你負(fù)責(zé)的 App 已經(jīng)超過幾十個(gè)文件業(yè)務(wù)模塊之間靠隱式依賴互相調(diào)用編譯越來越慢或者你只是想學(xué)習(xí)組件化但不想一上來就搭一套復(fù)雜的基礎(chǔ)設(shè)施那本地 Pod 就是最順手的入口。它不需要你維護(hù) Git 倉庫、不需要配置 trunk、不需要 CI 腳本只要一個(gè) Pods 目錄就能讓工程結(jié)構(gòu)和依賴關(guān)系立刻變得清晰很多。1. 組件化思路與本地 Pod 的定位1.1 組件化到底在解決什么問題先說一個(gè)我觀察了很久的現(xiàn)象很多團(tuán)隊(duì)說要組件化但實(shí)際代碼里還是一個(gè)大 Target 堆到底所有文件都編譯進(jìn)同一個(gè) AppView、Model、網(wǎng)絡(luò)層、工具類混合在一起。這種結(jié)構(gòu)在業(yè)務(wù)少的時(shí)候沒問題等業(yè)務(wù)線多起來痛點(diǎn)會(huì)集中在四個(gè)地方。第一是編譯速度。每改一行代碼整個(gè)工程都可能觸發(fā)重新編譯尤其是越來越多人往 App 里塞第三方庫和分類。第二是團(tuán)隊(duì)協(xié)作。不同小組改同一個(gè)文件、同一個(gè)宏定義代碼合并時(shí)沖突頻發(fā)誰也不敢動(dòng)公共代碼。第三是測(cè)試成本。業(yè)務(wù)模塊互相牽連單元測(cè)試很難把某個(gè)模塊孤立出來跑回歸全靠手工點(diǎn) App。第四是代碼復(fù)用。App 和擴(kuò)展、多個(gè) App 之間想共用一段邏輯只能靠復(fù)制粘貼修 bug 要改好幾個(gè)地方。組件化不是玄學(xué)它的核心是把代碼按業(yè)務(wù)或功能切成獨(dú)立模塊每個(gè)模塊只暴露必要的接口模塊之間通過明確的依賴關(guān)系通信。這樣一來編譯可以被緩存團(tuán)隊(duì)可以獨(dú)立維護(hù)各自的模塊測(cè)試也可以只拉取模塊源碼來跑。而 Cocoapods 恰好提供了現(xiàn)成的“模塊化容器”每個(gè) Pod 就是一個(gè)獨(dú)立模塊。1.2 為什么第一步要落在本地 Pod 上我見過一上來就搭私有 Spec Repo 的團(tuán)隊(duì)效果并不理想。原因很簡單倉庫、權(quán)限、CI、版本發(fā)布流程還沒成熟模塊已經(jīng)拆了一堆結(jié)果管理成本比收益還大。本地 Pod 的好處在于你用:path指向一個(gè)本地目錄CocoaPods 會(huì)把這個(gè)目錄里的源碼直接編譯進(jìn)你的工程不需要任何遠(yuǎn)端基礎(chǔ)設(shè)施。對(duì)剛起步的項(xiàng)目來說本地 Pod 有三點(diǎn)優(yōu)勢(shì)非常明顯因?yàn)樵创a在本地改完 Pod 里的代碼直接生效調(diào)試效率跟單工程一模一樣。Pod 和宿主工程是兩個(gè)物理目錄天然形成了“模塊邊界”誰依賴誰一目了然。后續(xù)要推到遠(yuǎn)端倉庫只需要給 podspec 配一個(gè) Git 地址改動(dòng)量很小。所以我的建議是組件化的第一階段全部用本地 Pod 做模塊拆分。先把“邊界”這件事做好再談“版本管理”。1.3 本地 Pod、私有 Pod 與二進(jìn)制 Pod 的演進(jìn)關(guān)系這里需要把三個(gè)概念理清楚。本地 Pod 是通過:path引入的依賴的代碼就在你本機(jī)某個(gè)文件夾里適合開發(fā)和調(diào)試。私有 Pod 是指 podspec 存放在私有 Spec Repo源碼也托管在私有 Git 倉庫里其他同事可以通過 pod 命令拉取。二進(jìn)制 Pod 則是把源碼編譯成 framework 后作為靜態(tài)庫或動(dòng)態(tài)庫打成 zip再掛到 Spec Repo 下適合對(duì)編譯速度有極端要求的團(tuán)隊(duì)。這三者的關(guān)系并不是并列的而是組件化成熟度的三個(gè)階段。一開始用本地 Pod業(yè)務(wù)結(jié)構(gòu)穩(wěn)定后再把代碼推到 Git 倉庫、建立私有 Spec Repo等到基礎(chǔ)庫基本不變時(shí)再考慮二進(jìn)制化。本地 Pod 是這條路徑上的起點(diǎn)也是風(fēng)險(xiǎn)最低、最容易驗(yàn)證方案的一步。2. 使用 Cocoapods 創(chuàng)建本地 Pod 的標(biāo)準(zhǔn)姿勢(shì)2.1 手動(dòng)創(chuàng)建還是用 pod lib createCocoaPods 提供了一個(gè)專門用來生成 Pod 模板的命令pod lib create。它會(huì)展開一個(gè)交互式詢問包括你要用 Swift 還是 Objective-C、要不要生成測(cè)試框架、要不要 GUI 調(diào)試等然后自動(dòng)生成完整的目錄骨架包括.podspec、README、LICENSE、Example工程和Sources目錄。但我實(shí)際用下來的感受是pod lib create直接生成一套模板里面有大量當(dāng)前用不到的文件。比如它會(huì)生成一個(gè)Example文件夾里面帶一個(gè)需要用pod install才能跑起來的 Demo 工程還要配置 target。對(duì)只是想快速把舊代碼拆成 Pod 的場(chǎng)景來說這一步有點(diǎn)重。所以我更推薦的做法是先手動(dòng)創(chuàng)建最簡結(jié)構(gòu)只需要四樣?xùn)|西一個(gè)源文件目錄、一個(gè).podspec文件、一個(gè)存放資源的Assets文件夾可選、一個(gè)用來測(cè)試的宿主工程。等你能跑通本地 Pod 的接入流程再回頭看pod lib create生成的模板也不會(huì)一頭霧水。2.2 標(biāo)準(zhǔn)的本地 Pod 目錄長什么樣我通常會(huì)在主工程同級(jí)放一個(gè)Modules文件夾里面按模塊名再建子文件夾例如Workspace/ ├── MyApp.xcworkspace ├── MyApp/ │ ├── MyApp.xcodeproj │ ├── Podfile │ └── Sources/ ├── Modules/ │ └── JYNetwork/ │ ├── JYNetwork.podspec │ ├── Sources/ │ │ ├── JYNetwork.h │ │ ├── JYNetworkManager.m │ │ └── JYNetworkManager.h │ └── Assets/ │ └── network_placeholder.png這個(gè)結(jié)構(gòu)里MyApp是宿主工程JYNetwork是一個(gè)待拆出來的網(wǎng)絡(luò)模塊。每個(gè)模塊自帶 podspec 和源碼目錄宿主工程完全不直接持有模塊源碼。有一點(diǎn)要注意目錄名、podspec 文件名和 Pod 的名字盡量保持一致。如果你創(chuàng)建了一個(gè)JYNetwork文件夾但 podspec 文件叫Network.podspec其他同事看起來就會(huì)很混亂。按 CocoaPods 慣例podspec文件應(yīng)該命名為模塊名.podspec。2.3 Podfile 里如何引入本地 Pod接入本地 Pod 的寫法很簡單在 Podfile 里用:path指向模塊目錄platform :ios, 11.0 target MyApp do use_frameworks! # 本地模塊 pod JYNetwork, :path ../Modules/JYNetwork end這里的關(guān)鍵參數(shù)是:path。它告訴 CocoaPods 不要從遠(yuǎn)程 Spec Repo 拉取這個(gè) Pod 的版本而是直接用指定目錄作為源碼來源。執(zhí)行pod install后Pod 的源碼并不會(huì)拷貝到別的目錄而是通過 Pods 工程去引用../Modules/JYNetwork/Sources下的文件。需要特別注意的是:path使用的是相對(duì)路徑而這個(gè)相對(duì)路徑的基準(zhǔn)是 Podfile 所在的目錄。如果你把 Podfile 放在MyApp里那:path就應(yīng)該從MyApp路徑開始寫。換過電腦、移動(dòng)過目錄后只要這個(gè)相對(duì)位置不變就能正常pod install。3. Podspec 配置每個(gè)字段有什么用填錯(cuò)了會(huì)怎樣podspec 是 CocoaPods 的“身份證”里面聲明了這個(gè) Pod 叫什么、版本多少、包含哪些文件、依賴了誰。很多人直接復(fù)制別人的 podspec 模板字段倒是填滿了但不知道每個(gè)字段背后對(duì)應(yīng)的行為。我挑幾個(gè)真正影響構(gòu)建的字段展開講。3.1 基本信息與版本號(hào)Pod::Spec.new do |s| s.name JYNetwork s.version 0.1.0 s.summary A light network layer based on NSURLSession. s.homepage https://example.com/JYNetwork s.license { :type MIT, :file LICENSE } s.author { JY jyexample.com } s.source { :git , :tag s.version.to_s } s.ios.deployment_target 11.0 end這里最容易忽略的是s.version。本地 Pod 在:path模式下不太會(huì)嚴(yán)格讀取版本號(hào)但后續(xù)發(fā)布到私有 Spec Repo 時(shí)podspec 的版本號(hào)必須和 Git tag 一一對(duì)應(yīng)。比如 podspec 里寫0.1.0Git 就必須打一個(gè)0.1.0的 tag否則pod install時(shí)找不到對(duì)應(yīng)版本。另外一個(gè)容易踩坑的字段是s.source。本地模式時(shí)source里寫什么幾乎不影響編譯但如果你把它留空或者填一個(gè)不存在的地址將來發(fā)布時(shí)就會(huì)報(bào)錯(cuò)。我建議從一開始就填上真實(shí)倉庫地址沒有倉庫就先填:git 并在代碼注釋里提醒自己后續(xù)補(bǔ)上。3.2 文件匹配這個(gè) Pod 編譯哪些源碼資源怎么打包s.source_files Sources/**/*.{h,m} s.public_header_files Sources/**/*.h s.resource_bundles { JYNetwork [Assets/*.png] }source_files定義的是參與編譯的源文件模式**表示遞歸匹配子目錄*.{h,m}表示只匹配.h和.m文件。假如你在這個(gè)目錄里放了 Swift 文件但source_files只匹配h/mSwift 文件就不會(huì)被編譯進(jìn)去。同理如果 Pod 是一個(gè)純 Swift 庫就得寫成*.swift。resource_bundles則是把資源文件單獨(dú)打成一個(gè) bundle。注意這里我推薦用resource_bundles而不是resources原因是resources會(huì)把資源文件直接放進(jìn)主 bundle容易出現(xiàn)文件重名覆蓋resource_bundles會(huì)為這個(gè) Pod 單獨(dú)生成一個(gè)JYNetwork.bundle加載方式需要用Bundle(for:)或Bundle(path:)取資源。一個(gè)經(jīng)常出現(xiàn)的問題是圖片放在Assets.xcassets里然后通過[UIImage imageNamed:xxx]加載。在本地主工程里這樣做沒問題但到了 Pod 里資源被打包進(jìn)獨(dú)立 bundleimageNamed:默認(rèn)只往主 bundle 找所以就找不到圖了。后面我會(huì)在常見問題里說怎么解決。3.3 依賴、系統(tǒng)框架與子組件s.dependency AFNetworking, ~ 4.0 s.frameworks [Security, SystemConfiguration] s.libraries [z, sqlite3]dependency是 Pod 之間的依賴關(guān)系聲明。宿主 App 引用JYNetworkJYNetwork依賴 AFNetworking那pod install時(shí)就會(huì)把 AFNetworking 一并拉進(jìn)來。版本號(hào)建議約束在合理范圍比如~ 4.0表示大于等于 4.0 且小于 5.0既能保證功能一致又允許小版本更新。如果 Pod 使用了系統(tǒng)框架就得在frameworks里加對(duì)應(yīng)名字。很多人在本地寫代碼時(shí)沒報(bào)錯(cuò)因?yàn)樗拗鞴こ唐渌a已經(jīng) link 過 Security 框架了但 Pod 單獨(dú)編譯或發(fā)布后就變成Undefined symbols或者找不到頭文件。libraries同理如果用了zlib、sqlite3要顯式聲明s.libraries [z, sqlite3]。還有一個(gè)進(jìn)階參數(shù)subspec。當(dāng)你覺得一個(gè) Pod 太大了想拆成“默認(rèn)只帶核心功能可選帶擴(kuò)展功能”時(shí)就可以用 subspecs.subspec Core do |core| core.source_files JYNetwork/Core/**/*.{h,m} end s.subspec Mock do |mock| mock.source_files JYNetwork/Mock/**/*.{h,m} mock.dependency JYNetwork/Core end這樣其他 Pod 在聲明依賴時(shí)就可以寫dependency JYNetwork/Mock只有這個(gè) Pod 才需要把 Mock 相關(guān)代碼編譯進(jìn)去。這對(duì)提升構(gòu)建速度、控制模塊體積很有幫助但同樣也意味著你對(duì)模塊邊界的把控要更明確。3.4 編譯選項(xiàng)與 Swift 版本s.swift_version 5.0 s.pod_target_xcconfig { OTHER_LDFLAGS -lObjC }swift_version用來聲明 Pod 的 Swift 版本混編項(xiàng)目里尤其重要。如果你在本地機(jī)器用 Swift 5.7 編譯但其他同事用 Xcode 13 對(duì)應(yīng)的 Swift 5.5就可能出現(xiàn)“目標(biāo)不支持該 Swift 版本”的提示。pod_target_xcconfig是 CocoaPods 給當(dāng)前 Pod 的 target 設(shè)置的編譯參數(shù)。最常見的一項(xiàng)是OTHER_LDFLAGS -lObjC它解決的是靜態(tài)庫中 Objective-C 分類Category不加載的問題。如果你的 Pod 里大量使用 Category 擴(kuò)展系統(tǒng)類不加這一項(xiàng)運(yùn)行時(shí)會(huì)看不到擴(kuò)展方法。4. 本地 Pod 的集成與調(diào)試實(shí)戰(zhàn)4.1 初次接入從零開始跑通鏈路準(zhǔn)備一個(gè)全新的測(cè)試工程我用最小化流程演示一遍。第一步新建 Xcode 工程MyApp選擇 iOS App 模板。這一步的工程路徑和是否使用 Core Data 都不重要。第二步在工程文件同級(jí)創(chuàng)建Podfile寫入platform :ios, 11.0 target MyApp do use_frameworks! pod JYNetwork, :path ../Modules/JYNetwork end第三步在指定路徑創(chuàng)建JYNetwork模塊目錄和 podspec 文件放一個(gè)簡單的源文件。第四步終端執(zhí)行pod install。如果終端提示Using JYNetwork (0.1.0)說明本地 Pod 已經(jīng)被解析。第五步CocoaPods 會(huì)生成MyApp.xcworkspace之后必須通過.xcworkspace打開工程而不是.xcodeproj。這里我要提一個(gè)很多人栽過跟頭的細(xì)節(jié)pod install和pod update的區(qū)別。首次使用本地 Pod 時(shí)如果依賴是新增的可以用pod install但如果你改了冒號(hào)路徑、新增了 subspec或者 podspec 里的 source 發(fā)生了變化pod install可能不會(huì)重新解析已經(jīng)存在的依賴項(xiàng)。這時(shí)候要執(zhí)行pod update JYNetwork強(qiáng)制刷新這個(gè) Pod。4.2 在宿主工程里調(diào)用 Pod 中的代碼假設(shè)JYNetwork模塊里有一個(gè)NetworkManager#import JYNetwork/JYNetworkManager.h [JYNetworkManager sendRequestWithURL:url completion:^{ ... }];編譯前CocoaPods 會(huì)自動(dòng)配置 header search path所以你可以直接用尖括號(hào)引用 Pod 的頭文件。但前提是這些頭文件在public_header_files范圍內(nèi)。.m文件里的私有頭文件可以放在 podspec 的 source_files 里但不要放進(jìn) public_header_files否則會(huì)造成接口過度暴露。Swift 項(xiàng)目里調(diào)用本地 Pod 的 Swift 類時(shí)需要用import JYNetwork調(diào)用 Objective-C 類時(shí)則依賴 CocoaPods 生成的橋接頭文件。一個(gè)常見的坑是use_frameworks!打開后Swift 和 OC 混編的 Pod 里類名帶了模塊名前綴像JYNetwork.NetworkManager寫代碼時(shí)容易漏掉模塊名。4.3 改代碼后如何快速生效本地 Pod 最大的優(yōu)勢(shì)就是“改完就能用”。因?yàn)?path是指向源碼目錄的所以你修改JYNetwork文件夾里的代碼后重啟 App、重新編譯改動(dòng)就會(huì)生效不需要重新pod install。不過有一個(gè)例外如果你改的是 podspec 里描述的“文件集合”——比如往Sources/Api/目錄里新增了一個(gè).h文件原有source_files已經(jīng)能遞歸匹配到它那沒問題但如果新增的目錄后綴不在匹配范圍內(nèi)你就得改 podspec然后執(zhí)行pod install讓 CocoaPods 重新同步文件引用。另外建議在宿主工程里配置一個(gè)Configuration文件把 Debug 環(huán)境下的 DEBUG 宏打開這樣本地調(diào)試時(shí)能輸出網(wǎng)絡(luò)日志或者 Mock 數(shù)據(jù)Release 環(huán)境自動(dòng)關(guān)掉。這種開關(guān)放在 Pod 里比散落在宿主工程里要規(guī)范得多。5. 從本地 Pod 走向規(guī)范與發(fā)布5.1 本地 Pod 的版本號(hào)怎么管理本地模式不會(huì)強(qiáng)制校驗(yàn)版本號(hào)但我不建議因此偷懶。把版本號(hào)從0.1.0開始維護(hù)每完成一定量的改動(dòng)就遞增遵循語義化版本規(guī)范主版本號(hào)不兼容的 API 修改次版本號(hào)向后兼容的功能新增修訂號(hào)向后兼容的問題修復(fù)這樣做的意義是當(dāng)你后面把 podspec 推送到遠(yuǎn)程倉庫、開始用 tag 管理版本時(shí)歷史包袱已經(jīng)很小。而且宿主工程 Podfile 里可以同時(shí)使用:path和指定的版本號(hào)比如pod JYNetwork, :path ../Modules/JYNetwork在開發(fā)環(huán)境不加版本限制但發(fā)布的時(shí)候 Podfile 會(huì)鎖住一個(gè)精確版本。5.2 依賴關(guān)系的可視化與檢查一個(gè)模塊的 Podspec 里依賴了誰基本代表了模塊的上游邊界。本地 Pod 模式下最好養(yǎng)成的習(xí)慣是每個(gè) Pod 只依賴業(yè)務(wù)無關(guān)的基礎(chǔ)庫不直接依賴別的業(yè)務(wù) Pod 的具體實(shí)現(xiàn)。想快速看整個(gè)工程依賴樹用命令pod install --verbose或者在工程目錄下打開 Podfile.lock里面會(huì)記錄當(dāng)前解析后的 Pod 及版本。如果某個(gè)模塊依賴關(guān)系特別詭異比如基礎(chǔ)庫依賴了登錄模塊說明邊界設(shè)計(jì)有問題一定要趁早發(fā)現(xiàn)。我還有一個(gè)習(xí)慣沒事就跑一遍pod outdated。本地 Pod 模式下它不一定能檢測(cè)出變化但至少能幫你確認(rèn)當(dāng)前各個(gè) Pod 的來源是路徑依賴還是版本依賴避免后面某個(gè)模塊意外變成了遠(yuǎn)程版本。5.3 把本地 Pod 推到遠(yuǎn)程倉庫當(dāng)業(yè)務(wù)穩(wěn)定、代碼該獨(dú)立交付時(shí)就可以給本地 Pod 增加遠(yuǎn)程來源。核心步驟只有三步先在 Git 倉庫里創(chuàng)建JYNetwork倉庫把模塊源碼推上去并打上0.1.0的 tag。然后 cd 到模塊目錄用pod lib lint JYNetwork.podspec --allow-warnings做本地校驗(yàn)。校驗(yàn)通過后用pod repo push YOUR_PRIVATE_REPO JYNetwork.podspec把 podspec 推送到私有 Spec Repo。最后修改 Podfilepod JYNetwork, ~ 0.1.0去掉:path然后就變成普通遠(yuǎn)程 Pod 的用法。這個(gè)過程我經(jīng)歷過很多次最大的感受是只要本地階段把 podspec 寫得規(guī)范、源碼目錄結(jié)構(gòu)保持清晰切換到遠(yuǎn)程只要幾分鐘。6. 調(diào)試本地 Pod 過程中的高頻問題速查6.1 pod install 后還是找不到類這種情況一般分兩類。第一類是source_files沒包含新增的文件檢查 podspec 里的路徑匹配規(guī)則第二類是頭文件只在模塊內(nèi)部可見卻沒被聲明為 public外部工程用尖括號(hào)導(dǎo)入時(shí)自然找不到。查看是否匹配到文件可以在模塊目錄執(zhí)行pod install后打開 Pods 工程里的 Development Pods 分組看文件是否出現(xiàn)在對(duì)應(yīng) target 里。6.2 圖片和 xib 資源加載不出來這是本地 Pod 最容易踩的坑。前面我提到過Pod 使用resource_bundles打包資源后資源不在主 bundle 中。這里給出一個(gè)通用解決辦法以JYNetwork模塊里的network_placeholder.png為例正確加載方式是NSBundle *bundle [NSBundle bundleWithURL:[[NSBundle bundleForClass:[self class]] URLForResource:JYNetwork withExtension:bundle]]; UIImage *image [UIImage imageNamed:network_placeholder inBundle:bundle compatibleWithTraitCollection:nil];如果是純 Swift 片段可以用Bundle(identifier:)或者直接通過Bundle(for:)獲取。如果你在使用 xib/storyboard 時(shí)也出現(xiàn)找不到 view 的情況大概率是資源 bundle 沒對(duì)上換成上述方式一般都能解決。6.3 用了 use_frameworks! 之后靜態(tài)庫和動(dòng)態(tài)庫的混編問題在 Podfile 里寫use_frameworks!后Pod 會(huì)編譯成動(dòng)態(tài) framework嚴(yán)格說是靜態(tài) framework 或動(dòng)態(tài) framework取決于配置這會(huì)影響#import的方式和啟動(dòng)速度。如果你的工程較多使用 OC且不想引入動(dòng)態(tài)庫的額外符號(hào)暴露可以把use_frameworks!改為use_frameworks! :linkage :static表示強(qiáng)制使用靜態(tài)鏈接。這個(gè)配置對(duì)本地 Pod 同樣生效能省掉一部分動(dòng)態(tài)庫的加載開銷也能避免部分組件因?yàn)閯?dòng)態(tài)庫機(jī)制導(dǎo)致的-ObjC問題。6.4 pod install 時(shí)出現(xiàn) “Unable to find a specification for X”檢查是不是某個(gè)依賴沒有明確來源。如果你本地 Pod 依賴了一個(gè)遠(yuǎn)程私有 Pod但 Podfile 里沒有配置對(duì)應(yīng)的sourceCocoaPods 就找不到 spec。解決方法是把倉庫地址寫到 Podfile 頂部source https://github.com/CocoaPods/Specs.git source gityour-git-server:specs-repo.git注意即使是本地依賴也可以聲明多個(gè) sourceCocoaPods 會(huì)從這些倉庫里拉取其他 Pod 的 spec。6.5 pod install 后 Pods 目錄里的文件沒更新遇到這種情況先別反復(fù)執(zhí)行pod install因?yàn)檫@不是安裝命令的問題。刪掉 Pods 目錄和 Podfile.lock重新執(zhí)行pod install通常能解決大部分本地依賴的緩存問題。如果還不行用pod cache clean清理 CocoaPods 的緩存。6.6 本地 Pod 里用 Category 但運(yùn)行時(shí)不生效還記得 3.4 里的OTHER_LDFLAGS -lObjC吧。Category 編譯進(jìn)靜態(tài)庫后如果沒有-ObjC鏈接參數(shù)鏈接器不會(huì)加載包含 Category 的 object 文件運(yùn)行時(shí)就會(huì)表現(xiàn)成“方法不見了”。遇到這類問題先看編譯設(shè)置里是否包含-ObjC或-all_load再逐個(gè)排查是哪個(gè) pod target 出的問題。6.7 多個(gè)本地 Pod 之間互相依賴怎么辦這是組件化深入后的必經(jīng)之路。比如JYHomePage依賴JYNetworkPodspec 里寫s.dependency JYNetworkPodfile 里可以同時(shí)寫pod JYHomePage, :path ../Modules/JYHomePage pod JYNetwork, :path ../Modules/JYNetworkCocoaPods 會(huì)自動(dòng)解析本地路徑之間的依賴。此時(shí)要特別留意版本號(hào)的一致性如果JYHomePage的 podspec 里寫了dependency JYNetwork, ~ 1.0而本地 JYNetwork 的 podspec version 還停留在0.9.0CocoaPods 會(huì)直接報(bào)版本沖突。解決辦法是在:path模式下兩個(gè) Pod 的 version 都要維護(hù)好或者將依賴版本寫成不帶太多限制的范圍比如 0.9.0。最后分享兩個(gè)我自己的習(xí)慣組件化沒有標(biāo)準(zhǔn)答案但有些坑是共通的。第一我始終建議 Pod 里不要直接訪問宿主工程的單例對(duì)象或全局宏。如果模塊需要宿主提供配置定義協(xié)議讓宿主去注入這樣模塊才不會(huì)變成下一個(gè)“大雜燴”。第二剛拆出來的 Pod 不要急著去做代碼整潔度重構(gòu)先把文件搬過去、編譯能過、行為不變?nèi)缓笤俪榻涌?、刪冗余。拆分和重構(gòu)同時(shí)做一旦出問題很難判斷是哪一步引入的。我見過太多團(tuán)隊(duì)一開始把組件化做成“新建幾個(gè)文件夾”最后又退回單工程就是因?yàn)檫吔鐩]立住。而本地 Pod 恰恰是那個(gè)能把邊界變成文件系統(tǒng)、變成 podspec、變成依賴樹的方案。至少在我的實(shí)踐里從第一行pod XXX, :path ../Modules/XXX寫完組件化的路就已經(jīng)往前邁了一大截。多試幾個(gè)模塊等依賴圖清晰了后面再做二進(jìn)制化、CI 自動(dòng)化都會(huì)順很多。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
国内毛片无码一级毛片| 欧美性爱另类综合| 性爱动态120秒| 久久久九九| 九九九九九九九九九国产精品| 色香综合| 日本成人在线不卡一区二区三区| 96AV久久久| 天美传媒婬乱在| 97欧美色| 福利操逼| 在线观看AV不卡| 亚洲日韩乱码中文无码蜜桃臀网站 | 精品久久久久久中文| 1769一区| 精品人妻夜夜草| 夜夜做夜夜爽精品视频| 超碰欧美| 久久精品国产亚洲粉嫩| 毛片中心9视频99| 欧美性爱网97| 日韩在线欧美精品一区二区| 国产性感骚丝袜在线| 久久久久密臀视频| 999精品国产高清一区二区| 91无遮挡| 日日日日日| 亚洲人妻中文高清| 亚瑟国产精品久久无码| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 精品视频一区二区| www.色五月| 天美91| 亚洲天天艹| 国产精品人妻免费精品| 天天干人妻| 国产亚洲精品第一最新| 欧美女同在线| 欧美白嫩女HD| 麻豆这里只有精品| 亚洲色宗合| 91啪啪视频| 中文字幕在线观| 九九久久一区二区三区| 家庭乱伦性爱av| 男人的天堂va在线| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 国产免费永久精品无码| 97超碰欧美| 极品美女福利在线观看| 亚洲色婷婷久久久综合日本| 久久AV色| 97色欧州| 女同在线视频一区| 婷婷五月天福利| 东北少妇高潮zzzz| 亚洲天堂资源在线| 操逼999| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 99re在线视频| 久/久精品99看9| 欧美性生活男人的天堂| 国产高清自拍| 97超碰欧美精品| 四虎884a| 日本大香蕉| 91九九九小逼| 超碰98综合网| 综合亚洲情色| 蜜桃臀一区二区三区久久| 精品国产嫩穴视频| 天堂麻豆天美| 91丝袜熟女| 亚洲一区二区三区麻豆传媒| 丰满翘臀美女影院视频| 成人精品一区二区三区| 天天操福利视频综合网站| 在线亚洲丝袜视频网站| 玖玖综合网| 嫩草 我啊~嗯~在线| 亚洲男人的天堂AV| 伊人96在线| 丰满搜索结果 -第18页- 久久高清无码 | 91男人天堂网| 翔田千里A片一区二区| 国产呦精品系列在线观看| 91综合在线| 日韩性爱毛片操骚逼| 亚洲最大成人a毛毛片| 福利操逼| 99这里有精品| 丰满精品人妻少妇久久字幕| 嗯嗯嗯啊啊在线观看| 久久精品无码一区二区三区| 亚洲影视综合| 熟女精品一区二区三区| 国产av热热色| 日韩有码专区| 精品成人动漫一区二区| 99精品在线观看| 精品久久久无码| 激情小说亚洲视频| 高清有码一区二区| 日本特黄f c2| 久久亚洲影院一区二区| 中文字幕av片| 综合av社区| 日韩性爱1级片视频| av网页一区二区三区| 一级黄色牲爱A级片| 亚91亚洲网| 极品美女嘿咻| www网站黄| 亚洲九月丁香| 日本裸体久久色噜噜| 嗯嗯啊啊的视频| 欧美性爱91| 五月婷婷六月丁香| 96久久久久| 日韩在线性爱免费视频| 樱花草社区www中国| 精品对白久久不卡| 屌逼传媒| 亚洲综合首页| 欧美不卡在线美女| 99999精品| 激情综合婷婷| 蜜臀久久99精品久久久久| h4610国产人妻| 亚州中文字幕超碰97| 日韩99精品视频综合区| 美女高潮视频91| 亚洲影院成人| 国内毛片四区| 日韩在线视频1234| 国产高清吃奶免费视频网站| 99黄页网站| 9/A片| 激情抓乳插进去啪啪啪日韩| 任我爽在线视频免费观看| 日韩不卡a级视频专区| 极品后入免费视频| 中文自拍欧美影视| 91丨国产丨白浆秘 洗澡动漫| 亚洲色图大香| 丁香六月啪| 狠狠婷婷亚洲中文综合久久| 精品九九九九九九九九九| 国产美女mm131爽爽爽爽| AV在线播放网址| 99综合网| 在线观看国产黄色| 日韩综合成人免费视频| 人妻少妇久久中文字幕一区二区 麻豆 | 一区二区三区一亚洲中文字幕、综合区灬| 人妻精品综合中文字幕在线 | 国产欧美日韩精品中文| 国产精品99精品视频网站| 99最新日韩偷拍视频| 强奸a片网| 国产肏逼网站| 天天噜| 色网1| 老女人碰碰在线碰碰视频| 欧洲大香蕉| 国产青青美女玩逼视频| 道久久五香丁月婷婷激情综合| 99综合自拍| 搡老女人老妇女老妇老熟女怎么读| 亚洲av国产av综合av卡| 亚洲色欧美| 亚洲成成熟女人综合一区二区| 日韩精品电影| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 美女黄码视频午夜| 日本蜜桃| 国产热av| 亚洲阿v天堂在线| 自拍六区| 成人AV超碰免费在线| 欧美精品日韩久久久九| 97亚洲色图| 国产一区二区三区中文字幕| 伊人久久在线视频观看| 黄色十八禁| 日韩色图 一区二区| 少妇无码999| 黄色片,com| 热久久这里只有精品| 天天看高清麻豆| 国产三级片在线观看| 国产Aα| 极品五月天噜噜| 天天日美女的B| 欧美97在线欧| 91蜜桃婷婷狠狠久久综合9色| 特级大荫道BBwBBwBBW| 精品二区三四区五电影 | 欧美性,色九九| 破处bbq| 91在线精品一区二区三区| 18禁精品网站在线看| 狠狠干狠狠干| 久草精品在线| 91九色精品熟女内射| 亚洲色图伊人网| 成人26uuu| 91人妻超碰| 九99久久| 全球成人中文在线| 91中文精品日韩欧美在线 | 色香综合| 九九亚洲| 久久久四区| 成人婷婷丁香| 亚洲网站一区二区在线| 啊好爽受不了无码| av强奸乱轮| 干B| 国产乱人伦AVA麻豆软件.| 青青草啪啪网| 可以在线观看AV的网站| 欧美激情黑人| 天天爽夜夜操| 久久久久久九九九九九| 日本视频一区二区三区| 黄色av播放免不| 黄片aaaaa一区| 国产久久日| 天堂中文日本在线观看| 久久9精品网站| 婷婷99狠狠| 白嫩白嫩的午夜九久久久久久久久久久久成人剧场 | 啊啊啊啊啊啊在线看| 无码九九| 久久婷婷五月综合| 久久精品28| 欧美伊人久久综合网| 91视频成人福利网站在线一区 | 久久久久久人妻| 农村女一级毛卡片| 日本人体九九九九九九| 人妻精品视频一区二区三区| 超碰激情808| 日本精品一级二级三级| 老女人老91妇女老热女| 自拍偷拍2025在线观看| 成人国产二区三区在线,男女精品。| 色婷婷久久| 91丝袜人妻| 日本日逼视频网| 人人妻人人澡人人爽久久av| 91原创在线观看| 亚洲成人av电影在线| 99热精品在线观看| 国产亚卅97| av日韩在线观看电影| 亚洲欲色| 91国产丝袜美女| 啊啊啊啊嗯嗯嗯用力好爽| 一级乱伦网站| 久久久精选| 97人人中文网| 操碰91| 国产偷拍网站| 欧美性爱超碰97| 欧美日韩少妇色情| 亚洲第一综合| 在线看的av| 日本不卡一区二区三区| 少妇被玩视频二三区| 久热精品在线国产| 翔田千里A片一区二区| 天天草AV| 自拍视频大全亚洲专媒视频/一区二区三区 | 亚洲天堂另类小说男人| 中文字幕免费看大片| 超碰午夜| 超碰综合色| 性做久久久久久免费观看软件| 青青草原成人| 久草男人天堂| 天天夜夜久久| 射丝袜高跟鞋99| 丁香五月成人| 天天躁日日躁AAAXX| 97精品视频| 十八禁电影伊人网| 中文字幕免费在线观看| 日韩久久三区| 91站街按摩店老熟女熟女| 成人小说视频在线精品欧美| 久久久96| 欧美一二三| 高潮9999外国| 97超级色碰碰| 天天欧美| 国产视频第2页| 另类 综合 日韩 欧美 亚洲| 99国产天美| 99热超碰| 国产大学生高潮在线播放| 日韩av不卡在线观看| 亚洲,日韩,欧美,成人播放| 97综合在线| 伊人国产AV| 久久后入制服| 欧洲色综合| 色欲人妻一区二区在线| 亚洲和欧美裸体美女双飞视频| 色性荡荡荡荡视频| 久久久999日本大片| 校园春色 男人天堂| 天天综合~91入口| 8050无码八戒| 日韩无码专区| 五月天玖玖资源站| 亚洲成人性爱网站在线播放| 国产av激情无码久久天堂| 国产综合日韩伦理| 亚洲第二页| 欧美日韩亚洲少妇寂寞影院正在播放 | 99久久精品无码一区二区毛片免费| 91性色| 男女啪啪啪18禁网站| 欧美巨大性舒爽顶到了| 国产91av在线播放| 美女熟妇色| 九九AV| 色欲Av人妻精品一区二| 国产狂喷潮在线精品| 精品人妻一区二区三区四区石在线| 97色网| 日本一二区不卡| 嗯嗯啊啊操我| www.久久最新地址| 尤物视频一区| 丁香六月综合激情| 97se综合网| 夜夜狼人妻| 美女黑人91神马| 91精品国产91久久久久久久久久久久| 亚洲同性aV综合| 91美女视频直播| 蜜臀久久99精品久久久| 小视频国产| 5月婷婷6月六月丁香| 人人插人人搞人人操| 五月天婷婷综合| 人人爱操| 啊啊啊快操我视频| 阿姨一区二区免费视频-高清正片西瓜视频下载app-T450AV | 992大香蕉| 美女性91| 再深点灬舒服灬太大了添视频| 亚洲黄色影视| 941超碰| 蜜臀99久| 亚洲91在线播放影院| 欧美人妻少妇| 国产精品白丝在线播放| 一级黄色牲爱A级片| 精品国产99| 精品人妻1区| 亚洲蜜臀视频精品久久| 欧美在线官网| 日韩一级欧美一级在线观看| 久久乐| 欧美自拍偷拍综合图片| 亚洲精品一区二区三区在线播放| 天天天天天超碰| av久日| 欧美亚洲影视| 色吧五月| 91精品大奶人妻| 欧美日韩亚洲一区二区在线观看| 欧美成人精品一区二区男人蜜臀 | 久草这里只有精品| 中文字幕第95页| 69人妻精品丰满熟女区| 国产有码一区| 97视频在线免费看| 97人妻色| 久久色激情一区二区三区| 91 亚洲 欧美 日韩 国产 综合| 超碰综合97在线| 96国产污污污丝袜| 怡春苑东京热| 五十路熟女工口 | 高清无码在线播放网站| 中文字幕在线免费观看2| 成人一二三区| 久久东京热久久| 欧美热图99| 色婷婷日韩精品一区二区三区| 午夜毛片高清免费不卡| 欧美日日人人天天| 日曰骚久久精品| 熟妇人妻一二三区免费| 蜜臀久久99精品久久久久久-DVD| 狠狠入| 在线视频资源| 欧美春色| 久久久久九九九| 黑人免费福利视频| 国产自产一区视频在线| 日韩av在线播放不卡| 黄色毛片A片| 天天看,天天做| 国产极品一区二区三区三州| 十八禁视频网站| 怡红院视频在线| 啊啊啊好湿久久| 人人综合| 超碰无码五月97| 亚洲色图欧美色图在线播放| 大香蕉中文网| 26uuu最新| 国产视频一区二区三区在线免费观看 | 五月天AV资源| 另类图片综合| 亚洲无码?第一页| 人、人、摸,人、人、草| www.色婷婷色综合| 嗯啊啊啊轻点视频| 日本一片一区| 欧美色吧综合| 亚洲国产97| 欧洲黄色网| 情趣丝袜无码操逼视频| 日本色色色色色视频| 色激情五月天| 丝袜天堂| 久9爱精品| 九九碰九九爱97超| 人妻系列无码专区中文有码| 亚洲精品丝袜-不卡成人免费……| 四虎永久在线精品免费网址 | 热的中文 热的有码 热的国产| 天美麻豆黄色录像| 亚洲欧美色图小说| 午夜色婷婷| 欧美精品久久96人妻无码| 欧美日韩婷婷中文| AV有码在线| 欧美淫穴| 人人操人人操人妻人| 久久草大香蕉| 日韩97超碰中文字幕| 97频视在线| 伊人网高清| 国产女人和拘做爰视频 | 国产伦精品| 日本三级一区二区 在线| 色欧美天天| 1024手机看片欧美日韩| 操逼无码操逼| 9999久久久久| 嗯嗯啊啊日韩精品| 亚欧性爱无码| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 国产400孕妇孕交群| 亚洲欧洲综合视频在线| 日韩电影免费网站麻豆视频| 人妻日日干| 亚洲男人的天堂在线看| 激情五月天色播| 日日做夜狠狠爱欧美黑人| 清纯唯美亚洲综合| 大香蕉黄色一区| 色在线69堂| 日韩中文字幕国产| 天天操女人| 国产午夜福利合集| 天天干天天操天天干天天操| 久久久成人精品| 国产精品99精品视频网站| 99精品在线| 天天久久久久久| 日本护士高潮| 在线黄色污污网站| 人人人摸人人| 蜜臀亚洲中文| 欧洲视频在线| 在线视频日韩欧美国产| 色九九综合AV| 1769国内精品视频| 亚洲天堂第一页| 国产成人五月天丁香花| 久久美女国产| 99自拍B亚洲| 黑人综合网| 久久久久成人蜜桃精品| 精品人妻av区天天看片| 自拍鲍鱼一区在线高清观看免费| 99精品无码| 婷婷综合网| 麻豆亚洲AV成人无码久久精品| 日本综合久久| 伊人9| 九九热精品| 78m啪啪啪| 亚洲一区中文字幕久久,果冻传媒一区二区天美传媒 | 婷婷干黄色| 美女大乳久久久久久久女人18| 绯色一区二区三区不卡少妇| 91国产大片| 俺去俺来也在线www| 欧美色另类| 日本99一区二区| 操逼操操操91| 一二三区操逼国产91| 热久日综合| 思思热在线| 国产精品盗摄 偷窥盗摄| 九九免费影片| 日韩AV色图| 91日本在线观看| 99亚洲精品| 婷婷激情丁香| 91精品国久久久久久无码| 开心激情站| 欧美日韩国产三级黄色| 欧美第一页| 久久熟女嫩草成人片免费| 亚洲综合另类欧美久久久| 欧美一级A片在线看视频性色| 中文久久| 日本精品一区二区不卡| 久久久久斤小| 蜜臀久久在线视频| 91女人的网站| 久久婷婷色| 天天做日日做天天欢。| 永久免费av无码网站国产app| 隔壁邻居波多野结衣中文字幕| aV中文麻| 午夜精品久久久久久久| 绑缚麻绳人妻寝取完整版| 精品视频久久久久九九九九9999| 91社区拍啪人妻| 欧美呦呦性爱| 精品无码欧美三级| 亚洲男人天堂AV| 四虎免费在线播放| 热久久无毒不卡| 超碰在线97国产| 96爱综合| 亚洲AV乱码专区国产噜噜亚洲 | 美国久久一二三四| 大香蕉综合| 精品精品精品| 亚洲色图超碰在线| 久久久草成人网站久久久草成人久久久草久久久| 亚洲欧综合另类无码一区| 黄色电影在线播放综合网站| 两女互慰AV高潮喷水在线观看| 一区二区三区美女超清| 男女啪啪网站免费视频| 在线视频亚洲无码| .精品人妻一区二区三| 精品国模无码| 强奸乱伦AV网址| 正在播放国产精品一区| 国产精品毛片?v一区二区三区 | 97WW精品| 四季AV综合网址| 日日干日日操五月天伦理视频| 精品人妻一区二区三区-国产| 中文字暮97| 夜夜高潮夜夜爽高清视频一 | 亚洲激情视频| 偷拍精品一区二区三区| .精品人妻一区二区三| 都市久久精品激情亚洲| 日韩卡一卡二卡三在线| 思思性爱| 志村玲子视频一区二区| 亚洲日本韩国极品一区二区| 天堂国产AV| 走光一区92下载| 五月天AV资源| 中文字幕在线免费观看 | 大香蕉欧美日韩| 日本精品九九九| 蜜臀99久久精品久久久久久| 91 欧美| 欧美午夜视频免费观看| 无码男人天堂| 亚洲欧洲小说图片视频 | 亚洲网站一区二区在线| 欧美五十路熟| 操婷婷逼| 91扒丝袜综合在线| 久久久久国产精品人妻aⅴ天堂| 五月天人妻综合| 草莓精品视频| 激情专区综合| 淫荡网址| 亚洲精品不卡一二三区| 少妇贴图| A一区片| 亚洲最大AV网| 冬京热男人的天堂| 9九九国产| 国产在线视频午夜精华在| 日韩国产欧美伦理在线| 亚洲成人碰碰| 久久久91福利姬| 百度百度日本操逼| 久久精品美女一区| 10000部十八禁看电影| 九九九不卡| 8x福利精品第一福利视频导航| 狠狠干狠狠色| 大香蕉青青9| 国产视频人人网| 国内精品久久久久影院亚洲| 99九九久久| 后入国产| 日韩乱伦视频| 国产精品熟妇一区二区三| 亚洲丝袜诱惑| 欧美色图20p| 久欲AV| 日韩紧密久久| a啊啊啊啊啊啊啊啊一区二区| 一级AV性爱| 日韩精品区二区三区不卡| 夜夜夜夜爽| 久久国产免费激情视频| 嗯嗯啊啊啊好舒服| 91人妻熟女| 亚洲国产日韩欧美熟妇在线| 亚洲。天堂。日本在线观看| 午夜操逼不卡| 欧美色图私拍91| av网站在线看| 久久久久骚| 天天综合欧美| av天堂影视中文在字幕在线中文| 国产97/欧美| 全球成人中文在线| 久久AV色| 91精品无码人妻系列| 高清肉丝中文无码| 操操逼操操逼操操逼逼| 久久动漫精品视频这里只有精品| 亚洲成aⅴ人片不卡无码| 人妻精品综合中文字幕在线 | 激情欧美日韩女同久久| 色黄污美女啪啪啪免费网站| 精品视频97| 香蕉黄色一级视频| 亚洲情色在线| 加勒比久久综合网高清| 日韩八十路老熟女| 5278欧美一区二区三区| 国产精品一二三| 成人av动漫在线观看| 拍拍拍拍大尺度黄色三级片拍拍拍拍拍照| 国产精品香蕉热久久新品| 亚洲 欧美 综合 91| 青青操轻轻| 干B网| 大香蕉亚洲中文| 操逼操逼操| 国产精品色哟哟| 亚洲日韩一区电影| 很很操在线| 久久久99999久网站| 免费av大片| 欧美黑人熟妇精品91| 天天射网| 成人a大片在线观看| 亚洲高清男人天堂| av天天在线观看| 精品无码一区二区三区| 色综合99999| 久久伊人大香蕉| 中文AV制服乱伦| 日韩三级性| 婷婷五月天_亚洲小说欧美激情另类_精品久久国产字幕 | 香港日本韩国人妇99www.wccm20| 天天躁日日躁xxxxx| 97国产中文| 操我啊啊啊啊啊| 夜夜影视四色| 日本不卡二区| 亚州九九九精品视频| 五月综合激情| 国产高清无码一区三区二区| 日本97久久| 裸体女人草逼视频播放一区,二区,三区,四区,五区 | 欧美性爱无码一区二区三区| 男人天堂毛片| 欧美国产视频| 婷婷中文字幕| 精品人妻av在线播放| 亚洲综合999| 色色青青久久| 久久综合久久综合人久久夜精品| 久久99午夜精品一区人妻| 日本影视久久免费| 国产后入式在线观看| 日日夜夜国产综合| 91人妻爽爽人人做人人澡| 欧美一级A片不卡视频。| 九九九国产| 亚洲资源网| 18一区二区三区| 日韩成人网址| 99精品视频在线观看免费| 老熟女网站| 91成人亚洲色图| 亚洲免费97免费| 丰满欧美少妇| 色99色| 热99这里只有精品| 久久久久久久九九九九九九| 日韩熟女精一区二区三区不卡| 精品一区二区久久| 96国产污污污丝袜| 天堂国产AV| 婷婷四五区| 超碰人人在线| av国产无码| 国产一区二区精品久久99| 五月丁香黄色网| 欧美色图综合网| 大逼色网站| 国产AB视频| 加勒比东京热五月天天堂网| 怡春苑东京热| 欧美78| 久久久久ab| 蜜臀色乳| 日本五十路在线| 91高跟美女在线播放| 日韩天堂av电影在线观看| 婷婷四五区| 后X久久| 中文字幕一区 二 区 三 四 五 区日 日 骚 | 2017超碰| 啊啊啊啊在线播放| 丁香7月婷婷| 欧美综合自拍亚洲综合图| 加勒比综合a∨| 日韩精品系列| 综合亚州欧美| 久热最新在线杭州| 女性91网站| 大象AV在线| 日韩欧美午夜一区二区| 人人玩人人添人人澡免费| 操逼视频色| 粉嫩粉嫩一区性色AV片| 成人免费在线网站| 亚洲图片 激情小说| 青青草字幕AV| 国产视频97| 亚洲欧美在线丝袜| 无码不卡亚洲成?人片| 精品一区二区三区国产| 亚洲色图尤物视频| 日本精品一区二区中文字幕| 99操| 美女的肌被草喷水视频| 新视频sss国产| 久久久久久久久9| 91网站18| 国产精品亚洲天堂网址| 亚欧高清v| 一区二区三区四区色图| 中文字幕55555| 日本免费一区二区不卡 | 区日韩亚洲乱码av电影| 欧美日本天堂| 9久9久| 91久久久亚洲| www网站黄| 日韩情色视频| 99热国产| 中文字幕三四区| 国产综合网站在线播放 | 日本久久天堂| 啪啪性爱免费视频| 最新国内自拍av免费| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 国产福利视频精品视频| 丁香五月天激情网站| 97看操| 久操操AV电影| 日本丝袜美腿人妻九九| 一区二区三区精品视频| 欧美九九99久久精品| 91|九色|国产熟女| www.激情| 人妻免费观看| 玖玖爱影院| 久久久久国产精品喷潮免费观看臀 | 女优大全 - 91n| 小日子操bb在线看| 女优视频第10页| 无码操逼天堂| A级片日韩欧美国产欧美视频精选观看| 日本五十路熟女一区二区| 好湿好紧好爽 视频| 九九免费影片| 99re免费视频精品全部| 亚洲五月丁香花狠狠干一区二区三区 | 日韩 人妻 精品| 偷拍欧美亚洲| 岛国黄| 中文久久一区| 国产久久久久久| 无码伊人久久大杳蕉中文无码| 久久鲁夜| 天天视频黄| 水野优香在线观看| 亚洲熟女一区二区| 国产精品无码久久久久2028| 九九九综合精品| 97干在线| 五月天婷婷激情| 好湿好紧视频| 性色av婷婷久久一区二区点复制| 久久久久密臀一区二区| 立川理惠被中出无码| 人妻少妇色综合| 日韩AV噜噜噜一区二区三区四区 | 国产人妻一区二区三区欧美毛片| 伊人天天久久动态图| 婷婷综合激情| 亚洲毛片久久| 九九激情网| 欧美的精品的视频| 99碰碰| 91四海无码日韩欧美| 日本午夜精品理论片A级APP发布| 伊人991| 国产人伦a片信息免费片| 免费网站观看www在线观| 91久久久久久久久18| 偷拍片久久| 久久精品店| 欧美骚少妇| 日韩亚洲Av人人夜夜澡人人爽| 亚洲91大片| 在线无码操| 人妻夜爽夜夜爽| a在线观看| 国产精品久久久久久久久久久久久久吹 | 欧美性爱日韩高清| 国产成自自拍在线观看| 八戒无码国产午夜福利| 熟女网站最新| 干婷婷综合网| 亚洲视频精选| 久久久不能久久久久| 国产第12页| 欧美天堂亚洲电影院一区在线播放| 久久直播国产| 一区二区无码视频| 亚洲男人天堂2019| 蜜乳视频网站| 久久久噜噜噜久久人妻| 久久久久国产无av| 火箭成精品视频884必出精品| 日本天天吊| 五十路六十路七十路熟婆| 亚洲AV在线资源| 亚洲五月丁香花狠狠干一区二区三区 | 操逼操网| 69精品| 午夜福利区| 爽 好舒服 无码刺激久久| 欧美精品激情| 又摸又舔在线观看网站| 新婚人妻扶着粗大强行坐下| 欧美色图欧美| 97se综合网| 色婷婷五月综合激情中文字幕| 亚洲资源站| 东北女人操比视频| 五月婷在线| 国产美女裸体秘 永久无遮挡| 干b网| 啊啊啊啊啊操我视频| 入口操逼网站| 久久草草亚洲蜜桃臀| 久啪视频| 少妇熟女视频一区二区三区| 91亚洲欧美激情| 四虎国产成人精品免费一女五男| 果冻国产精品麻豆成人av| 欧美精品三区| 99热精品在线在线| 97玖玖人妻| 91l欧美在线| 东京热免费视频| 国产强奸乱伦xd| 激情一区二区| 青青草无码视频| 亚洲综合888| 九九久久综合| 日本视频一区二区三区| 亚洲中字幕日本一区二区三区| 毛片麻豆91糖心精品毛情片| 久久综合18p| 亚洲综合成人网| 91社操逼| 精品亚洲成人免费在线| 蜜臀AV一区二区三区| 加勒比五月天| 久久只有精品一区二区三区| 亚洲国男人的天堂| 久久精品三级影视| 欧美一级特黄淫片在线观看| 国产 日韩,欧美 自拍| 欧美性高潮在线| 中文字幕二区| 黄色十八禁| 超碰综合色| 久久久久久久久久久久久久久乱码| 婷婷五月天av| 九九热AV| 色色婷婷丁香| 桃花色涩综合影院| 欧美性爱十八禁| 亚洲天天艹| 色综和网| 天天综合色电影| 国产精品女久久久久av爽| 日本三级精品| 骚熟女吞| 夜夜操91744565| 亚洲日韩青青草色月| 久久透逼视频| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 精品日韩人妻视频| 亚洲本色精品一区二区久久| 97手机日韩| 色婷婷一区二区三区久久| 亚州色综合| 探花精品 一区二区| 97精品免费| A 天堂| a片自拍直播视频| 人人操人人摸avav| 一级@啪啪视频| 不卡一区二区日本视频 | 色香网| 5252色欧美在线男人的天堂| 色姑娘综合网| 亚洲人成网站7777| 中文字幕乱码人妻二区三区| 亚欧性爱无码| 日韩一区二区高清在线观看的| 亚洲第一色页夜| 日本最新免费韩国1区2区视频播放| 午夜福利在线视频1000| 午夜福利在线合集| aV中文麻| 综合久久97| 国产一级特黄大片处女| 思思性爱| 先锋精品av色鲁| 91麻豆天美国产| 色香91| 亚洲图片欧美色| 久久亚州精品成人Av无| 乱伦Av网| 韩国久久97| 色九九九综合| 精品美女少妇一区二区| 无码高清操逼| 激情接吻视频久久久久久| 伊人AAA| 成人热久久精品| 我爱操| 欧美成人性爱视频在线播放| 国产精品宅男免费| 97精品国产97久久久久久| 日日夜夜青青草母狗| 亚洲欧美天| 欧美传媒| 五月婷婷性爱| 欧美青青视频| 九九九九久久久久| 久久久久久久国产视频| 熟女人妻av在线资源,黄色的资源| 大香网伊人久久综合网eew| 成人精品久久| 亚洲精品尤物yw在线影院| 成人欧美一区二区三区黑人一| 伊人久久大香蕉线AV五月天| 久久久久骚| 精品国产乱码久久久久久久久久毛片 | 素人伊尹大香蕉免费下载视频| 久久国内| 97综合久第一页| 中文字幕性感少妇av| 新怡红院| 亚洲欧美精品91| 超碰2017| 丝袜性亚洲| 久久久久久亚洲Av无码| 美女干逼2| 91天堂色男人的天堂| 青青青草原| 久久久无码国精品无码三区三区| 亚洲久9| www老逼91| 成人无遮挡毛片免费看| 天天内射| 亚欧高清v| 国产精品农村妇女| 天天操女人| 老子午夜伦不卡影院| 欧美日韩人妻婷婷一区| 国产综合操逼高清| 中出欧美| 伊人一区二区三区| 草莓精品视频| 91欧美经典| 97资源欧美| 夜夜影视四色| 伊人网高清| 中文字幕乱碼在线| 插穴性爱视频在线观看| 91天美免费| 中文伊人大香蕉视频| 一区不卡在线观看av| 97超碰中文字幕| 午夜免费视频1000| 久久久99免费| 干妹子| 天天操av懂色| 日韩亚洲国产视频| 性欧美91| 超碰这里只有精品| 色色色综合网| 欧美躁死她一区二区| JuliaAnn丝袜熟女系列| 99热只有| 亚洲精品九九九| 后入内射蜜桃臀| 国产强奸91| 97视频900| 国产精品久久久久综合| 999久久久久久久久| 99re在线观看| 目产99999久久999| 色噜噜人妻丝袜a∨先锋影| 尤物av网站免费在线播放| 97超碰中文字幕| 偷拍亚洲高清图片| 色婷久久| 正在播放国产精品一区| 日韩97在线| 亚洲黄色网址| 欧美色偷拍 | 欧美岛国精品在线观看| 亚洲国产福利视频| 亚洲色性情三级| 五月天婷婷综合网| 日本五十路熟女一区二区| 99久久久无码国产精品性啊聊 | 一道本东京热加勒比一区二区三区| 乱伦系列一区二区| 中文字幕高清精品一区| 国产精品乱码久久久| 人妻激情在线视频| 黄总AV色图| 天天爽爽爽爽| 欧美中出1| 国产熟女免费观看久久| 中日韩一区二区三区欧美| 传媒在线观看一区二区三区| 国产欧美黑人丰满在线| 男人天堂站| 欧美日韩高潮喷水91| 成人性爱电影一区二区| 操逼国产免费| 日韩免费中文字幕视频| 成人青青草原伊人| 九九九九97| 草久久久| 奸色色 男人天堂 天天射| 国产免费一区二区在线A片视频| 无码精品一区二区三区潘金莲| 亚洲熟女乱色一区二区三区| 91人妻熟女| 精品一区二区三区18| 欧美亚洲色的图| 学生妹天天看| 国产成人主播| 96免费视频在线| 夜夜操91744565| 亚洲s在线观看| 水澄无码AV| 人妻啊啊人妻啊| 天天色香欲综合网| 激情天天视频| 伊人一级免费黄片| 亚洲国产美女久久久久 | 大香蕉青青9| 蜜臀亚洲综合一二三四区| 99xav| 大香蕉线| 久久一区二区加油站| 久久人妻四季| 天天日天天舔| 天堂8在线新版官网| 欧美人人操人人插| 色嘟嘟人妻天堂网| av日韩中文字幕| 九九毛片这里只有精品| 国产精品久久久久亚洲av| 午夜小电影在线插入淫高潮| 亚洲天堂电影精品一区| 综合色啪| 99色色| 啊a一区在线| 蜜臀精品1区2区| 夜夜操美女| 欧美热图99| 人妻激情另类| 久综合网| 97精品国产97久久久久久| 91五月天| 强奸少妇AV导航网| 91亚洲欧美色图| 91美女視頻| 精品丰满熟妇人妻一区| 91网站18禁| 精品亚洲成人免费在线| 黄色AAAAAAAAAAA大片| av午夜影院在线播放| 国产粉嫩出水在线播放| 综合操逼| 久久久555| 精品国产乱码久久久久久久久久毛片| 啊啊啊好疼| 久男人久久| 九九人妻| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 久操凹凸视频| 无码国产Av| 欧美日韩国产高清在线一二三区 | 久干9操| 男人的天堂午夜av| 免费一级特黄特色大片在线观看看 | 立川理惠无码一区二区| 一区在线观看中文字幕| 九热视频| 97福利视频| 天天综合色电影| 亚洲情色一区三区|