99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜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)會集中在四個(gè)地方。第一是編譯速度。每改一行代碼整個(gè)工程都可能觸發(fā)重新編譯尤其是越來越多人往 App 里塞第三方庫和分類。第二是團(tuán)隊(duì)協(xié)作。不同小組改同一個(gè)文件、同一個(gè)宏定義代碼合并時(shí)沖突頻發(fā)誰也不敢動公共代碼。第三是測試成本。業(yè)務(wù)模塊互相牽連單元測試很難把某個(gè)模塊孤立出來跑回歸全靠手工點(diǎn) App。第四是代碼復(fù)用。App 和擴(kuò)展、多個(gè) App 之間想共用一段邏輯只能靠復(fù)制粘貼修 bug 要改好幾個(gè)地方。組件化不是玄學(xué)它的核心是把代碼按業(yè)務(wù)或功能切成獨(dú)立模塊每個(gè)模塊只暴露必要的接口模塊之間通過明確的依賴關(guān)系通信。這樣一來編譯可以被緩存團(tuán)隊(duì)可以獨(dú)立維護(hù)各自的模塊測試也可以只拉取模塊源碼來跑。而 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 會把這個(gè)目錄里的源碼直接編譯進(jìn)你的工程不需要任何遠(yuǎn)端基礎(chǔ)設(shè)施。對剛起步的項(xiàng)目來說本地 Pod 有三點(diǎn)優(yōu)勢非常明顯因?yàn)樵创a在本地改完 Pod 里的代碼直接生效調(diào)試效率跟單工程一模一樣。Pod 和宿主工程是兩個(gè)物理目錄天然形成了“模塊邊界”誰依賴誰一目了然。后續(xù)要推到遠(yuǎn)端倉庫只需要給 podspec 配一個(gè) Git 地址改動量很小。所以我的建議是組件化的第一階段全部用本地 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)庫或動態(tài)庫打成 zip再掛到 Spec Repo 下適合對編譯速度有極端要求的團(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)姿勢2.1 手動創(chuàng)建還是用 pod lib createCocoaPods 提供了一個(gè)專門用來生成 Pod 模板的命令pod lib create。它會展開一個(gè)交互式詢問包括你要用 Swift 還是 Objective-C、要不要生成測試框架、要不要 GUI 調(diào)試等然后自動生成完整的目錄骨架包括.podspec、README、LICENSE、Example工程和Sources目錄。但我實(shí)際用下來的感受是pod lib create直接生成一套模板里面有大量當(dāng)前用不到的文件。比如它會生成一個(gè)Example文件夾里面帶一個(gè)需要用pod install才能跑起來的 Demo 工程還要配置 target。對只是想快速把舊代碼拆成 Pod 的場景來說這一步有點(diǎn)重。所以我更推薦的做法是先手動創(chuàng)建最簡結(jié)構(gòu)只需要四樣?xùn)|西一個(gè)源文件目錄、一個(gè).podspec文件、一個(gè)存放資源的Assets文件夾可選、一個(gè)用來測試的宿主工程。等你能跑通本地 Pod 的接入流程再回頭看pod lib create生成的模板也不會一頭霧水。2.2 標(biāo)準(zhǔn)的本地 Pod 目錄長什么樣我通常會在主工程同級放一個(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其他同事看起來就會很混亂。按 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 的源碼并不會拷貝到別的目錄而是通過 Pods 工程去引用../Modules/JYNetwork/Sources下的文件。需要特別注意的是:path使用的是相對路徑而這個(gè)相對路徑的基準(zhǔn)是 Podfile 所在的目錄。如果你把 Podfile 放在MyApp里那:path就應(yīng)該從MyApp路徑開始寫。換過電腦、移動過目錄后只要這個(gè)相對位置不變就能正常pod install。3. Podspec 配置每個(gè)字段有什么用填錯了會怎樣podspec 是 CocoaPods 的“身份證”里面聲明了這個(gè) Pod 叫什么、版本多少、包含哪些文件、依賴了誰。很多人直接復(fù)制別人的 podspec 模板字段倒是填滿了但不知道每個(gè)字段背后對應(yīng)的行為。我挑幾個(gè)真正影響構(gòu)建的字段展開講。3.1 基本信息與版本號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模式下不太會嚴(yán)格讀取版本號但后續(xù)發(fā)布到私有 Spec Repo 時(shí)podspec 的版本號必須和 Git tag 一一對應(yīng)。比如 podspec 里寫0.1.0Git 就必須打一個(gè)0.1.0的 tag否則pod install時(shí)找不到對應(yīng)版本。另外一個(gè)容易踩坑的字段是s.source。本地模式時(shí)source里寫什么幾乎不影響編譯但如果你把它留空或者填一個(gè)不存在的地址將來發(fā)布時(shí)就會報(bào)錯。我建議從一開始就填上真實(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 文件就不會被編譯進(jìn)去。同理如果 Pod 是一個(gè)純 Swift 庫就得寫成*.swift。resource_bundles則是把資源文件單獨(dú)打成一個(gè) bundle。注意這里我推薦用resource_bundles而不是resources原因是resources會把資源文件直接放進(jìn)主 bundle容易出現(xiàn)文件重名覆蓋resource_bundles會為這個(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 找所以就找不到圖了。后面我會在常見問題里說怎么解決。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í)就會把 AFNetworking 一并拉進(jìn)來。版本號建議約束在合理范圍比如~ 4.0表示大于等于 4.0 且小于 5.0既能保證功能一致又允許小版本更新。如果 Pod 使用了系統(tǒng)框架就得在frameworks里加對應(yīng)名字。很多人在本地寫代碼時(shí)沒報(bào)錯因?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)去。這對提升構(gòu)建速度、控制模塊體積很有幫助但同樣也意味著你對模塊邊界的把控要更明確。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 對應(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í)會看不到擴(kuò)展方法。4. 本地 Pod 的集成與調(diào)試實(shí)戰(zhàn)4.1 初次接入從零開始跑通鏈路準(zhǔn)備一個(gè)全新的測試工程我用最小化流程演示一遍。第一步新建 Xcode 工程MyApp選擇 iOS App 模板。這一步的工程路徑和是否使用 Core Data 都不重要。第二步在工程文件同級創(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 會生成MyApp.xcworkspace之后必須通過.xcworkspace打開工程而不是.xcodeproj。這里我要提一個(gè)很多人栽過跟頭的細(xì)節(jié)pod install和pod update的區(qū)別。首次使用本地 Pod 時(shí)如果依賴是新增的可以用pod install但如果你改了冒號路徑、新增了 subspec或者 podspec 里的 source 發(fā)生了變化pod install可能不會重新解析已經(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 會自動配置 header search path所以你可以直接用尖括號引用 Pod 的頭文件。但前提是這些頭文件在public_header_files范圍內(nèi)。.m文件里的私有頭文件可以放在 podspec 的 source_files 里但不要放進(jìn) public_header_files否則會造成接口過度暴露。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)勢就是“改完就能用”。因?yàn)?path是指向源碼目錄的所以你修改JYNetwork文件夾里的代碼后重啟 App、重新編譯改動就會生效不需要重新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)境自動關(guān)掉。這種開關(guān)放在 Pod 里比散落在宿主工程里要規(guī)范得多。5. 從本地 Pod 走向規(guī)范與發(fā)布5.1 本地 Pod 的版本號怎么管理本地模式不會強(qiáng)制校驗(yàn)版本號但我不建議因此偷懶。把版本號從0.1.0開始維護(hù)每完成一定量的改動就遞增遵循語義化版本規(guī)范主版本號不兼容的 API 修改次版本號向后兼容的功能新增修訂號向后兼容的問題修復(fù)這樣做的意義是當(dāng)你后面把 podspec 推送到遠(yuǎn)程倉庫、開始用 tag 管理版本時(shí)歷史包袱已經(jīng)很小。而且宿主工程 Podfile 里可以同時(shí)使用:path和指定的版本號比如pod JYNetwork, :path ../Modules/JYNetwork在開發(fā)環(huán)境不加版本限制但發(fā)布的時(shí)候 Podfile 會鎖住一個(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里面會記錄當(dāng)前解析后的 Pod 及版本。如果某個(gè)模塊依賴關(guān)系特別詭異比如基礎(chǔ)庫依賴了登錄模塊說明邊界設(shè)計(jì)有問題一定要趁早發(fā)現(xiàn)。我還有一個(gè)習(xí)慣沒事就跑一遍pod outdated。本地 Pod 模式下它不一定能檢測出變化但至少能幫你確認(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外部工程用尖括號導(dǎo)入時(shí)自然找不到。查看是否匹配到文件可以在模塊目錄執(zhí)行pod install后打開 Pods 工程里的 Development Pods 分組看文件是否出現(xiàn)在對應(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 沒對上換成上述方式一般都能解決。6.3 用了 use_frameworks! 之后靜態(tài)庫和動態(tài)庫的混編問題在 Podfile 里寫use_frameworks!后Pod 會編譯成動態(tài) framework嚴(yán)格說是靜態(tài) framework 或動態(tài) framework取決于配置這會影響#import的方式和啟動速度。如果你的工程較多使用 OC且不想引入動態(tài)庫的額外符號暴露可以把use_frameworks!改為use_frameworks! :linkage :static表示強(qiáng)制使用靜態(tài)鏈接。這個(gè)配置對本地 Pod 同樣生效能省掉一部分動態(tài)庫的加載開銷也能避免部分組件因?yàn)閯討B(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 里沒有配置對應(yīng)的sourceCocoaPods 就找不到 spec。解決方法是把倉庫地址寫到 Podfile 頂部source https://github.com/CocoaPods/Specs.git source gityour-git-server:specs-repo.git注意即使是本地依賴也可以聲明多個(gè) sourceCocoaPods 會從這些倉庫里拉取其他 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ù)鏈接器不會加載包含 Category 的 object 文件運(yùn)行時(shí)就會表現(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 會自動解析本地路徑之間的依賴。此時(shí)要特別留意版本號的一致性如果JYHomePage的 podspec 里寫了dependency JYNetwork, ~ 1.0而本地 JYNetwork 的 podspec version 還停留在0.9.0CocoaPods 會直接報(bào)版本沖突。解決辦法是在:path模式下兩個(gè) Pod 的 version 都要維護(hù)好或者將依賴版本寫成不帶太多限制的范圍比如 0.9.0。最后分享兩個(gè)我自己的習(xí)慣組件化沒有標(biāo)準(zhǔn)答案但有些坑是共通的。第一我始終建議 Pod 里不要直接訪問宿主工程的單例對象或全局宏。如果模塊需要宿主提供配置定義協(xié)議讓宿主去注入這樣模塊才不會變成下一個(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 自動化都會順很多。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
日韩99视频| 永久的网站AAAA | AV在线大香蕉| 大香蕉75线| 亚洲精品在线视频| 97操资源婷婷| 色综合久久88| 久久99激情| 色色色热| 欧美大肥婆大肥BBBBB| 综合网亚洲| 5月婷婷五月天| 五月天成人在线视频丁香| 激情久久 婷婷| 久久综合九九| 色爱综合五月| 99A片| 精品99*| 玖玖午夜视频| 丁香六月av| 久久婷婷六月| 五月婷婷在线视频观看| 婷婷激情社区| 色色色在线| 色性综合| 中文AV网| 久久精品国产AV一区二区三区 | 天天草比天天爽| 伊人久久艹| 丁香五月久久| 丁香五月婷婷啪啪| 噜噜视频| 久综合网| 青吴乐视频| 成人国产欧美大片一区| 久久久久久9热不雅视频| 国产又粗又大又爽又黄| 亚洲成人网站在线播放| 五月婷婷激情网| 五月丁香色婷婷色| 色婷婷六月激情| 99碰碰视频| 青青草成人网| 色色三级视频| 色情激情五月| 激情婷婷网| 丁香在线视频| 六月婷婷天堂| 色婷婷六月精品| 亚洲色婷婷| 色五月婷婷操逼| 97大香蕉五月天| 一操久久| 久久这里在精品视频| 婷婷九月激情| 99综合| 久久9999| 天天狠狠色噜噜| 五月天婷婷在线视频| 91狠狠综合久久| 五月丁香六月婷婷综合| 亚洲情欲久久| 精品色色色| 九九久久玖玖爱| 五月色网| av操B网站| 日本91在线播放| 色高清无码视频| 久777| 很操日本7| 熟女激情网| 色爆五月| 丁香美女主播视频在线观看| 激情综合网激情五月天| Blackedraw视频一区二区| 色人久久| 99激情视频热| 亚洲人妻av| 日韩亚洲视频| 丁香五月在线观看| 男人天堂AV在线一区二区| 99久久免费精品| 日本天堂爱爱| 国产99久久久| www.91av.com| 婷婷五月天首页| 99这里只有精品| 亚洲精品小视频| 婷婷五月天成人| 成年AAAA色情| YW无码| 久久五月婷婷丁香| 99re思思精品视频在线观看| 狠狠操狠狠插| 天天色播| 色婷丁香五月| www.五月婷| 五月天丁香综合| 亚洲色五月| 丁香五月婷婷www..com| 五月婷婷偷拍| 五月婷婷丁香瑟瑟视频| 99精品97| 九九 激情 网| 国产日日夜夜操| 婷婷操无码| 久久ww| 五月性色| 婷婷5月天av| 五月婷婷熟女| 色五月综合激情网| 激情亚洲网| 色婷婷久久视屏| 九九视频这里只有精品| 超碰99热精品| 婷婷久久色| 婷婷五月丁香成人| 亚州激情九月| 色情五月丁香| 久久婷婷五月综合网| 婷婷五月丁香基| 97人人看一| 另类专区在线观看| 久99久视频| www.婷婷五月天| A网在线欧洲| 日韩精品在线观看9| 天天综合五月| 六月丁香社区| 亚州精品久久久久AV无码| 538午夜激情| 性色婷婷| 黄久久久| 国产精品国产| 深爱五月激情| 五月天色婷婷成人| 五月草影视| 欧美成人精品老美女噜噜噜| 中文字幕性爱丰满| 婷婷色日本| 91热er| 亚洲射激情| 亚洲日日操| 婷婷亚洲影院| 97色婷婷| 国产亚洲精品AAAAAAA片| 天天玩夜夜操| 97干免费视频| 激情综合五月天| 日日色综合| 欧美精品99久久久| 成人中文网| AV网在线| 人妻中文av| 狠狠色婷婷丁香五月| 色情婷| 丁香五月激情宗合网| 欧美五月丁香在线| www.99情趣网| 欧美电影在线观看| 精品少妇人妻AV无码专区偷人| 久久久人妻| 爱iii做iiii日日| 色~性~乱~伦~噜| 99色播| 超碰色综合| 五月色网| 人人操91| 激情婷婷色五月| 亚洲色啪| 亚洲电影中文字幕| 91狠狠色丁香婷婷综合久久精品| 激情小说 五月天| 91婷婷| www色色色com| 99精品97| 亚州操操| 99热这里只有精品最新| 三级三久久线久久99久目本WW| 伊人高清无码| 99这里有精品免费| 人人干av| 一级性感黄色内射视频| 色综合久久中文| 婷婷综合一二三| 天天做天天爱天天做| 久久HD| 99亚洲视频| 九九热只有这里是精品| 亚洲精品久久久无码| 怕怕av| 翔田千里 50岁 无码| 熟女国产在线一区二区三区四区| 成人婷婷五月天| 色偷偷综合| 婷婷综合在线| 玖玖综合色| 99无码视频| 国产va在线视频| 色狠狠色噜噜AV天堂五区| 综合大香蕉| 九热视频| 99在线视频精品| 五月综合丁香婷婷| 五月丁香久久网| 婷婷五月电影院| 色婷婷大香蕉| 丁香五月电影| 青娱乐美女福利视频美臀| 思思re最新视频| 我要射综合| 久久天堂色| YJLZZJLZZ亚洲乱熟无码| 久久一级片| 色色色色色色色色五月先| 狠狠香蕉| 激情五月丁香五月| 五月天婷婷亚洲| 婷婷激情四射五月天| 天天天操天天天日| 婷婷五月丁香五月| 波多野结衣不卡AV| 五月天大香蕉| 六月婷婷日| 99天天操夜夜操| 五月婷婷色影院| 99九九精品| 狼人伊人天堂| 俺去也五月| 激情五月天视频| 一本大道嫩草AV无码专区| 六月丁香婷婷综合在线| 色视频2025| 99精品手机在线视频| 五月婷婷,六月丁香| 婷婷综合网| 久久婷婷六月综合国际| 五月天激情网站| 亚洲色色香蕉| 亚洲人人操BD| 婷婷色五月天第7色| 琪琪色五月天| 丁香九色不卡aaa| 99热在线观看| 啪啪 综合网| 丁香婷婷六月| 亚洲99视频| 亚洲一区先锋影音| 中文字幕乱轮| 任你擦免费视频| 五月婷婷亚洲色视频| 五月丁香成人| 欧美三级黄色片久久| 操B视频在线播放| 91AV婷婷| 五月花免费视频| 婷婷丁香色情| 欧美在线干| 狠狠干天天日| 激情婷婷五月天| 97人人射| 婷婷激情中文综合| 99视频超级精品| 他改变了拜占庭| 久久久五月天| 丁香婷婷啪啪啪| 久这里只有精品99| 久久五月婷婷开心网| 五月天色导航| 伊人AV五月婷| 97婷婷五月天| 婷婷五月激情的图片| 色婷网| 开心五月网| 另类激情综合| 99国产精品白浆在线观看免费| 亚洲黄网AV| 丁香五月婷婷操逼| 欧美成人日韩| 这里只有精品视频222| 另类视在线| 中文字幕av久久爽一区| 久久色在线视频| 超碰人人在线| 婷婷五月色亚洲| 操一操干一干| 99精品久久| 91人久| 99视频日韩| 九月性爱网| 99超级碰免费视频| 五月婷婷天天| 91丨九色丨熟女高潮| 99久| 久热这里这里有精品| 五月丁香六月婷婷久久| 丁香五月影院| 久久久大香蕉| 五月天婷婷丁香社区| 色综合久久综合中文综合网| 伊人狠狠操| 色五月播五月| 1000部毛片A片免费观看| 手机免费福利视频| 99国产精品久久久久久久久久久| 婷婷丁香成人五月天| 婷婷激情五月天在线视频| 五月丁香六月天| 91色色色视频| 色六月视频| 少妇出轨做爰高潮A片| 五月天六月色| 久大香蕉| 色五月婷婷亚洲| 久久婷婷内射| 五月婷婷精品| 婷婷激情五月天在线| 影音先锋五月天婷婷丁香在线观看| va中文资源在线观看| 日韩视频99| 69热在线| 亚洲电影在线观看| 色色婷婷五月| 国产精品久久久海的味道| 国产午夜伦鲁鲁| 久久婷婷亚洲| 久久看九九90| 丁香六月天AV| 久机视频这只有精品| 亚洲图色五月天| pacopacomama 070722_670 素人奥様初撮りドキュメント 103 大久保純子 | 人妻中文字幕精品| 9久久久久| 99热亚洲精品| 婷婷99狠狠| 色约约视频一区二区三区四区五区 | 丁香六月激情| 天天激情视频| 亚洲性爱AV在线| 亚洲va国产va天堂va综合va| 激情五月天综合网| 人人射人人高潮| 久久精品99国产精品日本 | 91久久99久久91熟女精品| 超碰在线免费观看3 9| 丁香花五月天激情| 激情五月天 婷婷| 久草五月婷婷| 激情视频婷婷五月花| 夜夜大香蕉婷婷丁香| 99热97| 婷婷综合五月天激情| 五月开心婷婷| 爱99干99| 色999亚洲人成色| 伊人五月久久| www.五月丁香| 欧美色色色色色色色色色色| www.av视频xx999.com| AV中文在线| 九九美女视频| 婷婷五月综合性爱| 婷婷成人视频| 久久综合五月天| 老师的粉嫩小又紧水又多A片视频| 另类图片天天影视在线观看| 99久久综合网| 91九色 熟| 婷婷丁香五月,狠狠综合| 婷婷啪啪| 99这里只有免费的精品| 99热这里只有精品1| 色欲色欲久久宗合网| 婷婷六月丁香激情综合| 久久久27操| 丁香五月激情月| 丁香五月婷婷天| 性色做爰片在线观看WW| 丁香六月婷月91婷月| 色狠狠色综合| 夜夜操狠狠操| 91九色国产| www.激情| 亚洲操逼片| 99热老网站| 337p大胆噜噜噜噜噜91Av| 五月婷婷激情网| 色婷婷丁香网| 天天夜夜爽| 99超碰人人| 婷婷精品在线| 色五月天婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷 | 丁香五月激情综合| 玖玖色综合色| 97人人操人人干| 午夜激情五月天| 成人在线综合| 五月天激情啪啪| 国产精品99久久久久久久女警| 婷婷少妇激情| 久久精彩视频18| 天天日天天色| 天天天天天色| 人妻AV在线观看| www.wuyuetian啪啪| 99久久a线观| 精国产品一区二区三区A片| 天天爽夜夜爽天天爽夜夜爽| 婷婷操久久| 99精品视频免费观看近期发布| 国产色丁香| 98国产精品综合一区二区三区| 婷婷五月美女直播| 激情网综合| 91丨熟女丨首页| 亚洲爆乳无码精品AAA片蜜桃| 亚洲人人操| 亚洲免费99| 99热在这里只有精品| 婷婷五月天天激情| 亚洲V国产V欧美V久久久久久| 婷婷激情性爱| 成人在线视频男人的天堂4399| 91精品久久久久久77777| 五月天网站免费欧美| 午夜少妇在线观看视频| 久热精品视频| 亚洲午夜一区二区| 国产成人av在线播放| 丁香五月久久| 丁香五月开心五月激情| 五月婷婷色播| 99爱视频在线| 五月婷婷精品无在线| 久久婷婷五月综合色丁香花| 五月天综合视频| Caoub青青超碰| 六月婷婷五月天| 色婷婷很很丝袜| 综合啪啪| 丁香五月香蕉在线| 久久久久视剧HD| 日韩1区2区| 99热老网站| 狠狠插.com| 中文AV网| 免费国产VA国产免费| 精品久久99| 欧美婷婷成人| 综合激情五月丁香| 久久久jd| 9久久精品视频| 亚洲精品V天堂中文字幕| 色噜噜狠狠色综合成人网| 狠狠爱综合| 亚洲五月天激情| 四虎成人精品永久免费AV九九| 久 久9 9 热 视 频| 激情欧美五月丁香| 99色免费| 欧美性做爰大片免费看办公室| 丁香婷婷六月天| 五月天综合婷婷| 五月丁香六月花| 直接看的AV| 无码少妇高潮喷水A片免费| 久草五月| 九九精品亚洲| 开心激情久久久久久久| 五月天激情网图片| 五月天基地| 9色在线视频| 丁香五月91| 激情精品久久| 可以看的AV网站| 色婷婷综合成人| 久久婷婷五月综合| 色婷婷www| 天天色亚洲| 色婷婷激情| 99re热视频这里只有综合亚洲| 精品AV无码超碰| 久久艹 五月天| 激情久久五月天| www.狠狠艹| 九九99久久| 97婷婷在线| 六月婷婷五月天| 六月婷婷啪啪| 久久9视频| 另类专区在线观看| 九九re精品视频在线观看| 中文字幕不卡网站| 人妻性爱av网站| 99九九热在线观看| 99热最新国内| 丁香丁婷五月激情| 六月丁香啪啪| 丁香六月婷婷一区| 伊人久久大香线蕉av一区| 天天操天天草天天草天天| 欧美精品狠狠色丁香婷婷| 国产韩日亚洲美州欧亚综合在线 | 激情五月,色播五月| 婷婷丁香91综合| 午夜成人网站在线观看| 无码激情AAAAA片-区区| 99视频在线观看视频| 中文字幕丰满乱孑伦无码专区 | 五月丁香婷婷开心| 天天狠狠夜夜狠狠2023| 天天久久狠狠色综合| 五月婷视频在线| 激情五月综合亚洲另类| 久久婷婷五月天蜜桃| 五月天中文字幕在线婷婷| 人妻无码精品一区| 草久私拍| 99成人精品六| 婷婷久久五月| 干亚洲天堂| 一本综合丁香日日狠狠色| 亚洲激情在线| 亚洲国产精品成人va在线观看| 图片区 小说区 区 亚洲五月| 久久WW| 欧美A级成人婬片免费看理论| 大香蕉啪啪啪| 大香蕉九九| 1000部毛片A片免费观看| 国产精产国品一二三在观看| 婷婷五月天六点丁香五月| mmm1717.6dbm人人爱人人操| 色你久久| 久久婷婷五月草视频在线播放| 色婷婷狠狠| 国产精品99久久久久久猫咪| 九九热免费| 婷婷五月色网| 色波激情五月天| 久久综合首页| 六月丁香好婷婷| 91肏| 蜜桃婷婷五月| 婷婷色片| 中文字幕操比影片| 色屌丝中文字幕| 欧美韩日AAA网站| 色综合激情| 玖玖在线| 天天橾日日橾夜夜橾17| 欧美日韩成人一区二区| 免費观看aV在线网址| 婷婷九月丁香| 免费精品66| www.一起草av| 色色色热| 色色色99| www.婷婷.com| 天天操夜夜爽歪歪| 婷五月天| 亚洲日日操| 丁香五月婷婷五月| 很很干天天干| 人人干人人看| 人人摸人人| 久鲁鲁色网| 一二线视频 另类| 五月综合色| 欧美啄木乌丝袜人妻系列| 国产古装妇女野外A片| 中文字幕丰满孑伦无码专区| 婷五月天丁香婷五月| 99免费偷拍视频| 国产婷婷综合在线免费视频| 丁香五月婷婷婷婷欧美综合| 久久婷婷桃花五月天| 久久99大| 久色五月丁香视频| 亚洲国产va| 99久热在线精品| 九九精品9| 97超碰,人人舔,人人操,人人摸 | 99久久精品网| 逼逼AV| 在线婷婷| 色激情五月| www热久久yy9| 国产综合婷婷| 任你爽免费视频| 激情五月图| 一本道在线电影| 久久久99免费视频| 亚洲色五月| 丁香五月婷婷五月| 丁香五月中文字幕| 综合久久高清| 人人操av| 伊人99热| 91色婷婷综合久久中文字幕二区| 色五月首页| 大香婷婷| 婷婷五月网图片区| 91九色PORNY中文啦| site:901-07.com| 91丁香五月| 精品婷婷五| 夜夜夜夜撸夜夜操| 五月婷婷激情综合视频| 丁香五月激情婷婷婷婷在线观看| 翔田千里 50岁 无码| 五月天开心网| 七七九色| 色情激情五月| 五月丁香六月婷婷激情网| 成功精品影院| 色热久| 国产精品18久久久| 国产成人高清| 先锋av性爱成人电影| 玖玖爱综合网| 婷婷五月天成人网| 婷婷五月天伊人| 婷婷五月天基地| 欧美日综合| 婷婷色网| 婷婷天天综合| 色五月91| 五月婷婷色| 五月婷婷久久开心网| 97超碰在线免费观看| 色综合丁香| 五月天综合区| 精品久久99码| 日本人妻操| 久热这里有精品视频| 操人91| 五月丁香婷婷综合网色欲| 91se在线视频| 色九月婷婷综合| 我要看激情五月天| 久久3级片| 精品九九视频| 日日爽夜夜爽| 香蕉综合网| 91猫咪国产在线播放| 六月婷婷狠狠做| 色99超碰| 99自拍视频在线| 六月激情婷婷| 99操碰| 色婷婷狠狠| 色色五月婷婷久久| 色色亚洲无码| 久操综合| 亚洲成人一区| 最近中文字幕大全免费版在线| 五月激情小说网| 日 日干 日日做| 99色看这里只有精品| 五月丁香影视| 天天爽天天透天天爱| 成人亚洲精品久久久久| 九九热视频首页/这里只有精品| 色婷婷色99国产综合精品| 丁香五月天在线视频| 这里只有免费精品| 色五月综合网| 九九色婷| 婷婷色五月天在线| 69精品人妻不卡视频| www夜夜| 99九九热在线观看| 成人片黄网站色大片免费毛片| 亚洲色欲AAAAAA| 操操精品| 91n网站cad入口在线观看| 婷婷亚洲丁香五月| www.激情五月天.com| 91热在线| 色婷婷AV久久| 成人精品亚洲性爱| 色噜噜狠狠色综| 成人精品一区日本无码网| 激情综合网五月天| 亚洲俩性性爱图片久久第六页| 超碰2021| 丁香六月婷| 久久成人综合五月天| 六月丁香五月激情婷婷| 五月丁香婷婷在线综合蜜桃| www五月天com| 日韩99无码| CAoub青青超碰| 极品人妻VIDEOSSS人妻| 婷婷五月天综合网| 婷婷久久精品| 婷婷五月丁香色综合| 99热精这里只有精品| 去干网av| 激情综合另类| 色综合久久久无码中文字幕999| 79精品视频在线观看,| 五月婷婷激情| 久久久久久草黄色片AV在线观看| 欧美成人精品A片免费一区99| 亚洲精品一区无码A片| 婷婷五月天影院| 五月开心深深爱激情综合 | www.婷婷五月天.com| 色日本综合| 99热这里只有精品8| 天天干天天操天天爽| 丁香六月久久| 欧美日本99| 亚洲无码猫咪| 成人国产欧美大片一区| 五月婷在线| 开心激情网在线| 久久只有18视频| 这里只有精品久久| 1024操逼| 日韩一级淫乱片一区二区三区| 婷婷丁香六月| 五月丁香色综合| 久久久97| 99精品偷自拍| 黃色三级三级三级三级 qixing300.shrkbk.com www.jinbozs.com tianmiaosw.com | 天天色色婷婷| 可以直接看的av| 玖玖综合色| 五月丁香香蕉| 婷婷五月花| 色五月婷婷网| av五月天婷婷丁香| 丰满少妇乱A片无码| 99资源在线| 婷婷久久六月天| 天天舔天天| 色天堂A| 亚洲色色爱| 偷偷与邻居做爰完整视频| 伊人婷婷大香蕉| 色播jjjj| 秋霞A V毛片| 三十路磁力链接| www.精品99| 少妇伦子伦精品无吗| 色玖玖玖| 九九亚洲| 婷婷大香焦| 欧美内射AA| 天天在线久久综合| 超碰成人av| 伊人玖玖婷婷| 天天干天天爽天天爽| 天天se在线视频| 婷婷五月天基地| 五月丁香激情片| 日本成人噜噜噜| 人妻熟人中文字幕一区二区| 久热69| 99热99成人| 99碰碰| 超碰网站在线观看| 色狠狠综合| 丁香五月九九| 69色婷婷| 91疯狂操操操操| 婷婷五月天久久久| 伊人激情网| 91九色 熟| 激情综合五月色丁香婷婷| 无码激情AAAAA片-区区| 亚洲激情免费视频| 色婷婷电影网| 亚洲性色XXXXX| www:99热视频| 激情综合色图| 人妻久久久久久久久妻久久久久久久久| 五月丁香啪啪网| 男人天堂亚洲综合| 亚洲午夜在线视频| 五月婷婷丁香社区| 六月婷婷网| 综合伊人久久| 華人性愛AV在線| 91欧美| 激情网婷婷婷| www.婷婷,com| 少妇水多A片太爽了| 五月丁香婷婷综合网| 亚洲综合色色| 激情五婷网| 色色射| 最新精品视频99| 婷婷酒色网| 久久99综合网| 开心婷婷五| 超碰99热在线观看| 这里只有精品1| 天天射天天射一道本日本社区 | 在线一起草av| 九九在线精点品| 色婷婷五月天| 麻豆五月丁香婷婷| 欧美性二区| 玩熟女五十AV一二三区| 久久精品9| 99色免费视频| 九九综合精品| 色色日韩网| AV在线不卡网站| 热热久久精品视频| 久久44| 啪啪啪大香蕉| 婷五月丁香| 婷婷五月丁香综合桃花色网| a在线观看| 夜夜骑日日夜夜| 国产亚洲99久久精品熟| 狠狠操综合| 婷婷激情网五月天| 电影蜘蛛女| 日本99婷婷| 五月天婷婷成人网| www.99热视频| ...婷婷五月综合不卡,国产在线手机| av一区免费看| 色图亚洲91| 97操操| www五月婷婷88导航| 色综合久久88色综合天天看| 婷婷激情五月综合| 99热手机在线精品| 丁香五月婷婷亚洲另类| 天天看夜夜看| 狠狠综合久久| 超碰在线网站| 99热精品在线在线| 99视频在线啪| 蜜臀99精品| 99九九在线| 五月天激情啪啪| 婷婷五月天激情五月天深爱五月天| 亚洲视频在线观看99| 成人婷婷五月天| 1024你懂的欧美曰韩| 日本婷婷色| 日本一级黄色电影| 丁香五月性爱| 欧美啪啪9| 毛片九九九九九九| 婷婷 伊人 久久| 丁香五月成人自拍| 久久色9| 久久久一级AAA| AV大香蕉| 九九亚洲视频| 丰满老熟妇BBBBB搡BBB| 日本丁香五月| 国产综合婷婷| 久青操| 丁香六月婷婷综合激情欧美| 伊人91| 99热精品在线播放| 思思久久99热只有频精品66| 欧美性色A片免费免费观看的 | 色五月激情综合| 九月丁香婷婷综合激情| 五月天天天操天天爽夜夜操| 甈你aaaaa| 亚州视频九九99| 丁香九月婷婷色| 人人人人人人人草| 天天插天天插天天日| 丁香五月综合亚洲| 久久婷婷五月综合色和| 婷婷五月综合体验看| 色丁香久久| 色噜噜狠噜噜视频| 免费看欧美成人A片无码 | 人人人人人人人草| av在线免费播放| 91在线操逼视频| 五月婷婷三级| 爱婷婷久久视频| 91超级碰在线| 色婷婷基地| 91妻人人爽人人看片| 五月婷亚洲精品AV天堂| 五月天狠狠干| 色播五月婷婷| 婷婷五月综合中文字幕| 丁香婷婷黄网站| α久久| 91中文在线| 99热99美国在线观看| A一级操| 亚洲丁香五月天视频| 超碰2021| 中出内射的人妻视频| 五月婷婷激情网| 日韩av变天就操逼不卡区| 天堂婷婷五月在线| 2017狠狠干| 99色综合| 婷婷六月视频| 96丁香六月婷婷蜜桃综合久久| 丁香五月区| 中文字幕 中文字幕明步| 黄色AAAAAAA| 丁香五月在线看| 五月丁香人妻| 久思思热视频在线观看| 婷婷五月天激情小说| 婷婷伊人綜合| WWW.99热| 五月婷婷色色| 色综合色五月| 国产精品-第3页-91JQ就要激情网91JQ5.JQJQ926.XYZ | 毛v一区二区视频| AV操逼网| 欧美性爱日韩性爱| 久久五月视频| 天天久久人人| 开心激情综合| 色噜噜伊人| 中文字幕婷婷| 天天日日人| 欧美婷婷色| 伊人国产婷婷五月天| 激情婷婷丁香色五月| 婷婷激情社区| 香蕉久久五月| 国产精品蜜臀99| 综合激情在线视频| 亚洲99综合| 91超碰人人操| 五月天久久婷婷婷| 色婷婷五月影院| 激情图片婷婷| 精品一二三区久久AAA片| 99'无码| 噼里啪啦完整版中文在线观看| 干婷婷五月天| 丁香五月成人社区| 国产26uuu视频| 色色色色色色色色色色色色色色,网站| 天天爱天天操| 五月婷婷香蕉| 日本婷久久| 欧美三级巜人妻互换| www,色婷婷| 在线VA视频| 久久狠狠干| 五月天色小说| 五月香婷婷| 五月色 亚洲| 狼人婷婷久久| 大香蕉婷婷| 丁香六月激情蜜桃| 五月丁香久久综合| 免费视频99| 日本颜色视频人人爱| 激情五月图| 97人妻碰碰碰久久香蕉| 五月婷婷偷| 日本在线观看91| 99久久国产宗和精品1上映| 99国产小视频| 日日夜夜青青草| 大香蕉久久久久| 日本三级第一页| 亚洲黄色影视| 婷婷六月啪啪| 久久久婷婷五月亚洲97号色| 狠狠狠激情网| 丁香五月婷婷久久综合激情网 | 激情四射五月天偷偷看婷婷| 亚洲成人av在线播放| 人人操97| 人人摸人人干人人做| 色色综合日韩| 777丁香六月青青草婷婷综合久月| 婷婷五月无码| 99九精品| 激情人妻综合| 在线超碰精品| 97超级操操| 日韩av在线播放综合网| 亚洲性爱AV| 九九色插| 欧在线一区| 五月丁香日逼| 丁香激情五月| 曰曰久久| 婷婷五月天渟渟| 亚洲9久久精品| 少妇AB又爽又紧无码网站| 超碰91在线| 亚洲色频| 超碰免费人妻| 思思久久99热只有频精品66| 超碰免费观看| av操一操| 九九热a| 五月天激日本色情在线| 伊人五月久久| 五月天色婷婷综合| 五月丁香婷婷啪啪| 天天爽夜夜操| 天天操天天操天天操天天操天天操 | 色亭亭丁香五月天| 婷婷欧美激情| 久久视网36| 狼人久草| 性爱综合网| 中国激情网| 婷婷射综合| 三级毛片视频| 亚洲中文AV网站| 99在线精品视频免费| 五月丁香伊人网| 97干网站| 超碰狠狠干99| 五月天综合久久| 婷婷成人综合五月| 色噜噜狠狠色综合日日| 亚洲爆乳无码精品AAA片蜜桃| 伊人狠狠色婷婷综合丁香一区| 色久婷婷五月| 天天摸天天舔天天天天爽| 久久99视频| 99在线热视频| 色色自拍视频网站| 五月婷婷影院| 狠狠色综合五月人人| 操操操操操操婷婷五月天| 亚洲激情五月天| 97色精品视频| 亚洲视频色色| 丁香综合网| 91 九色 入口| 六月伊人婷婷| 中文字幕网伦射乱中文| 久久久激情视频| 操操操Av| 中文字幕人妻AV| 丁香五月激情网| 欧美精品999| 久一这里有精品国产| 久久精典| 天天操夜夜操| aⅤ79成人片| 丁香五月婷婷大香蕉| 狠狠精品干练久久久无码中文字幕| 久9热视频在线观看| 亚洲色视频| 大大香蕉综合在线| 五月婷婷花| 久久久精品人妻| 天天爽在线视频| 久久视频这里有精品99| 影音先锋噜一噜| 九九热免费| 久99视频| 99热日韩| 久久丁香五月| 精品五月天| 色婷婷五月天偷拍| 色99视频| 99天堂网| 97色碰| 九九亚洲小视频| 婷婷伊人久久无码色五月| 丁香五月天激情婷婷丁香六月| 五月丁香淫淫婷婷婷| 婷婷丁香社区| 日本啪啪网| 538午夜激情| 99干日本| 另类色视频| 99久久9| 美女主播野战视步页| 草榴视频黄色网| 天天舔天天爽| 五月天啪啪| 丁香五月玖玖| 激情爱爱网站| 激情五月六月婷婷综合啪啪| 黄色av高清| 亚洲欧美999| 久艹大香蕉| 国产毛片精品一区二区色欲黄A片 国产人妻777人伦精品HD | 五月天激情综合| 婷婷六月天精品| 国内久久亭亭| 专区无日本视频高清8| 久久婷婷五月综合| 婷婷色播综合五月| 中文字幕成人| 五月丁了香蕉综合| 天天做天天爱天天高潮| 欧美婷婷综合| 婷婷黄色五月天在线视频| www.com.色色| 人妻久久久久久久| 婷婷丁香色五月| 91在线日| 99ri精品| 综合色色综合| 黄色av网站在线免费播放| 五月婷婷五月色| 伊人干综合| 99在线视频网址在线观看| 亚洲另类婷婷综合| 丁香六月爱综合| 亚洲色色图片| 天天爽天天爽天天爽天天爽天天爽天天爽天天| 人人97操| 裸体做A爰片毛片A片免费| 色色色婷婷五月天| 婷婷五月精品在线| 婷婷五月情色| 亚洲色色爱| 久久久久久天天日天天爱| 色婷丁香| 五月婷色| 第二色AⅤ| 激情五月开心五月在线视频| 九九综合九九| 日良久久| 99热在线爱| WWW99热| 亚洲啪啪啪啪| 人人操Av| 夜夜躁婷婷AV| AV在线收看| 97久久五月丁香婷婷| 久久综合色五月| 91九色国产在线| 激情婷婷| www.五月天性.com| 综合视频五月| 天天干,天天舔| 婷婷五月天亚洲综合| 免费啪啪亚州视频| 精品成人无码A片观看香草视频| 99精品偷自拍| 综合网亚洲| 亚洲天天操| 五月天激情图| 婷婷深爱五月丁香网| 九九九成人在线视频| 五月丁香在线综合| 色婷婷9| 亚洲综合久| 97色吧| 亚洲一二三网| 久久草中文日韩欧美| 五月激情日本在线| 情五月亚洲婷婷| 亚洲激情综合免费| 激情五月天色网站| 中文AV网站| 婷婷五月激情图片| 国产xxxxx在线观看| 九九色热视频| 五月天婷婷色色网| 五月天色综合| 国产亚洲色婷婷久久99精品9j| 99热大香蕉| 天天色天天色天天色天天色天天色| 99精品国产热久久91色欲| 影音先锋日本三级资源| 九九久久五月天综合伊人| 97色婷婷成人综合在线观看| 午夜国产精品AV在线播放| 九月激情网| 午夜69成人做爰视频| enecarbon-materials.com污K127封锁请涟系@wip1688 | 亚洲欧美成人在线| 五月天激情AV| 日本99久久| A级毛片高清免费不卡播放谢谢谢谢| 色天天综合色| 五月婷婷在线综合| 99精品国产热久久91色欲| 日韩 mm 不卡| 一本综合丁香日日狠狠色| 激情综合五月天| 国产偷人爽久久久久久老妇APP | 亚洲激情另类| 日韩精品超碰在线观看| 亚洲最大视频| 九九在线这里只有精品视频| 婷婷97碰碰| Caop在线| 五月婷婷激情| 激情丁香六月| 五月天综合激情网| 五月丁香狠狠爱| 五月婷婷啪啪啪| 婷婷五月综合社区| 五月综合激情| 五月天丁香综合| 婷婷婷婷色| 五月丁香猫咪久久婷婷综合视频激情四射网入口 | 人妻久久婷婷| 婷婷五月激情图片| av激情在线| 日本人妻A片成人免费看片| 久久久激情视频| 人妻中文在线| 婷婷操逼| 色五月丁香五月婷婷五月成人网 | 日韩国产在线精品| 久久人妻在线| 久久加勒比| 五月色网| 26uuuavcom| 久久性刺激| 图片区 小说区 区 亚洲五月| 激情综合网,婷婷五月天| 欧美超碰人人| 色色99| 婷婷日日天天| 婷婷激情九月| 99ER热精品视频| 97 A I色色| 久久五月人人摸| 91久久九色| 亚洲综合成人网| 涩婷婷五月天| 婷婷五月天AV| 亚洲AV成人在线观看| 狠狠干夜夜干| 婷婷六月五月| 丁香婷婷色五月| 丁香五月婷婷婷桃花影院| 91一起操| 婷婷九月丁香| 五月天婷爱综合| 日本一道久久| 欧美偷偷操| 九九热精品| 丁香五月久久| 久久久久久久人妻| 综合五月婷婷| 丁香婷婷五月天色播| 伊久久婷婷| 久久亭亭电影| 噼里啪啦完整版中文在线观看| 五月天淫乱视频| 日日狠狠久久偷偷四色综合免费 | 日韩成人电影AV| www.天天干| 久久机热这里只有精品| 五月婷亚洲精品AV天堂| 五月天激情日色在线| 河北真实伦对白精彩脏话| 日本精品99| 色色色色色网| 人人干人人操人人摸| 五月丁香婷婷人体|