99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

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

華為云DevCloud與CodeHub實(shí)戰(zhàn):移動(dòng)端Git配置與環(huán)境對(duì)齊指南

華為云DevCloud與CodeHub實(shí)戰(zhàn):移動(dòng)端Git配置與環(huán)境對(duì)齊指南 1. 初識(shí)DevCloud與CodeHub為什么移動(dòng)端團(tuán)隊(duì)要重構(gòu)代碼托管鏈路我們團(tuán)隊(duì)之前一直用自建Git服務(wù)器托管代碼服務(wù)器放在某辦公樓的機(jī)房里平時(shí)用著還行一旦遇到網(wǎng)絡(luò)抖動(dòng)或者機(jī)房斷電整個(gè)團(tuán)隊(duì)的提交和拉取就全卡住了。最難受的是iOS和Android兩個(gè)端的同學(xué)要用不同的工具鏈代碼托管和構(gòu)建環(huán)境割裂得很厲害每次發(fā)版都要人工協(xié)調(diào)半天。后來我們立項(xiàng)做一款新的移動(dòng)端管理App決定把代碼托管和云端構(gòu)建整體遷到華為云DevCloud上核心的代碼倉(cāng)庫放到CodeHub。這件事看起來只是把Git倉(cāng)庫換個(gè)地方放實(shí)際操作下來牽扯到的東西比我預(yù)想的多得多SSH密鑰怎么配、iOS和Android兩端如何共用一套托管策略、本地環(huán)境怎么和云端構(gòu)建機(jī)對(duì)齊、CI/CD流水線怎么串聯(lián)起來。這篇就是整個(gè)系列的第一篇專門講Git連接CodeHub以及iOS、Android的本地和云端開發(fā)環(huán)境怎么一步步搭起來。如果你正準(zhǔn)備把移動(dòng)端項(xiàng)目遷到華為云或者剛開始用DevCloud和CodeHub這篇應(yīng)該能幫你省不少時(shí)間。我個(gè)人的體會(huì)是遷移最怕的不是技術(shù)難度而是兩邊環(huán)境不一致。本地是本地云端是云端代碼托管又是中間那一環(huán)任何一環(huán)版本對(duì)不上后面跑流水線的時(shí)候就會(huì)冒出一堆莫名其妙的報(bào)錯(cuò)。所以這篇文章會(huì)從代碼托管這條鏈路切入先把Git和CodeHub的連接徹底講透再分別展開iOS和Android這邊的環(huán)境配置最后把云端構(gòu)建的環(huán)境對(duì)齊和常見坑也一并說清楚。1.1 華為云DevCloud到底是什么和CodeHub是什么關(guān)系先把這個(gè)概念理清楚。華為云DevCloud現(xiàn)在控制臺(tái)里也經(jīng)??吹紺odeArts品牌指的是同一套DevOps服務(wù)是一個(gè)一站式研發(fā)云平臺(tái)涵蓋項(xiàng)目管理、代碼托管、編譯構(gòu)建、部署發(fā)布、流水線等能力。而CodeHub是其中負(fù)責(zé)代碼托管的模塊本質(zhì)上就是一個(gè)基于Git的云端倉(cāng)庫服務(wù)和GitHub、GitLab屬于同類產(chǎn)品只是它深度集成在華為云的整體生態(tài)里。對(duì)于移動(dòng)端團(tuán)隊(duì)來說CodeHub解決的核心痛點(diǎn)是倉(cāng)庫不再依賴內(nèi)網(wǎng)服務(wù)器團(tuán)隊(duì)成員在任意網(wǎng)絡(luò)環(huán)境都能拉取和推送代碼倉(cāng)庫權(quán)限可以和DevCloud的項(xiàng)目成員體系打通同時(shí)代碼倉(cāng)庫和構(gòu)建服務(wù)天然聯(lián)動(dòng)后續(xù)做CI/CD的時(shí)候不需要額外寫一堆腳本去對(duì)接。這里有一個(gè)很重要的認(rèn)知CodeHub不是簡(jiǎn)單的云盤版Git倉(cāng)庫它和DevCloud的流水線、編譯構(gòu)建任務(wù)是聯(lián)動(dòng)的。你在本地提交代碼到CodeHubCodeHub觸發(fā)Webhook云端構(gòu)建機(jī)拉取最新代碼開始編譯整個(gè)鏈條是通的。如果只是把代碼推到遠(yuǎn)程倉(cāng)庫而不用云端構(gòu)建那這套遷移的意義就打了一半折扣。1.2 為什么我覺得這一步值得單獨(dú)寫一篇很多教程上來就直接讓你執(zhí)行g(shù)it clone忽略了環(huán)境搭建的系統(tǒng)性。但移動(dòng)端開發(fā)和后端不一樣涉及的本地工具鏈很重iOS必須用macOS加XcodeAndroid需要JDK、Android Studio、SDK、Gradle一大堆。如果只講倉(cāng)庫配置不講環(huán)境對(duì)齊你本地跑得好好的代碼到了云端構(gòu)建機(jī)上大概率編譯不過。另外一個(gè)容易被忽略的問題是iOS和Android兩個(gè)平臺(tái)對(duì)Git的使用習(xí)慣有差異。iOS端通常直接在Xcode里操作GitAndroid端則習(xí)慣用Android Studio的VCS菜單或者命令行。兩端提交代碼時(shí)對(duì).gitignore的處理、對(duì)二進(jìn)制文件的管理方式也不同。既然放在同一個(gè)CodeHub倉(cāng)庫下這些差異就必須在環(huán)境搭建階段就統(tǒng)一規(guī)范好。所以我這篇的定位是先搞定代碼托管這一層再搞定兩端環(huán)境這一層兩者的交叉點(diǎn)就是本地Git配置和SSH密鑰。下面我從最基礎(chǔ)的SSH配置開始講這是連接CodeHub的第一道關(guān)卡。2. Git與CodeHub建立連接SSH密鑰生成、配置與驗(yàn)證全程記錄2.1 本地Git環(huán)境準(zhǔn)備與版本選擇無論iOS還是Android端第一步都是在本地裝好Git。macOS上我推薦用Homebrew安裝命令是brew install git安裝完檢查版本git --version這里有一個(gè)需要注意的細(xì)節(jié)macOS自帶的Git版本可能比較老而且Xcode如果更新過系統(tǒng)的Git路徑可能會(huì)被Xcode的命令行工具覆蓋導(dǎo)致版本混亂。建議用Homebrew的Git并確保which git指向/usr/local/bin/git或/opt/homebrew/bin/git不要指向/usr/bin/git。Windows端推薦直接裝Git for Windows安裝時(shí)選Use Git from the Windows Command Prompt和Checkout as-is, commit as-is這兩個(gè)選項(xiàng)前者方便在CMD和PowerShell里直接用git命令后者避免行尾符轉(zhuǎn)換引發(fā)一堆莫名奇妙的diff。Android端的同學(xué)還要裝JDK和Android Studio這個(gè)我在第四部分細(xì)說這里先保證Git本身是可用的。2.2 SSH密鑰對(duì)生成一對(duì)密鑰還是兩對(duì)密鑰連接CodeHub有兩種方式HTTPS和SSH。HTTPS每次push都要輸入用戶名密碼可以配置credential緩存但團(tuán)隊(duì)協(xié)作時(shí)容易出問題SSH則是通過公鑰認(rèn)證配置好之后push/pull都不需要再輸密碼。移動(dòng)端團(tuán)隊(duì)我強(qiáng)烈建議用SSH。生成SSH密鑰的命令ssh-keygen -t rsa -b 4096 -C your_emailexample.com -f ~/.ssh/id_rsa_devcloud這里有幾個(gè)參數(shù)說明一下-t rsa指定算法雖然現(xiàn)在也支持Ed25519但CodeHub對(duì)RSA的兼容性最穩(wěn)妥4096位長(zhǎng)度足夠安全-C是注釋建議填你在DevCloud注冊(cè)的郵箱方便后期識(shí)別-f指定文件名我習(xí)慣不以默認(rèn)的id_rsa命名而是單獨(dú)命名為id_rsa_devcloud這樣如果電腦上還有其他Git平臺(tái)比如自建GitLab或GitHub的密鑰就不會(huì)互相覆蓋生成之后~/.ssh目錄下會(huì)出現(xiàn)兩個(gè)文件id_rsa_devcloud私鑰和id_rsa_devcloud.pub公鑰。私鑰留在本地公鑰要填到CodeHub后臺(tái)。如果你同時(shí)維護(hù)多個(gè)代碼托管平臺(tái)我建議在~/.ssh/config里做區(qū)分。示例配置Host codehub HostName codehub.devcloud.huaweicloud.com User git IdentityFile ~/.ssh/id_rsa_devcloud這樣后面git clone時(shí)可以直接用gitcodehub:Group/Repo.git這種寫法Git會(huì)自動(dòng)使用對(duì)應(yīng)密鑰。沒有這個(gè)配置也不影響功能但配置了之后在多密鑰環(huán)境下會(huì)省掉很多麻煩。2.3 公鑰配置到CodeHub后臺(tái)與本地驗(yàn)證登錄華為云DevCloud控制臺(tái)進(jìn)入CodeHub服務(wù)在個(gè)人設(shè)置里找到SSH密鑰管理把id_rsa_devcloud.pub里的內(nèi)容完整復(fù)制粘貼進(jìn)去保存即可。這個(gè)公鑰和你的華為云賬號(hào)綁定同一賬號(hào)下的所有CodeHub倉(cāng)庫都能用。然后在本地驗(yàn)證連通性ssh -T gitcodehub.devcloud.huaweicloud.com第一次連接會(huì)提示確認(rèn)指紋輸入yes回車。如果返回類似于Welcome to CodeHub的歡迎信息說明密鑰配置成功。如果提示權(quán)限拒絕Permission denied按順序排查公鑰是否完整復(fù)制有沒有多復(fù)制空格或者漏掉末尾的郵箱注釋私鑰文件的權(quán)限是否過寬運(yùn)行chmod 600 ~/.ssh/id_rsa_devcloudssh-add -l查看私鑰是否已加載到ssh-agent沒有就執(zhí)行ssh-add ~/.ssh/id_rsa_devcloud這里我要特別提一個(gè)坑Windows環(huán)境下如果你用的是Git for Windows自帶的OpenSSH但同時(shí)又裝了別的SSH工具可能會(huì)遇到公鑰能配但就是連不上的問題大概率是SSH客戶端選擇沖突。解決辦法是在Git for Windows的安裝選項(xiàng)里明確設(shè)置Use OpenSSH或者在系統(tǒng)環(huán)境變量里把GIT_SSH指向正確的ssh.exe路徑。2.4 創(chuàng)建CodeHub倉(cāng)庫并完成首次push在CodeHub后臺(tái)新建倉(cāng)庫填充倉(cāng)庫名選擇可見范圍私有還是公開。國(guó)內(nèi)團(tuán)隊(duì)項(xiàng)目的代碼倉(cāng)庫保險(xiǎn)起見都選私有同時(shí)注意DevCloud里項(xiàng)目的成員權(quán)限配置——不是項(xiàng)目成員的人看不到倉(cāng)庫這一點(diǎn)和GitLab的Group權(quán)限模型類似。倉(cāng)庫創(chuàng)建后CodeHub會(huì)給出完整的命令行指引HTTPS和SSH兩種方式都有。我們按SSH的方式操作。以iOS端為例如果項(xiàng)目已經(jīng)存在本地cd your-ios-project git init git add . git commit -m Initial commit git remote add origin gitcodehub.devcloud.huaweicloud.com:GroupName/RepoName.git git push -u origin masterAndroid端的操作完全一致。這里提醒幾個(gè)細(xì)節(jié)首次git add .之前務(wù)必先把.gitignore寫好。iOS項(xiàng)目至少要忽略Pods/、DerivedData/、*.xcuserstateAndroid項(xiàng)目至少要忽略build/、local.properties、.idea/。這些目錄一旦被提交進(jìn)去后面再想清理就得用git rm -r --cached麻煩不說還容易誤刪分支命名建議統(tǒng)一用master或mainDevCloud的倉(cāng)庫默認(rèn)分支可以在后臺(tái)改。后續(xù)如果走Git Flow再按需建develop、release分支首次push的倉(cāng)庫建議不要太大超過幾百M(fèi)B時(shí)用git gc壓縮一下對(duì)象否則網(wǎng)絡(luò)不穩(wěn)定時(shí)容易push失敗3. iOS本地與云端開發(fā)環(huán)境Xcode、模擬器與構(gòu)建機(jī)的配合3.1 Xcode版本選擇與命令行工具iOS開發(fā)繞不開Xcode。官方渠道是App Store安裝等Xcode下載完再裝Command Line Toolsxcode-select --install裝完后把命令行工具路徑指向Xcode自帶的工具鏈sudo xcode-select -s /Applications/Xcode.app/Contents/Developer然后驗(yàn)證xcode-select -p這一步看似簡(jiǎn)單但我遇到過一個(gè)很頭疼的問題Xcode更新到新版本后xcodebuild命令報(bào)錯(cuò)找不到SDK。這個(gè)問題的根源是xcode-select的路徑被重置了或者多個(gè)Xcode版本并存導(dǎo)致系統(tǒng)指向了錯(cuò)誤的Developer目錄。所以每次升級(jí)Xcode后我都習(xí)慣先跑一遍xcode-select -p確認(rèn)路徑再跑xcodebuild -version確認(rèn)版本。云端構(gòu)建這部分華為云DevCloud提供macOS構(gòu)建機(jī)。這里的關(guān)鍵點(diǎn)是本地Xcode主版本和云端構(gòu)建機(jī)的Xcode版本必須一致或至少兼容。比如本地用Xcode 15云端也盡量保持在15這個(gè)大版本。如果不一致最容易出現(xiàn)的情況是本地編譯鏈接通過提交上去之后云端構(gòu)建報(bào)錯(cuò)什么SDK版本過低parameter of xxx is unavailable之類看起來像是代碼問題實(shí)際是工具鏈版本不一致導(dǎo)致的。DevCloud的構(gòu)建任務(wù)配置頁面里可以選擇構(gòu)建機(jī)類型和Xcode版本這一步一定要和本地對(duì)齊。我記過一次很典型的例子A同學(xué)本地Xcode 16提交的代碼云端的構(gòu)建機(jī)還停留在Xcode 14結(jié)果一跑流水線就報(bào)iOS 17 SDK required。當(dāng)時(shí)排查了半小時(shí)最后發(fā)現(xiàn)不是代碼問題純粹是版本錯(cuò)位。3.2 本地模擬器與真機(jī)調(diào)試的環(huán)境細(xì)節(jié)模擬器本身不算復(fù)雜但涉及證書簽名的環(huán)節(jié)容易卡人。模擬器構(gòu)建不需要證書直接CommandR就能跑真機(jī)調(diào)試需要Apple Development證書和描述文件。這個(gè)證書體系對(duì)新手來說是第一道坎。實(shí)操層面在Xcode的Signing Capabilities面板里勾選Automatically manage signingXcode會(huì)自動(dòng)幫你生成開發(fā)證書和描述文件。但如果你是用CodeHub拉下來的倉(cāng)庫且項(xiàng)目里的Bundle Identifier和當(dāng)前開發(fā)者賬號(hào)不匹配會(huì)自動(dòng)簽名會(huì)失敗。我一般建議確認(rèn)團(tuán)隊(duì)里每個(gè)開發(fā)者在DevCloud項(xiàng)目的成員列表里并且有對(duì)應(yīng)的Apple開發(fā)者賬號(hào)權(quán)限項(xiàng)目里如果涉及推送、App Group等能力在Apple開發(fā)者后臺(tái)提前配好不要提交個(gè)人證書和描述文件到Git倉(cāng)庫用Xcode的自動(dòng)管理機(jī)制代替云端iOS構(gòu)建時(shí)證書的處理方式不同需要把證書和描述文件上傳到DevCloud的證書管理里構(gòu)建時(shí)通過配置關(guān)聯(lián)。這個(gè)我放到第五節(jié)講流水線時(shí)一起說。3.3 使用Xcode連接CodeHub倉(cāng)庫的操作路徑Xcode內(nèi)置了Git客戶端在項(xiàng)目初始化的界面上Xcode 15及以上的版本在創(chuàng)建項(xiàng)目時(shí)可以選擇源碼控制。如果是已有的項(xiàng)目要通過Xcode連接CodeHub可以在Xcode的Source Control菜單里添加遠(yuǎn)程倉(cāng)庫填入CodeHub的SSH地址。這里有個(gè)Xcode使用上的細(xì)節(jié)Xcode的Git界面在查看Diff、提交、推送時(shí)還算好用但遇到?jīng)_突解決時(shí)我還是建議切換到命令行或第三方工具。Xcode的沖突解決界面做得比較簡(jiǎn)陋多個(gè)紛爭(zhēng)并發(fā)時(shí)容易點(diǎn)錯(cuò)導(dǎo)致誤把別人的修改覆蓋掉。比較穩(wěn)妥的工作流是在Xcode里寫代碼、看Diff、做常規(guī)提交切換分支、合并、處理沖突時(shí)用命令行工具推送到遠(yuǎn)程之前先在命令行看一遍git log和git status另外Xcode項(xiàng)目文件.xcodeproj是結(jié)構(gòu)化目錄Git合并時(shí)經(jīng)常出現(xiàn)項(xiàng)目文件沖突。團(tuán)隊(duì)協(xié)作時(shí)最好約定一個(gè)規(guī)則同一時(shí)間段內(nèi)盡量不要多人同時(shí)修改項(xiàng)目配置比如簽名配置、Target設(shè)置這些能避免大量無意義的沖突。4. Android本地與云端開發(fā)環(huán)境Android Studio、Gradle與CodeHub的三角組合4.1 JDK與Android Studio安裝的版本匹配問題Android端的本地環(huán)境搭建第一個(gè)坑就是JDK版本。Android Studio新版本如Koala及以后內(nèi)置了JBRJetBrains Runtime但Gradle構(gòu)建時(shí)仍需要Java環(huán)境。常見的匹配關(guān)系大致如下Gradle版本JDK版本要求AGP版本建議7.xJDK 11或177.x8.xJDK 178.x8.5JDK 17或218.5如果不匹配最常見的就是Unsupported class file major version這類報(bào)錯(cuò)。根本原因是Gradle運(yùn)行時(shí)的JDK和編譯字節(jié)碼的JDK不一致。Android Studio自帶JBR但命令行構(gòu)建時(shí)比如在CI環(huán)境里系統(tǒng)默認(rèn)的java可能是Oracle JDK或者OpenJDK的某個(gè)版本?,F(xiàn)在大部分企業(yè)項(xiàng)目的實(shí)踐經(jīng)驗(yàn)是在項(xiàng)目根目錄的gradle.properties或.java-version文件里固定JDK版本然后確保本地的JAVA_HOME指向正確的路徑。Android Studio安裝完成后還要通過SDK Manager下載對(duì)應(yīng)版本的Android SDK Platform、Build Tools和NDK如果你的項(xiàng)目用C/C代碼。SDK的路徑配置很重要Android Studio默認(rèn)會(huì)寫到用戶目錄下的Android/Sdk這個(gè)路徑務(wù)必記下來后面配置云端構(gòu)建時(shí)還要用到。4.2 Gradle初始化與項(xiàng)目依賴同步Android項(xiàng)目的構(gòu)建核心是Gradle。新建項(xiàng)目或從CodeHub拉取項(xiàng)目后Android Studio會(huì)自動(dòng)同步Gradle依賴。但如果是從倉(cāng)庫拉的老項(xiàng)目大概率會(huì)遇到兩個(gè)問題Gradle wrapper版本和本地已安裝的Gradle版本不匹配依賴源拉取超時(shí)第一個(gè)問題的解決辦法是修改gradle/wrapper/gradle-wrapper.properties里的distributionUrl或者直接在Android Studio里調(diào)整Gradle JDK版本。第二個(gè)問題在實(shí)際中更常見經(jīng)常是國(guó)內(nèi)網(wǎng)絡(luò)環(huán)境下默認(rèn)的Google Maven倉(cāng)庫拉取慢。常用的做法是在項(xiàng)目級(jí)build.gradle里配置阿里云鏡像倉(cāng)庫buildscript { repositories { maven { url https://maven.aliyun.com/repository/google } maven { url https://maven.aliyun.com/repository/public } maven { url https://maven.aliyun.com/repository/gradle-plugin } } }這個(gè)配置我一般建議只在本地開發(fā)環(huán)境加提交代碼時(shí)通過git update-index --skip-worktree build.gradle的方式避免誤提交或者干脆在CI環(huán)境里用環(huán)境變量控制鏡像源。原因也很簡(jiǎn)單如果所有團(tuán)隊(duì)成員都用自己的鏡像配置可能會(huì)出現(xiàn)依賴源不一致、構(gòu)建結(jié)果不一致的情況。4.3 Android Studio的VCS配置與從CodeHub拉取項(xiàng)目Android Studio內(nèi)置了Git支持首次打開項(xiàng)目后通過VCS菜單可以把本地倉(cāng)庫切換到CodeHub遠(yuǎn)程。操作路徑是VCS Git Remotes添加CodeHub的SSH地址。這里有一個(gè)重要的操作習(xí)慣Android Studio里右鍵項(xiàng)目文件時(shí)會(huì)看到很多Git相關(guān)的操作但不要用Android Studio的Git去處理項(xiàng)目文件的沖突。Android Studio在合并多個(gè)模塊的Gradle腳本時(shí)自動(dòng)合并策略有時(shí)候會(huì)把兩個(gè)不相關(guān)的改動(dòng)強(qiáng)行合并到一起產(chǎn)生邏輯層面的錯(cuò)誤。一般認(rèn)為最穩(wěn)妥的Android Git操作順序是在Android Studio里開發(fā)編碼切換到命令行執(zhí)行g(shù)it pull --rebase拉取遠(yuǎn)端最新代碼手動(dòng)處理沖突后再回Android Studio刷新項(xiàng)目本地編譯通過后再push到CodeHub這樣看似多了一步實(shí)際能避免很多Git操作造成的問題。4.4 Android云端構(gòu)建環(huán)境的認(rèn)知本質(zhì)上就是一臺(tái)預(yù)裝SDK的Linux機(jī)器DevCloud的Android構(gòu)建機(jī)本質(zhì)上是一臺(tái)預(yù)裝了JDK、Android SDK、Gradle的Linux虛擬機(jī)。你在本地能跑通的構(gòu)建理論上云端也能跑通前提是環(huán)境對(duì)齊。這里最容易出問題的點(diǎn)有三個(gè)SDK版本本地裝的是API 34云端構(gòu)建機(jī)可能只預(yù)裝了API 33編譯時(shí)就會(huì)報(bào)SDK component platforms;android-34 was not found。解決辦法是在流水線構(gòu)建任務(wù)里加上SDK安裝步驟或者通過腳本自動(dòng)下載對(duì)應(yīng)版本Gradle緩存云端構(gòu)建機(jī)每次構(gòu)建時(shí)如果不是同一臺(tái)機(jī)器Gradle的依賴緩存可能為空構(gòu)建耗時(shí)明顯拉長(zhǎng)。DevCloud構(gòu)建任務(wù)支持配置緩存策略建議開啟簽名配置release包的簽名文件.jks不要放進(jìn)倉(cāng)庫本地構(gòu)建時(shí)用local.properties引用簽名路徑云端構(gòu)建時(shí)通過DevCloud的私密參數(shù)下發(fā)我在初期的項(xiàng)目里吃過虧本地release構(gòu)建一直正常云端一跑就報(bào)Key was created with errors排查后發(fā)現(xiàn)是簽名文件被加密后云端構(gòu)建機(jī)上解密生成的臨時(shí)文件權(quán)限不對(duì)。這種問題很隱蔽寫在流水線配置里要注意文件的加密與解密順序。5. 云的流水線配置從代碼提交到自動(dòng)化構(gòu)建的核心鏈路5.1 在DevCloud里創(chuàng)建編譯構(gòu)建任務(wù)DevCloud的CI/CD核心是流水線Pipeline構(gòu)建任務(wù)可以單獨(dú)配置也可以放在流水線里串聯(lián)。以Android為例最基本的構(gòu)建任務(wù)是從CodeHub拉取代碼執(zhí)行./gradlew assembleDebug產(chǎn)出APK。流程上先在DevCloud控制臺(tái)進(jìn)入編譯構(gòu)建新建構(gòu)建任務(wù)選擇代碼源為CodeHub選中對(duì)應(yīng)的倉(cāng)庫和分支選擇構(gòu)建模板Android有現(xiàn)成的模板會(huì)幫你填充Gradle命令和SDK路徑配置構(gòu)建機(jī)類型一般選Linux Docker保存之后手動(dòng)執(zhí)行一次看構(gòu)建日志這里有一個(gè)很關(guān)鍵的點(diǎn)構(gòu)建任務(wù)拉取代碼時(shí)用的憑證。DevCloud的構(gòu)建任務(wù)默認(rèn)使用你創(chuàng)建任務(wù)時(shí)關(guān)聯(lián)的賬號(hào)權(quán)限但它拉取代碼的憑證是獨(dú)立的。如果構(gòu)建日志里出現(xiàn)Authentication failed不要慌去構(gòu)建任務(wù)的代碼源配置里檢查是否選擇了正確的CodeHub倉(cāng)庫訪問權(quán)限。另一種路徑是你在自己的流水線里寫自定義腳本用git clone命令手動(dòng)拉取代碼然后執(zhí)行構(gòu)建命令。這種方式的靈活度最高但你必須自己管理SSH密鑰或HTTPS憑證在構(gòu)建機(jī)上的存放位置稍有不慎就會(huì)把密鑰泄露到構(gòu)建日志里。我建議新手優(yōu)先用DevCloud自帶代碼源配置不要在腳本里手動(dòng)處理認(rèn)證。5.2 iOS云端構(gòu)建的證書管理與描述文件策略iOS云端構(gòu)建相對(duì)Android更繁瑣核心在于證書和描述文件不能像Android那樣簡(jiǎn)單用密鑰參數(shù)。DevCloud提供證書管理功能把.p12證書文件和.mobileprovision上傳到云端構(gòu)建時(shí)綁定到對(duì)應(yīng)任務(wù)。實(shí)操中我發(fā)現(xiàn)以下幾個(gè)環(huán)節(jié)是坑點(diǎn)高發(fā)區(qū)證書導(dǎo)出在鑰匙串訪問里導(dǎo)出.p12時(shí)注意勾選包含私鑰并設(shè)置導(dǎo)出密碼。這個(gè)密碼在云端構(gòu)建配置時(shí)要用到描述文件選擇確保描述文件包含的設(shè)備列表包含運(yùn)行真機(jī)的設(shè)備或者使用App Store類型描述文件。如果描述文件不匹配簽名階段會(huì)直接報(bào)錯(cuò)構(gòu)建命令的選擇xcodebuild的-exportArchive階段要指定ExportOptions.plist這個(gè)文件里寫的teamID、method要和證書匹配。我們?cè)趯?shí)際項(xiàng)目中維護(hù)了一個(gè)ExportOptions.plist模板放在倉(cāng)庫里避免每個(gè)人本地手寫導(dǎo)出配置構(gòu)建日志里常見的errSecInternalComponent錯(cuò)誤大多是證書導(dǎo)入到云端Keychain時(shí)權(quán)限問題。DevCloud的文檔里會(huì)提到構(gòu)建機(jī)鑰匙串權(quán)限設(shè)置建議仔細(xì)閱讀這里不再展開。5.3 流水線串聯(lián)提交觸發(fā)、靜態(tài)檢查與產(chǎn)物歸檔當(dāng)兩端構(gòu)建任務(wù)都跑通后就可以把它們串到一條流水線里。DevCloud里創(chuàng)建流水線經(jīng)過這幾個(gè)階段代碼提交時(shí)自動(dòng)觸發(fā)在倉(cāng)庫配置Webhook或者流水線的代碼源綁定CodeHub倉(cāng)庫每次push自動(dòng)啟動(dòng)流水線并行執(zhí)行iOS構(gòu)建和Android構(gòu)建在邏輯上相互獨(dú)立可以配置成并行階段節(jié)省總耗時(shí)靜態(tài)檢查可選DevCloud集成了代碼檢查服務(wù)可以加在構(gòu)建前攔截明顯的編碼規(guī)范問題產(chǎn)物歸檔把生成的.ipa和.apk文件歸檔到DevCloud的軟件發(fā)布庫或制品庫方便測(cè)試同學(xué)直接下載這里分享一下我對(duì)自動(dòng)化程度的建議不是流水線越復(fù)雜越好。早期階段兩端各一條簡(jiǎn)單的構(gòu)建任務(wù)加上手動(dòng)觸發(fā)已經(jīng)比人工打包進(jìn)步一大截。等團(tuán)隊(duì)穩(wěn)定了再逐步加自動(dòng)化觸發(fā)、代碼檢查、自動(dòng)部署到測(cè)試環(huán)境。一上來就配置全自動(dòng)鏈路維護(hù)成本會(huì)很高而且出現(xiàn)問題后排查難度大。5.4 云端構(gòu)建機(jī)與本地環(huán)境的一致性維護(hù)清單這是一個(gè)我強(qiáng)烈建議做成文檔的清單。我們?cè)趯?shí)際運(yùn)營(yíng)中總結(jié)出來的一致性維護(hù)項(xiàng)包括檢查項(xiàng)本地云端構(gòu)建機(jī)Xcode版本Xcode 15.xXcode 15.xAndroid SDK平臺(tái)API 34構(gòu)建腳本中動(dòng)態(tài)安裝JDK版本JDK 17JDK 17Gradle版本由wrapper指定使用wrapper簽名方式本地jks文件云端證書管理依賴源海外或鏡像源與本地保持一致這個(gè)清單不是一勞永逸的。每次系統(tǒng)升級(jí)、工具鏈更新都要重新對(duì)齊一輪。特別是Xcode大版本更新后SDK特性變化很大本地一升級(jí)云端立刻要跟進(jìn)否則下一次云端構(gòu)建就會(huì)失敗。6. 環(huán)境搭建避坑實(shí)錄版本、超時(shí)與權(quán)限邊界的經(jīng)典坑6.1 Xcode升級(jí)后xcodebuild路徑錯(cuò)亂的處理開頭提到過xcode-select的問題再展開講一次具體案例。有一次Xcode從15.2升到15.3之后團(tuán)隊(duì)里幾個(gè)iOS開發(fā)同時(shí)報(bào)告在終端跑xcodebuild時(shí)提示找不到這個(gè)命令。排查后發(fā)現(xiàn)原因是升級(jí)過程中系統(tǒng)把/Library/Developer/CommandLineTools激活成了默認(rèn)開發(fā)者目錄而xcodebuild實(shí)際上在Xcode.app內(nèi)部。運(yùn)行sudo xcode-select -s /Applications/Xcode.app/Contents/Developer即可解決。此外如果安裝了多個(gè)Xcode版本比如Xcode_14.x和Xcode_15.x并存建議在構(gòu)建腳本里顯式指定DEVELOPER_DIR環(huán)境變量否則不同終端環(huán)境可能選到不同的Xcode構(gòu)建結(jié)果都會(huì)不一樣。這里我給的方案是在項(xiàng)目根目錄維護(hù)一個(gè)env.sh腳本里面寫好export DEVELOPER_DIR/Applications/Xcode.app/Contents/Developer export JAVA_HOME/path/to/jdk-17每次打開新終端或者進(jìn)入項(xiàng)目目錄時(shí)先source env.sh從源頭避免環(huán)境錯(cuò)亂。6.2 Gradle依賴下載超時(shí)的排查鏈路Android構(gòu)建最容易出現(xiàn)的經(jīng)典坑就是依賴下載超時(shí)。表現(xiàn)是構(gòu)建日志里出現(xiàn)類似Could not resolve com.android.tools.build:gradle:8.x.x或Connection timed out。這時(shí)候不要急著重試先按順序排查確認(rèn)distributionUrl對(duì)應(yīng)的Gradle版本能否從網(wǎng)絡(luò)正常下載檢查倉(cāng)庫地址是否可訪問直接在瀏覽器里訪問一下對(duì)應(yīng)URL檢查本機(jī)是否有代理或防火墻攔截了相關(guān)域名如果用的是鏡像源確認(rèn)鏡像源同步完整在實(shí)際案例里我們遇到過鏡像源只同步了部分模塊導(dǎo)致解析失敗的情況這時(shí)候把缺失的倉(cāng)庫臨時(shí)切回Google官方倉(cāng)庫即可。另外合理配置Gradle離線緩存也能顯著緩解~/.gradle/caches目錄的緩存可以復(fù)制到云端構(gòu)建機(jī)的持久化磁盤避免每次構(gòu)建從零下載。6.3 敏感文件入庫的補(bǔ)救流程經(jīng)常有同事在配置環(huán)境時(shí)臨時(shí)改了local.properties提交代碼時(shí)不小心把這個(gè)文件帶進(jìn)倉(cāng)庫。這個(gè)文件里通常含有SDK路徑、本地簽名文件路徑等信息不應(yīng)該進(jìn)倉(cāng)庫。補(bǔ)救流程分兩步# 第一步把文件從Git追蹤中移除 git rm --cached local.properties # 第二步加入.gitignore避免再次誤提交 echo local.properties .gitignore git commit -m Remove local.properties from version control但如果這個(gè)文件已經(jīng)被推送到了遠(yuǎn)程倉(cāng)庫光這么做還不夠因?yàn)闅v史記錄里仍然存在該文件內(nèi)容。為了徹底移除要用git filter-branch或git filter-repo重寫歷史。這個(gè)操作會(huì)導(dǎo)致倉(cāng)庫的commit hash變化如果倉(cāng)庫已經(jīng)有多人協(xié)作重寫歷史前必須和團(tuán)隊(duì)成員確認(rèn)否則其他人的本地分支全部會(huì)失聯(lián)。我個(gè)人經(jīng)驗(yàn)是在項(xiàng)目初期就嚴(yán)格把關(guān).gitignore比事后補(bǔ)救成本低得多。團(tuán)隊(duì)里可以做一次代碼評(píng)審約定凡是涉及本地環(huán)境信息的文件一律不入庫。6.4 權(quán)限邊界與團(tuán)隊(duì)成員協(xié)作的注意事項(xiàng)CodeHub的權(quán)限模型里代碼倉(cāng)庫的訪問權(quán)限與DevCloud的項(xiàng)目成員角色綁定常見角色有項(xiàng)目經(jīng)理、開發(fā)人員、測(cè)試人員、瀏覽者等。開發(fā)人員默認(rèn)有倉(cāng)庫的push權(quán)限測(cè)試人員只有只讀權(quán)限這一點(diǎn)在配置完權(quán)限后要告知每位成員避免出現(xiàn)測(cè)試同學(xué)想拉代碼卻拉不下來的疑問。還有一個(gè)容易忽略的點(diǎn)成員從DevCloud項(xiàng)目里移除后他/她原來的SSH公鑰會(huì)立即失效哪怕公鑰還留在CodeHub的個(gè)人設(shè)置里。這是一個(gè)安全設(shè)計(jì)但如果項(xiàng)目?jī)?nèi)人員流動(dòng)頻繁新成員加入后一定要走加入項(xiàng)目的流程而不是單獨(dú)添加公鑰后者容易在忘卻后造成權(quán)限邊界混亂。7. 一個(gè)完整的實(shí)操演示從零連接CodeHub到兩端構(gòu)建通過這部分我以團(tuán)隊(duì)里真實(shí)走過的路徑為藍(lán)本整理出一份可以直接對(duì)照操作的完整流程清單。假設(shè)我們的項(xiàng)目叫某跨平臺(tái)管理AppiOS和Android兩個(gè)端的代碼放在同一個(gè)CodeHub倉(cāng)庫里用不同目錄區(qū)分也可以是兩個(gè)獨(dú)立倉(cāng)庫邏輯一致這里以單倉(cāng)庫為例。7.1 初始化階段本地項(xiàng)目與CodeHub倉(cāng)庫的關(guān)聯(lián)第一步在CodeHub創(chuàng)建一個(gè)空倉(cāng)庫例如mobile-app。創(chuàng)建時(shí)選私有初始化時(shí)不要勾選生成README和.gitignore保持倉(cāng)庫為空因?yàn)槲覀儽镜仨?xiàng)目已存在。第二步在項(xiàng)目根目錄建立.gitignore。iOS和Android雙端目錄結(jié)構(gòu)示例# iOS Pods/ DerivedData/ *.xcuserstate xcuserdata/ # Android build/ .gradle/ local.properties .idea/ *.apk *.aab captures/ # 通用 .DS_Store *.log第三步執(zhí)行本地Git初始化并連接遠(yuǎn)程git init git add . git commit -m Initial commit git remote add origin gitcodehub.devcloud.huaweicloud.com:YourGroup/mobile-app.git git push -u origin master這個(gè)階段遇到最多的問題就是push時(shí)提示Permission to XXX denied按第2.3節(jié)的方法排查密鑰配置。等push成功CodeHub網(wǎng)頁端能看到代碼就說明Git連接這一環(huán)徹底打通了。7.2 iOS本地編譯驗(yàn)證與云端任務(wù)創(chuàng)建本地打開Xcode確認(rèn)能直接編譯運(yùn)行項(xiàng)目。然后到DevCloud創(chuàng)建iOS構(gòu)建任務(wù)主要內(nèi)容包括代碼源選擇CodeHub倉(cāng)庫分支選擇master構(gòu)建機(jī)選擇macOS類型構(gòu)建模板選擇Xcode相關(guān)模板在證書管理里導(dǎo)入.p12和.mobileprovision構(gòu)建命令選擇xcodebuild -workspace YourApp.xcworkspace -scheme YourApp -configuration Release clean archive并指定導(dǎo)出選項(xiàng)這一步容易出的問題構(gòu)建機(jī)型號(hào)不同xcworkspace的Pod安裝情況也不同。如果項(xiàng)目使用CocoaPods要確保構(gòu)建前先執(zhí)行pod install否則workspace無法生成構(gòu)建直接失敗。7.3 Android本地編譯驗(yàn)證與云端任務(wù)創(chuàng)建Android端同樣先確保本地能跑通./gradlew assembleDebug。然后到DevCloud創(chuàng)建Android構(gòu)建任務(wù)代碼源選擇同一CodeHub倉(cāng)庫構(gòu)建機(jī)類型選擇Linux構(gòu)建命令填寫./gradlew clean assembleDebug配置JDK和SDK路徑如果構(gòu)建時(shí)下載依賴慢開啟Gradle緩存這里的關(guān)鍵是SDK路徑。DevCloud的Linux構(gòu)建機(jī)預(yù)裝了SDK但版本可能不是你需要的。我們的做法是在構(gòu)建腳本開頭動(dòng)態(tài)安裝SDK組件sdkmanager --install platforms;android-34 build-tools;34.0.0或者直接在Gradle配置里用android.suppressUnsupportedCompileSdk的方式控制版本兼容。7.4 兩端構(gòu)建通過后的驗(yàn)證清單構(gòu)建任務(wù)創(chuàng)建完手動(dòng)觸發(fā)一次拿到構(gòu)建成功的日志后做以下驗(yàn)證在CodeHub上修改一次代碼并push確認(rèn)流水線自動(dòng)觸發(fā)如果配置了自動(dòng)觸發(fā)從制品庫下載iOS的.ipa和Android的APK分別安裝到模擬器和真機(jī)驗(yàn)證讓另一位同事從CodeHub重新clone代碼跑一次本地編譯確認(rèn)新成員環(huán)境也能正常復(fù)現(xiàn)檢查構(gòu)建日志里有沒有warning或非致命錯(cuò)誤盡量消除我建議至少把這些驗(yàn)證做全再進(jìn)行下一步的自動(dòng)化集成否則環(huán)境層面埋下的雷會(huì)在后續(xù)功能迭代中反復(fù)炸。8. 寫在最后的個(gè)人操作心得做完整套環(huán)境搭建我最想強(qiáng)調(diào)的一點(diǎn)是不要小看環(huán)境對(duì)齊這件事。代碼托管只是把代碼放到了云上真正的價(jià)值在云端構(gòu)建和協(xié)作流程里而這兩者的基礎(chǔ)就是本地環(huán)境和云端環(huán)境的一致性。如果兩邊版本不一致你每天的工作都會(huì)在本地能跑云端報(bào)錯(cuò)的循環(huán)里消耗大量時(shí)間。實(shí)操了多次之后我現(xiàn)在的習(xí)慣是每次本地工具鏈一升級(jí)就在云端的構(gòu)建任務(wù)、流水線配置里做一次同步更新同時(shí)更新團(tuán)隊(duì)文檔里的環(huán)境對(duì)齊清單。不要等到下次構(gòu)建失敗時(shí)再想起來那時(shí)候排查成本已經(jīng)上去了。另一個(gè)有價(jià)值的體會(huì)是文檔比記憶靠譜。我們團(tuán)隊(duì)現(xiàn)在維護(hù)了一份標(biāo)準(zhǔn)的入職環(huán)境搭建文檔內(nèi)容就是這篇文章里講到的流程壓縮版。新人來了照著做基本半天內(nèi)能把環(huán)境和CI鏈路跑通。如果你也是移動(dòng)端團(tuán)隊(duì)的負(fù)責(zé)人我強(qiáng)烈建議把環(huán)境搭建規(guī)范做成文檔讓每個(gè)成員按同一套標(biāo)準(zhǔn)來后續(xù)省下的時(shí)間絕對(duì)值得。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
九九碰九九爱97超碰| 色婷婷五月天激情综合| 成人婷婷色综合| 99热只有精| 欧美图片丁香五月天| 这里只有精品视频免费在线观看| 国产色色网站网址| 国产色网站| 久久亚洲婷婷| www.日本91| 99热香港| 一级片sese片.COM| www,色婷婷| 日本欧美成人片AAAA| 六月 丁香 视频| 91久久婷婷| 丁香五月激情综合久久| www.丁香五月| 成人在线视频网| 这里只有精品视频一区| ji'qing'luan'ren'lun| 草综合网| 超碰91av| 色99自拍| 九月激情综合| 丁香 亚洲 久久| 色色亚洲| 一起草AV| 久久丁香五月婷婷激情综合网| 久久精品一区二区三区四区| 五月天综合在线| 亚洲女婷婷五月基地综合久久久| 丁香五月色色色色| 亚洲色情久久| 91超碰在线观看| 婷婷桃色网| 丁香六月综合| 97自拍视频在线| 5月婷婷6月六月丁香| 五月天婷婷三级黄| 欧美噜噜免费观看| 五月香蕉综合| 99这里只有精品视频在线| 欧美啪啪9| 婷婷丁香五月天综合激情| 99热91| 久久一热| 四月婷婷五月丁香| 日韩在线观看亚洲| 8区视频在线| 天天天操天天天日| 色色色色色色网站| 人妻久久久久久久| 婷婷五月在线观看| 亚洲精品视频电影| 综合婷婷久久| 九九色欲网| 五月婷婷色播| 五月婷婷大香蕉| 丁香婷婷色情| 成人日韩欧美| 六月婷婷激情| 777影视理论片大全在线观看| 九九人妻福利| 九九热这里精品| 操操碰| 日本色99| 五月天婷婷色在线视频免费观看 | 亚洲精品色色| 婷五月丁香| 丁香五月综合久久八| 久久婷婷五月综合| 五月婷婷成人w| 亚洲五月丁香综合网| 欧美色色色| 99久在线精品| 深爱五月激情网| 婷婷亚洲五| 性色人人爽| 香蕉国产2013| 五月亭亭直播| 国产99久久久国产精品免费看| 婷婷五月天AV| 影音先锋秋秋五月婷婷| 国产资源在线视频| 亚洲激情网| 婷婷四色五月| 婷婷五月花西瓜| 五月丁香婷婷久久| 色色色色热| 久久久ww| 超碰日韩成人| 亚洲色99综合天堂| 色综合久久88色综合天天99| 日本熟女三区| 四色五月婷婷| 99热伊人| 婷婷色五月婷| 激情五月天偷拍综合网| 亚洲色另类| 99ER热精品视频| 91夫妻视频| 三日本无码| 亚洲av无码精品色午夜| 激情五月综合六月丁香婷婷狠狠干| 五月色婷婷AV| 五月天婷婷綜合院| www.99在线| 操操操97| 九九久久99精品免费观看www| 婷婷97碰碰| ay2区| 亚洲Av入口| 五月天com| 久久婷婷精品| 在线综合91| 狠狠干综合| 综合激情综合啪啪| 色噜噜狠狠色综合成人99| 色色色色综合网| 久99| 婷婷免费无马| 狠色色狠网| 91狠狠综合久久| 婷婷五月花| 懂色av蜜臀av粉嫩av永陈冠希| 色婷婷电影网| 色99在线观看| 五月丁香婷婷欧美色图视频五月丁香777电影| 一区二区传媒视频| 五月婷婷影视| 丁香五月性| 丁香香蕉射射射| 亚洲天堂制| 任你草| 狠色色狠网| 99精品久久| 激情涩播| 久久99热这里只有精品23| 久久精热| www.91AV.COM| 激情五月婷婷丁香| 日韩操啪| 天天爽夜夜爽夜夜爽精品视频| www.夜夜| 九九家庭影院| 六月婷婷五月天| 综合日本婷婷| 丁香五月停停av| 亚洲色视频| www.爱婷婷.com| 人人干天天操五月丁香| www.色婷婷| 日本激情91| 色人妻五月| 91精品久久久久久77777| 9九色首页| 久久九九99亚洲国产久精综合| 五月婷婷激情久久| 99热精品在线| 99热在线播放| 五月天激情小说| 婷婷五月天视频| 婷婷97色| 99热这里只有精品国产精品| 国产精品视频久久99| 婷婷深爱五月天| 色九综合| 五月婷婷丁香五月婷婷丁香| 狠狠九九婷婷韩| 狠狠色激情综合| 久久婷婷六月综合| 99内射视频| 岛国AV网站| 婷婷色色综合| 韩国婷婷丁香五月| 色五月婷婷在线观看第一页舔| 婷婷激情丁香五月婷婷激情丁香五月婷婷 | YW无码| www.zbzhongsen.com| 岛国av网站| 青青草伊人婷婷| 秋霞A V毛片| 99热这里是精品| 影音先锋偷偷色男人站| 欧美精品99久久久| 国产 A片 自拍| 香蕉AV777XXX色综合一区| 日本va欧美va精品发布视频| 色婷婷yy久| 天天舔日日肏夜夜爽| AV色色天堂中文| 天天色综合网1| 久久久婷婷色五月资源网| 日本五月天一页| 色色99| 日韩人人操| 成人丁香婷婷| 亚洲成人免费在线| 九色视频九色九色91jiuseshipin| 欧美性爱5月天天天看| 九九色婷| 色欲av伊人久久大香线蕉影院 | 天天日天天草| 一级黄色影片| 91精品久| 桃色五月天| 婷婷五月天Av| 五月天婷婷社区久久综合| 久久伦乱| 五月婷婷综合色拍| 五月天丁香成人| 激情五月丁香五月| 日日日天天干| 青青操avbb| av不卡网站| 五月丁香六月激情| 开心五月婷婷在线视频免费观看| 超碰av天堂| 九九这里都是精品| 99热这里只有精品1| 色婷婷导航| 超碰人人摸人人操| av大香蕉| 亚洲色频| 五月色天五月色| 丁香六月综合激| 色五月天综合网| 久久这里只有精品无码| 超碰AV在线| 欧美情色一区| 亚洲天天操| 丁香五月中文字幕久色| 丁香六月婷婷激情综合| 男女免费视频999| 九九热最新| 开心五月深爱五月| 天天夜夜六月丁香五月婷婷老师| www.xtbsty.cn.com蜜乳AV| 日韩小视频在线99| 久久精品99国产精品日本| 丁香婷婷性久久| 99视频自拍| 欧美va欧美va差| 五月丁香婷婷综合| 亚洲色夜| 人人干人人操外国| 91综合视频丁香| 精品色| 婷婷午夜天| Av狠狠色丁香婷| g00d人体西西| 天堂网亚洲色图| 激情婷婷| 99精品网| 五月婷婷色色| 99久热| 色婷婷综合影院| 99九九视屏| 人人色人人摸人人看| 婷婷五月天久久综合88| 91av无码| 久久婷婷五月综合色和| 婷婷在线日韩综合| 婷婷五月天久草在线| 色优久久| 男女啪啪做爰高潮无遮挡| 丁香六月婷婷综合激情欧美| 激情中文在线| 超碰二区| 日本啪啪天堂| 久久婷婷综| 青青草成人网| 99热色精品| 思思久久99热只有频精品66| 热99精品视频| 九九精品在线观看视频6| 1024国产在线| 国产精产国品一二三在观看| 婷婷五月色| 欧美精品999| 99热这里只有精品青草| 人妻久久久久久| av操一操| 综合网天天| 五月天开心激情综合网| 婷婷五月色天| 五月综合丁香婷婷| 99久久激情视频| 亚洲第一黄网| 色五月亚洲| 99精品亚洲| 九九九九这里只有精品| 丁香五月激情网| 久久这里只有精品热在99| 日本三级日本三级99| 另类综合激情| 丁香五月电影| 五月综合激情| 91性交在线播放| 色欧美一级| 色婷婷8| 99干免费视频| 亚洲人人操| 伊人九九综合| 丁香婷婷人妻| 久久精品永久免费| 婷婷五月激情六月| 久久人人看| 大香蕉手机视频| 夜夜撸日日操| 182无码| 五月婷婷 自拍| 国产综合久久久777777| 99 热国产在| 操国产人妻| 伊人狠狠干| 婷婷五月天六点丁香五月| 99热精品无码| 久久久这里有精品| 丁香五月婷婷影视先锋| 精品成人久久久久久久_一二三四视| 婷婷久久色| 26uuu丁香婷婷五月| 99热官网精品在线| 中文字幕综合色| 久9视频免费播放| 色婷婷网| 亚洲激情精品| 久久久五月天| 狠狠久久婷五月综合色| 五月激情视频| 国产VA亚洲VA96| 99热最新精品| 香蕉97碰碰碰欧美| www.五月婷婷久久.com| 日日操,天天操| 夜夜撸日日操| 丁香六月婷婷久久综合| 嫩草视频观看| 婷婷成人丁香色情基地30 | 七月丁香婷婷 色色| 丁香青青五月天| 欧美大香蕉视频| 99热这是里只有精品| 婷婷开心六月| 五月丁香啪| 久久久久久久久久久久63| 九九久久精品| 无码色| 九九久久综合| 久久丝袜婷婷| www.99热. com这里只有精品| 天天搞天天色综合| 综合网精品99| 99在线观看视频精品| ji'qi'luan'ren'lun| www.99视频| 久久99人人| 亚洲综合色婷婷| 婷婷五月精品中文字幕| 天天色一道本综合婷婷| 久99久99精品免| 国产午夜精品一区二区三区嫩草| 色色丁香婷婷综合| a久久| 国产真实乱了老女人视频| 任我鲁这里有精品视频| 丁香五月天啪啪a日本| 婷婷91| 99精品97| 色情婷婷五月天| 第九色区av天堂| 狼人狠狠操| 曰日爽日日操| 五月天丁香婷婷视频网址| 超碰成人电影| 色噜噜97视频在线观看| 亚洲蜜乳AV| 天天干天天操天天干天天操天天干天天操| 婷婷丁香熟妇综合网| 在线不卡中文字幕| 久久五月丁香| av五月丁香| 五月激情丁香五月宗合| 色情综合网| 99碰碰视频| 精品久久这里热66| 五月天伊人久久| 只有久久精品免费| 《亚洲操B久久免费在线观看,亚洲操B久久在线播放》在线播放 - 高清资源 - 97 | 婷婷开心五月| WWW.五月com| 丁香久色| 国产午夜精品一区二区三区四区| xxxx五月| 荫道BBWBBB高潮潮喷| 婷婷五月丁香基地在线视频官网| 激情五月丁香五月| 色999五月色| 影音先锋噜一噜| 色色色在线观看| 黄色激情五月天| 91操黄| 婷婷五月天熟妇| 欧美大肥婆大肥BBBBB| 国产VA播放| 成人日韩欧美| 国产色丁香| 久久久久这里都是精品| 91丨九色丨熟女| 免费AV在线| 黄色激情五月天| 国产91在线视频| 涩婷婷五月天| 日91高清无玛| 中文字幕在线免费观看视频| 人妻操逼视频。| 六月婷婷色| 婷婷色婷婷亚洲成人| 99色网站| 九色视频这里只有精品| 久热精品9999| 五月香婷婷| 美女精品一级不卡视频| 婷婷五月天AV| 色五月天成人在线| 9在线9在线婷婷在线国产| 色色免费网战视频| 99久久精品国产色欲| 99热66| 婷婷爱爱蜜臀天天操| 97碰碰视频在线观看免费| 综合啪啪| 精品夜夜澡人妻无码AV| 婷婷五月天激情基地| 97婷婷五月激情六月丁香伊人| 激情六月色| 婷婷五月丁香久久| 无码少妇高潮喷水A片免费| 色五月成人网| www.综合久久.com| 99热这里只有精品青草| 激情 婷婷 丁香五月天| 日韩美女在线视频19| 五月激情网站| 综合狠狠五月婷婷| 五月间天堂综合| 精品成人久久久久久久_一二三四视| 丁香无月在线观看| 久久婷婷艹| 人人摸人人澡人人| 欧美亚洲999| 2025色婷婷| 伊人五月婷婷国产视频| 五月婷婷色播| 97色色色视频| 婷婷五月天影院| 国产看真人毛片爱做A片| 淑女丝袜bi操逼123| 99A级片| 夜夜穞天天穞狠狠穞AV美女按摩| 亚洲免费婷婷| 精品一二三区视频立| 97超级碰人人| 伊人啪啪网| 热久久66| 91碰视频| 婷婷婷五月香蕉| 色爱亚洲| 欧洲色色| 俺也去综合| 久久久久亚洲AV无码网影音先锋| 538在线精品| 婷婷五月激情中文字幕| 五月天开心色情网| 色婷婷综合综合网| 五月天丁香婷婷视频网址| 久久Xx| 2020久久婷婷五月| 超碰免费99| 97啪在线观看视频| 五月天色色网站| 久色婷婷200| 深爱激情中文五月天av| 99热费观看| 国产人妻777人伦精品HD| 另类图片色五月| 99思思热只有在这里看| 新99思思视频| 激情五月天色色网| 色五月欧美| 欧美性生交XXXXX无码小说| 激情六月丁香| 国产成人亚洲综合A∨婷婷| 情婷婷五月天在线| 97操碰| 色五月开心久久网| 免费看欧美成人A片无码| 国产在线中文字幕| 伊人五月天97| www.九九婷婷| 日韩欧美成人一区二区三区| 欧美日韩欧美| 99热免费| 这里只有精品视频99| 天天搞天天爽| 久久机热/这里只有精品| yazhouzonghesese| 青草久久五月婷伊人| 日本色色网| 五月丁香婷草| 天天色99| 超碰国产AV| 亚洲色图五月丁香五月婷婷| 99热在线观看成人| 五月婷婷综合激情小说| 午夜不卡久久精品无码免费| 99re在线播放| 伊人无码高清| 亚洲精品国产熟女久久久| 久久久噜噜噜久久人妻| 婷婷五月激情图片| 这里只有精品视频免费在线观看| 激情五月丁香五月| 99热这里只有精品99| 久久综合五月天| 丁香五月婷婷久久久| 玖玖视频福利| 婷婷国产综合| 蜜乳.comcom| 色婷婷成人丁香| 开心六月丁香五月婷婷| 色播五月婷婷综合| 五月丁香激情婷婷综合字幕| 亚洲狠狠婷婷综合久久久| 亚洲激情电影五月天色婷婷丁香一起草| 婷婷综合欧美| 色婷婷五月天天天天天天天天天| 久久久五月激| 久播影院免费观看电视剧大全最新网| 99热.com| 色你久久| 精品人妻一区| 国自产拍偷拍精品啪啪一区二区| 色99综合色88| 99热这里只有精品99| 俺也高清无码高清视频| 激情图片五月天| 激情五月婷婷| 怡红院视频| 婷婷色色网| 一本大道伊人AV久久综合| 琪琪色综合网站| 色综合99色| 国产综合久久久777777| 99激情在线| 人人色婷婷五月天| 五月丁香六月激情啪| 婷婷五月激情丁香| 97干在线| 欧美婷婷色| 国产精品成人网站| 人妻AV在线| 欧美久久五月婷婷| 79色色色色| 五月丁香婷婷婷激情爱爱| 男女99免费视频| 色综合五月天| 玖玖激情网| 五月婷婷五月天| 天天做天天爱天天爽在| www,26uuu,c0m,色情| 婷婷五月天丁香社区| 亚洲激情网| 国产乱子轮XXX农村| 欧美日本不卡黄色片| 97人人爱人人操| 狠狠色丁香久久久婷| 狠狠狠狠狠狠狠狠草| www激情五月天| 最新久久网址| 婷婷大香焦| 色婷婷69| 九热视频这里只有精品| 九九色欲网| 99久久66综合| 超碰97人人操| 亚洲人妻五月丁香婷婷| 欧美人人操| 五月婷婷色欲| 99九九在线| 六月婷婷国产| 五月丁香六月婷婷综合在线| 色综合色色色色色| 六月丁香激情网| www,setingting| 丁香五月综合| 丁香色婷婷五月天| 777精品久无码人妻蜜桃| 嫩草视频观看| 99爱免费视频在线观看| 精品色| 色碰97| wWw色五月| 5五月综合网亚洲| 99色在线| 啊V视频在线观看| 婷婷五月天成人网站| 婷婷五月色播放| 99热在线网站| 国产探花AV在线| 五月丁香激情综合网| 婷婷伊人綜合中文| 99在线视频精品| 色色色色色色色色综合网| 伊人久久大香| 操操操操操电影网| 天天做天天爽| 97人妻碰碰中文无码久热丝袜| 五月丁香六月婷婷无码| 色五月婷婷777| 天天摸天天舔在线视频| 亚洲精品国产setv| 另类亚洲视频| 五月天婷婷成人| 日韩无码AV电影网站| 人妻性爱av网站| 亚州操操| 婷婷五月色图| 婷婷色六月| 天天日日| wwwwww.色| 97精品人人A片免费看| 99亚色色色| 九久9精品| 日韩美女羞羞网站在线观看| 激情综合色播| 丁香六月天婷婷| 天天爽夜夜爽| 黄色激情网站在线观看| 五月天激情久色| 精品一二三区久久AAA片| 亚洲婷婷视频| 五月天婷婷久久| 久久婷婷激情五月天一区二区| 色五月天堂| 大香蕉中文| 婷婷五月天激情网| 综合99久久天天综合| 五月婷婷亚洲色视频| 91人人爽人人操| 久久久久久久久人妻| 欧美色必爱| 丁香5月婷婷| 人人人操B超碰| 99国产99| 免费观看欧美成人AA片爱我多深| 中文字幕精品推荐免费在线观| 日本欧美国产| 久久久九九视频精品18| 五月天伊人网| 激情99热| 色婷婷丁香| 国产精品五月丁香| 狠狠干最新地址| 五月丁香基地| 99久久亚洲国产| 99热日| 婷婷99狠狠躁天天| 97人人超| 亭亭五月激情亚洲在线| 久久中国毛毛片爱久久| 五月丁香91| 亚洲色色色色色色色色色| 综合色影院| 日本69日人视频| 99热| 狠狠干青青草| 久久九九经典| 日本综合色色| 天天摸天天舔天天爽| 婷婷香草网| 婷婷狠狠色| 人妻激情综合| 福利视频在线播放| 丁香婷婷视频| 色婷婷综合网站| 能看的av| 色五月色五天免费视频| 五月丁香综合啪啪| 日日噜噜夜夜狠狠久久丁香五月| 色婷婷视频在线| www99精品| 成人国产欧美大片一区| www色五月| 九九99久久| 婷婷色色综合| 色吧婷婷| 色五月天天| 丁香六月综合激| 丁香五月社区| 婷婷狠狠色| 好好干Av| ady狠狠入| av人人干| 激情五月五月婷婷| 99热香港| 免费97碰碰| 色婷婷成人做爰A片免费看网站| 激情五月天开心总和网| 入口五月婷婷六月香| 91九色偷拍| www.激情| 五月激情婷婷丁香| 综合激情五月丁香9999久久精| 大香蕉太香蕉视频97| 激情婷婷五月| 五月激情婷婷丁香天堂| 怕怕av| www.9797国产| 深夜婷婷 丁香| 久久性爱视频| 噜噜精品| 欧美视频在线观看噜噜| 69精品人人人人| 伊人大香久久| 精品国产乱码久久久久久免费| 色综合中文| 五月丁香无码| 99热久只有精品首页| 五月天婷婷色色网| www.婷婷久久五月天| 综合五月婷婷| 久久久香| 久久九九热视频| 色五月丁香激情| 婷婷色在线观看| 超碰A V在线| 国产成人一区二区三区在线观看 | 嫩草视频在线观看| 丁香五月www| 69超碰在线| 青青草五月天| www.婷婷六月天| 5月丁香啪啪啪| 五月天五月婷五月激情网| 国产片天天爽夜夜爽| 97人妻碰碰碰久久香蕉| 欧美操我| 色婷大香蕉| 五月丁香久久久| 国产精品人成A片一区二区| 国产亚洲在线| 五月婷婷啪啪啪| 色久丁香五| 天天干天天射色综合| 激情五月综亚网| 综合欧美五月婷婷| 天天插天天狠| 色 免费网站视频| 99热e| 日韩成人电影在线播放| 五月天婷婷AV| 人人操操| 久久久五月婷婷| 色综合香蕉| 六月激情网| 欧美月久久| 丁香五月婷婷欧美成人色图| 婷婷五月欧美AA片免费| 免费日本aⅴ中文字幕| 丁香五月婷婷天激情| wwwC0maV五月花| 久久综合热17c| 丁香五月婷婷久久久| 九九热这里只有精品556| WWW.天天日| 秋霞电影一级黄| av婷婷丁香 六月| 色五月涩涩婷婷蜜桃| WWW、日本色丁香co m| 五月丁香久久网| 亚洲激情无码久久| 26uuu激情五月天| 狠狠操在线视频| 丁香五月六月激情| 五月六月婷婷| 蜜臀99精品| 久热黄色| 丁香五月在线观看| 被强行糟蹋的女人A片| 亚洲妇女熟BBW| 九九成人电影婷婷| 国产AV网页| 99久久.www| 国产五月天婷婷| 色色色激情| 激情六月五月婷婷综合网| 激情五月丁香在线观看直播| 婷婷综合爱| 激情五月六月| 色婷婷综合视频| 91久热| 伊人大综合| 婷婷伊人视婷婷婷| 欧美人人操| 99热这里只有精品98| 岛国av网| 亚洲六月婷婷| 婷婷综合网| 1024操逼| 狠狠情色| 99er这里只有精品视频| 天天狠狠色噜噜| 爱草人视频| 另类图片天天影视在线观看| 风流少妇A片一区二区蜜桃| 久久国产成人9999久久久久| 中文字幕激情综合| 久久五月天精品视频| 天天爽综合| 蜜臀99精品| 五月丁香久久| 中文字幕人妻AV| 无码人妻激情| 天天cha成人综合网| 九九99久久| 色综合伊人网| 91碰碰碰久久久久| 亚洲久热| 亚洲天码视频www蛋播视频| 久久与婷婷| 图片区 小说区 区 亚洲五月| 久热在线观看视频9| 婷婷丁香六月| 中文不卡一二区| 中文字幕AV在线播放| 中国操逼99| 激情综合在线观看| 五月天婷婷成人资源站| 久久婷婷激情| 1级欧美日韩| 色综合网址| 五月婷婷我| 激情小说五月天| 天天做天天摸| 天天干天干| 免费观看高清无码| 天天噜天天插| 天天爱天天爽| 国产乱子轮XXX农村| 97超碰在线免费观看| 激情五月网站| 99热伊人| 激情婷婷综合网| 激情五月综合ì香亚洲| 五月丁香啪啪综合| 97超喷视频在线观看| 久久久久久xxxxx| 99热这里是精品| 亚洲乱码日产精品BD| 五月婷色色| 裸体美女丁香五月天。| 午夜精品人妻无码一区二区三区| 超碰日日操| 亚洲天堂aaa| 午夜天堂一区人妻| 99热91| 99爱视频在线观看| 五月综合激情啪啪啪啪啪| 超碰狠狠操| 色私五月婷婷| 丁香五月 无码| 狠狠草婷婷| 亚洲综合色色色| 色色色色色色色色色色色色色97| 五月天影院| 欧美性生交A片免费看| 99re热精品在线视频| 超碰人人99| 久久精品日| 五月天婷婷激情春色小说| 在线只有精品| 超碰在线99| 无码啪啪| 久久久久8888| 久久视频婷婷| 99热在线观看99| 五月丁香六月综合基地| 五月综合激情啪啪啪啪啪| 婷婷丁香五| 五月天激情影院| 色一情一乱一乱一区91Av| 97色天堂| 丁香五月人妻| 五月丁香综合影院| 97五月天婷婷综合激情网| 五月丁香六月婷婷综合网站| 婷婷五月丁香国产| 丁香婷婷色五月合集| 国产乱子轮XXX农村| 99热99热在线观看| www.久久久久| 丁香五月婷婷啪| 天天日综合| 一起草无码视频| 99国产在线| 激情婷婷五月天。| 激情五月影院| 激情婷婷五月亚洲| 日本色色色| 丁香五月色播中文在线播放| 色噜噜狠狠色综无码久久合欧美| 99爱免费在线观看| 日韩中文字幕| 亚洲成人av中文| 婷婷激情鹿城五月天| 日产精品久久久久久久蜜臀 | 99热这| 开心五月天私房婷婷| 五月天社区| 五月婷婷之六月丁香| 久久五月天激情| 天天色综合综合| 久热伊人在91| 中文成人在线| 97碰碰视频在线观看| 亚洲色在线观看| 日操| 五月婷婷丁香日韩在线| 五月丁香淫淫婷婷婷| 小泽玛利亚视频一区二区| 九九综合色综合| 五月婷五月婷伊人伊人五月婷| 五月婷婷性爱| A A色色| 婷婷色基地在线看| 超碰97人人操| 凹凸探花电影| 五月天婷婷无码| 天天爱综合网| 婷婷啪啪| 国产黄大片在线观看画质优化 | 亚洲正能量欧美| 综合色播| 人妻AV在线| 蜜乳久AV| 婷婷婷久久久| 激情丁香久久| 色婷婷在线视频观看| 中文成人在线| 久久久久久天天日天天爱| 色五月丁香com| 日本欧美成人片AAAA| 久久丁香五月综合六月激情红杏视频 | 操比激情五月综合| 天天爽夜夜操| 狠狠激情五月天| 欧美99热| 日韩久久系列| 久久婷婷网| 夜夜天天久久婷婷| 婷婷五月天你懂的| 99这里有精品| 五月丁香在线看| 婷婷五月色| 国产精女同一区二区三区久| 国産精品| 婷婷四色五月| 色综合中文色综合网| 国产全是老熟女太爽了| 亚洲色热| 天天日日天天| 久久精品系列| 亚洲国产精品二二三三区| 99热色精品| 婷婷丁香久久五月综合| 91婷婷在线观看| 日本精品人妻无码77777| WWW.17C亚洲精品| 婷婷综合五月天激情| 99狠狠操一| 午夜亚洲AV日韩无码| 99热国产精品| 天天爽天天草| 日日日日做夜夜夜夜无码| 9久久AV| 亚洲午夜成人av电影网| 99色在线视频| 91精品久| 色婷婷成人做爰A片免费看网站| 国产日韩欧美性爱| 5月丁香六月情| 97操操| 激情久久综合网| 久久久国产精品黄毛片| aa久久| 婷婷基地爱| 五月天婷婷爱丁香中文字幕| 9191avse| 人妻中文字幕精品| 精品一二三区久久AAA片| 综激情网| 色播五月婷婷五月| 婷婷五月丁香基| 伊人久久婷婷| 国产99久9在线| 狠狠噪| 综合婷婷| 99自拍视频| 4438激情网| 色女伊人| 五月天夜夜爱夜夜操| 色播五月婷婷综合| 成人看片网站| 99热大香蕉| 五月亭亭欧美女人| 久久综合九色综合88i| 中文字幕丰满孑伦无码专区 | 在线色色| 97丁香五月| 久久99三级在线视频| 91九色超碰| 免费看欧美成人A片无码| 激情综合五| 久久久婷婷婷| 中文字幕人妻在线| 五月丁香亭亭| 蜘蛛女侠2003满天星免费观看| 人人人人人人人草| 五月婷综合性中心| 五月亭亭六月激情| 人人操Av| 99热精品少| 思思热在线视频观看精品| 九九黄色网| 99热日本| 97人妻碰碰碰久| 99热偷拍| 另类在线| 日本妈妈乱| 99精品视频免费在线播放| 久久免费精品小视频| 亚洲无码播放| 99ri视频| 激情五月婷黄版| 色情五月天视频网| 开心六月丁香五月婷婷| 思思热久久阴99| 丁香婷婷五月天色综合| 日本本土色网第一区| 亚洲成人色五月天| 成人婷婷五月天| 色婷婷伦理| 亚洲综合婷婷五月| 五月天精品综合在线| 婷婷伊人久久综合| 五月丁香啪啪伦理电影| 五月婷亚洲精品| 大香蕉欧美在线| 日本久久人人| 五月天综合婷婷| 婷婷伊人网| 99国产精品久久久久久久久久久 | 亚洲第一黄网| 五月天色丁香| 中文字幕无码人妻少妇免费视频| 成人中文网| 亚洲va久久久噜噜噜久久天堂| 欧美婷婷综合| 色五月婷婷影院| 色人久久| 五月婷伊人| 思思久久青草热| 亚洲激情五月天| 久久作爱| 亚洲1区| 久久se 综合网 | 久热只有精品| 97碰在线| 性做久久久久久久免费看| 色狠狠婷婷| 小泽玛利亚视频一区二区| 日本久久综合| 婷婷五月天激情偷拍| 激情婷婷五月基地| 婷婷综合五月天| 六月综合婷婷开心伊人| 亚洲无AV在线中文字幕| 五月丁香婷婷老司机| www.综合久久.com| 亚洲国产精品五月天| 丁香五月网在线观看| 99热这里都是精品| 久久婷婷五月天| 内射 无码 伊人| 日本高清久| 婷色成人| 日日撸夜夜操| 五月婷婷激情五月| 日本婷婷色| 久久久91| 六月丁香五月激情婷婷| 激情99| 被强行糟蹋的女人A片| 五月丁香婷婷激情四射迷人| 久久免费精品小视频| 五月婷丁香亚洲| 色久女| 熟女强人妻一区二区三区四区无| 激情五月丁香六月综合AVXXXX| 亚洲无码成人网| 51avj视频大全| 亚洲国产精品VA在线看黑人| 97操碰在线97| 如何安全看伊人婷婷| 五月六月激情| 亚洲色网络| 西西4r午夜剧场| 天天狠狠婷婷在线| 色五月婷婷色五月婷婷色五月婷婷| 亚洲综合激情五月久久| 人碰人人人玩91| 久久激情网| 激情五月婷婷六月丁香| 九月丁香| 青996青| 国产一级婬片毛片| 99精品在线播放| av超碰在线| 伊人大香五月天| 丁香 久久| 激情婷婷五月丁香啪啪啪| 久久婷婷亚洲| 婷婷丁香五月激情| 欧美三级巜人妻互换| 女婷久久| 玖玖热视频| 三级av在线| 婷婷精品| 婷婷五月丁香欧洲| jiujiuxiangjiaowang| 六月亚洲婷婷6月中文字幕| 激情五月丁香六月综合AVXXXX| A短视频免费在线观看| 99操| 久久精品99久久久久久| 婷婷五月天综合久久日美女| 六月婷婷俺也去| 开心五月综合激情网| 久re在线| 久热这里只有精品99re,久热这里只有精品7| 婷婷久久亚洲| 超级碰碰碰碰视频| 激情六月一二| 青草视频在线播放| 色八月婷婷| 久综合色| 五月婷婷丁香六月| 五月丁香龟婷婷| 人妻五月天激情开心网| 黄色AV日韩| 9 1 A v久久久| 精品免费99| 熟女人妻一区二区三区免费看| 二色AV| 婷婷激情人妻| 色婷在线视频| 九九精品在线观看视频6| 97超碰免费超级在线观看| 丁香丁香激情网| 色中色综合| 色五月丁香五月| 色噜噜狠狠色综合成人99| 人妻中文字幕网| 天天插天天操| 高清免费在线视频| 五月天婷婷深深爱| 国产精品美女久久久久AV超清| 婷婷色五月噜噜| 丁香五月偷拍| 丁香五月激情六月欧亚激情综合导航| 激情久久久久| 九色视频91疯狂| 综合99久久| 97干欧美| 色欲av伊人久久大香线蕉影院 | 五月花成人网| A片试看120分钟做受视频红杏| 婷婷5月色| 日日夜夜干| 狠狠干2007| 久久AAAA片一区二区| 天天婷婷操| 亚洲精品久久久久久久久久飞鱼 | 色情综合| 五月婷婷婷| 五月天婷五月天综合网小说首页-五月天激激婷婷大综合,婷婷亚洲综合五月天小说 | 偷偷操99| 五月婷婷偷拍| 五月婷婷影院| 综合网五月| 草美女在线观看视频在线播放| av国产精品| 精品色色网| 91呦呦呦| 丁香五月天论坛| 操日视频| 婷婷久久五月天| anquye伊人| 五月丁香婷婷成人网| 五月成人综合| 热久69| 久久久久婷婷| 激情五月深爱五月| 九九九九操逼| 婷婷.com| 婷婷色五月大香蕉在线观看| 8区视频在线| av 一区三区四区| 欧美三级巜人妻互换| 久久免费婷婷视频| 五月天婷婷社区久久综合| 色狠狠综合| 色色色综合视频| 潘金莲AAAAAAAAAA| 综合激情视频| 精品久久9| 成AV人片一区二区三区久久| 狠狠干五码| 99超碰在线观看| 天天干天天操天天拍| 99热日| www.久久9| 国产无套精品一区二区| 综合五月亭亭9| 久久全色| 狠狠做深爱婷婷久久综合一区| 久久亚洲色导航| 97ai婷婷| 九九热在线视频观看| 26uuuu精品一区二区| 任你搞在线观看视频| 狠狠色噜噜狠狠狠狠综合| 凹凸探花电影| www.九九婷婷| 激情五月天社区| 五月婷婷激情四月| 日本色天堂| 精品无码久久久久久久久 | 91一起操| 深爱激情网噜噜色| 综合色网站| 熟妇人妻中文字幕无码老熟妇| 五月婷婷激情久久| 婷婷她六月天| 亚洲精品另类| 99视频这里有精品| 亚洲色情网站| 99热最新精品| 亚洲无码AV片| www久久久| 五月婷婷激情中文字幕| 狠狠操天天操天天操| 69久久99精品久久久久|