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
返回資訊列表
人人爽人人射-美女久久久久久久久久-成人AV| 天天综合情| 久久久久人无码人妻| 五月丁香在线| 五月丁香久久呀| 超碰人人99| 操婷婷基地| 久9精品视频| 99爱视频| 97碰久久| 少妇高潮呻吟A片免费看软件 | 久热久re| 五月伊人网| 色综合丁香| 激情综合色网| 手机AVAV天堂看网| 日韩AV一区二区三区| 色色com| 天天综合色丁香| 女同激情久久av久久| WWW久久久| 国产精品色色| 久久丁香五月天| 色优久久| 互月天综合| 亚洲av无码影院| 五月丁香欧美综合| 99精品网站| 黄色91在线观看| 欧美在线干| 婷婷免费成人视频| 日熟女| 婷婷丁香色五月| 美女要搞搞天天搞搞搞网站| 中文字幕丰满人妻无码专区| 国产肥白大熟妇BBBB视频| 密黄站| 91人妻九色大屁股| 久久激情天堂| 日韩婷婷五月| 99视频在线啪| 热思思九九| 婷婷在线激情| 久久成人天| 99青青草99| 婷婷少妇激情| 人妻久久久久久久久久久| 国产成人AV在线播放| 91久久五月天| 天天情色五月天| 秋霞A V毛片| 色伦专区97中文字幕| 婷婷六月五月| 五月天中文字幕在线婷婷| 免费成人中文字幕| 激情五月天网站| 丁香五月天激情网| 激情婷婷综合| 丁香五月婷婷综合精品素人| 激情综合丁| 日韩精品999| 这里只有精品96| 五月婷网| 五月丁香六月婷婷激情网| caobi四区| 在线观看996精品| 久久久国产精品黄毛片| 欧洲色色| 五月花在线观看视频| 秋霞电影一级黄| 久久伊人婷| 五月丁香影视| 五月天另类激情在线| 丁香五月激情婷婷婷婷在线观看| 丁香五月婷婷亚洲色图| 久碰久操| 啪啪黄页网| 色级停停| 婷婷丁香中文字幕| 99年操人人爽| 天天婷婷综合亚洲亚洲| 婷婷丁香激情综合色情| 丁香五月婷婷五月| 日日干天天| 激情五月com| 激情五月,色五月| 婷婷五月天AV在| 韩国中文字幕91| 激情爱爱网站| 激情九色| 久热超碰91| 天天摸夜夜夜| 久久久久久五月天| 丁香五月六月激情| 日日噜狠狠色综合久久| 欧美搡BBBBB摔BBBBB| 在线观看欧美| 婷婷的色色五月天| 四月婷婷丁香| 色婷婷五月天不卡| 婷婷色爱| 五月丁香在线观看| 丁香婷婷激情六月五月开心| 丁香婷婷视频在线| 狠狠操天天干| 婷婷五月噜噜| 五月婷婷久| www.丁香黄色五月天人与| 色五月激情问网站| 丁香婷五月天| 天天射天天射一道本日本社区| 91九色视频| 婷婷六月综合| 黄色片区子| 99视频九九热| 丁香五月色| 日日爱678| 九热...av| 91人人超碰在线| 激情久久 婷婷| 五月婷婷精品| 色三级色三级| 这里只有精品视频视频在线观看| 1024手机在线观看看片_日韩精品| 亚洲va久久久噜噜噜久久天堂| 丁香五月激情综合| 乱乱av| 男人先锋久久| 美国天天操无码| 青青色com久久| 欧美婷婷精品激| 碰碰碰91| 国产欧美日韩性爱| 狠狠狠人妻| 五月天丁香六月综合| 99自拍视频在线| 狠狠色色| www.韩日视频| 99超级超级超级碰| 久大香蕉| 色婷婷在线视频久| 激情网 五月天| 婷婷五月天.com| 99热这里只有精品23| 久久婷婷丁香六月天| 天天爽夜夜爽天天爽夜夜爽| 久久这里只| 色久天| 日本色色网站| 婷婷六月天| 99国产在线精品视频| 男人大jjc女人免费视频| 变态另类色图| 日本老女人黄页在线播放| 色五月无码| 色色色色色色97| 色99网| 丁香五月婷婷AV| 精品乱码久久久久| 99综合97| 五月色网| 六月婷婷网| 婷婷网五月| www.9797国产| 一级AV片| 啪啪激情网| AV片在线观看| 99久久国产综合精品五月天喷水\| 成人做爰A片免费看视频| 五月婷A V在线| 开心色色五月天综合| 日亚二欧美| 色综合色色| 五月激情网五月综合网| www.9797国产| 国产精品久久久久久亚洲毛片| www.狠狠| 六月婷婷最新网址| 99热很操老逼| 日韩无码一区二区三区四区| 天天干天天叉| 精品成人久久久久久久_一二三四视| www.狠狠| 婷婷五月在线影院| 久久婷狠狠色| 中文网av| 五月婷婷激情网| 大香蕉五月天| 日本97在线观看| 另类专区在线观看| 色五月在线视频观看| 美女激情综合| 久久久全国免费视频| 夜色综合网| 久热黄色| 婷婷激情五月天视频在线| 五月丁香精品| 大大香蕉综合在线| 亚洲婷婷月丁香五月| 梁铮版蜘蛛女在线观看| 99综合网| 欧美韩国日本| 五月天色综合| 亚洲无线视频| 天天成人综合视频| 久久五月天婷婷| 四季8848精品成人免费网站| 97干97色| 99热色精品| 天天日天天做天天操| 99ri国产| 久久精品五月| 色日本颜射| 日本久久人| 狠狠干五月丁香| 成人丁香色| 超碰av在| 婷婷五月天天| 亚洲中文字幕av| 婷久久高清| 久久女婷| 五月丁香激情四射| www. 五月. com| 丁香色六月婷婷| 色5月丁香婷婷| 亚洲情综合五月天| 久久久99免费视频| www.色婷婷| 国产av一区二区三区| 大香蕉精品视频| 欧美激情综合五月色丁香| 五月天激情四射| 青青999| 色高清无码视频| av在线免费网站| A短视频免费在线观看| 丁香五月激情综合| 色婷视频| 96精品久久久久久久久| 欧美激情综合色综合啪啪五月| 99视频内射三四| 婷婷久久性爱| 婷婷激情六月综合| 久大香蕉| 五月婷婷激情| 久久免费操| AV动漫不卡无码免费| 一本综合丁香日日狠狠色| 五月天婷婷色综合| 91九色网| 久久这里只有精品99| 婷婷终合色图| 日本美女五月天| 97人人操人人操人人操人人| 国产婷婷五月色情综合| 91久久国产综合久久| 少妇人妻综合色6699| 激情婷婷五月丁香啪啪啪| 五月情四婷婷| 玖玖色综合色| 有码人妻久久| 成人国产欧美大片一区| 99色丁香婷婷综合网| 成人av免费观看| 久99在线视频| 色欲色香综合网| 67194成I人在线观看线路1| 欧洲一区二区| 噜噜噜噜噜久| 丰满少妇猛烈A片免费看观看| 大香蕉久久草| av大香蕉| 黄色aaaaa| 五月丁香激情综合网| 久久五月天激情婷婷| 大香蕉久久| 亚洲激情图文小说| 亚洲精品色| 色综合久久五月| 丝袜大香蕉| 婷婷丁香六月影视| 99啪视频在线观看| 久久精品只有这| 婷婷五月天毛片| 国产97色在线 | 日韩| 熟女网站久久| 另类小说五月天| 天天粽合合合合| 五月婷婷视频| 爱婷婷都市激情| 婷婷涩涩五月天| 99视频这里只有免费精品| 丁香五月播播| 五月永久激情| 日本人人超碰| 久婷五月| 91热er| 在线视频婷婷| www.五月丁香| 蜜乳9188| 色婷婷人人| 噜噜狠狠色| 五月停亭六月,六月停亭的英语| 亚洲午夜电影| 99在线观看这里都是精品| 午夜不卡久久精品无码免费| 五月婷婷五月天在线| 丁香五月激情啪| 久色视频| 精品无码99| 97久久超碰| 国产色五月婷婷| 夜夜爱爱亚洲| 爱射综合| 无人精品在线视频| 26uuu国自产精品| 香蕉AV777XXX色综合一区| 欧美久久五月婷婷| WWW.久久久久久久久久久久久| 五月婷六月| 91人妻人人做人碰人人爽九色| 日韩黄黄| 99热九九在线| 无码动漫AV| 婷婷色色五月| 久久99热久久99精品| 天天爽人人综合免费7799| 久久狠色噜噜狠狠狠狠97| 婷婷黄色网| 精品成人久久久久久久_一二三四视| 中文字幕婷婷| 亚洲最大视频网站| 深爱激情综合| 丁香五月婷婷AV在线| 99在线观看| 综合色99| 26uuu欧美| 欧美色播综合在线观看| 9久久久久久久久久久| 最新高清无码专区| 五月婷啪啪| 九九热区一区二区三区| 五月色丁香| 中国操逼99| 黄色成人网站在线播放| 99在线观看这里都是精品| 婷婷色基地在线看| 国产美女无遮挡裸体毛片A片| VA婷婷亚洲| 日本三级日本三级99| 激情5月婷婷| 五月六月婷| 久久五月天激情婷婷| 色婷婷操逼网| 五月天啪啪网| 九九视频在线观看视频6 | 日本丁香五月| 九九亚洲视频| a网站免费观看| 色级婷婷| 日日夜夜干| 色五月婷婷五月天| 色偷偷色婷婷| 丁香色五月婷婷91桃色| 久久久久久久久久久久久久人妻视频 | 天天天添天天操| 99婷婷国产最新视频| 大香焦啪啪啪| 天天综合色| 久热中文字幕| 丁香激情五月| 天天精品视频免费观看| 人人艹艹艹| 日日操夜夜爽| 日韩操人| 操逼巨乳91| 亚洲欧洲色色| 激情婷婷| 久热无码| 五月天婷婷社区久久综合| 97操碰免费视频| 色五月成人| 综合在线色婷婷| 激情综合色| 久草五月天电影网| 激情欧美婷五月| 欧美久久婷婷| 色婷婷综合网站| 五月天丁香久久| 久久五月天免费网站| www婷婷色| 亚洲日韩一页精品发布| 欧美电影在线播放| 免费超碰在线观看| 国产美女无遮挡裸体毛片A片 | 婷婷五月色综合| 午夜日韩久久久网站| 九月婷婷人人操人人舔人人爱| 26uuu在线观看| 99色网站| 99无码视频| 免费亚洲婷婷中文字幕| 综合五月网| 六月丁AV| 九九热最新| 六月丁香婷婷综合在线| 婷婷五月成人| 久久久性爱视频| 色五月婷婷五月天| 色综合久久888| 人妻九九九九| 天天狠狠夜夜狠狠2023| 色婷五月天| 日本色婷婷| 色9999日韩国产| 婷婷五月花| 99热久久这里只有精品| 久久99久久99精品,久国产,久久精品免费,99久在线,久久久久国产精品免费网站,9 | 26.uuu丁香五月婷婷| 青996青| 4399欧美另类视频| 99精品久久久久久久久| CAOBIBI| 五月天色色无码| 亚洲AV在线免费看| 一本色道久久综合狠狠躁小说| 丁香婷婷狠狠97| 夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂亚洲亚洲亚洲亚洲亚洲亚洲亚洲亚洲色 | 99精品久久久久久久婷婷| 九色自拍| 91久久久久久| 99在线精品免费视频| av大片在线| 97久久精品视频| 97操男人的天堂| 色激情五月| 日韩亚洲视频| 婷婷五月天六月综合| 欧美色婷婷| 五月婷婷久久激情| 97婷婷丁香五月天激情图片| 午夜激情五月天| 亚洲熟妇无码乱子AV电影| 九九99视频| 超碰资源在线| 天天爽天天爽| 丁香五月婷婷久久久| 婷婷玖玖五月天| 激情五月天色网站| 五月婷婷在线网站| 五月丁六月香av| 久久婷婷五月草视频在线播放| 丁香五月综合激情久久潮喷| 婷婷 月 丁香| 久热黄色| 亚洲日本韩国| 五月婷久久草| 思思网站| 一丁香五月天月AV| 99精品在线观看| 亚洲一区二区色图-亚洲精品国产精品乱码-成人AV| 99久久.www| 99re熱| 天天搞夜夜六| 婷婷五月天亚洲| 丁香六月激情综合| www狠狠爱com| 成人精品一区二区三区四区五区 | 六月婷婷久久| 九九免费在线视频| 性视频久久| 白人荫道BBWBBB大荫道| 4399欧美另类视频| 夜夜天天天天天干天天爽| 五月激情婷婷播播开心| 国产成人精品一区二三区熟女在线| 噼里啪啦在线观看免费完整版视频 | 中文字幕五月久久婷婷| 第四色五月激情网| http://www.sd-xiangsu.com/| 99久在线精品99re8| 五月天激情久久| BlACKEDRAW视频一区二区| 国产免费AV网站| 开心五月婷婷99| 精品99在线| 性做爰A片免费视频A片直播| 丁香五月婷婷欧美成人色图| 丁香六月婷婷综合麻豆| 亚洲美女网Va| 欧美婷婷色| 五月婷婷丁香网| 激情丁香淫荡婷婷| 久99| 1234操逼网| 狠狠狠狠免费| 五月激情偷拍| 日韩精品一品二区三区的使用体验| 五月婷婷黄色| 婷婷天天婷婷天天澡| 天天爽天天操| av在线免费播放| 日本五月天一页| CHINESE熟女老女人HD视频| 人妻视频在线| 九热视频| 婷婷成人av| 久久aaa| 婷婷情色五月天| AA片在线观看视频在线播放 | 91视频五月丁香| 99性感视频| 色吧综合网| 中文字幕精品在线观看| 欧美色色色色色| 97五月婷| 婷婷中文字幕版| 色播五月婷婷| 日本美女上人| 亚洲操精品| 免费观看日韩成人av| 亚洲五月天伊人| 高清无码入口| 狠狠搞五月天| 婷婷香五月天| 丁香五月天狠狠操| 99精品综合视频| 影音先锋男人站,影音先锋男人色资源网,影音先锋AV最新资源站,影音先锋AV资源 | 狠狠色色| 九九sese| 激情丁香五月婷婷| 激情丁香五月婷| 天天色粽合合合合合合合| 狠狠爱婷婷五月天| 天天摸天天日天天舔| 精品成人在线| 色情久久久| 亚洲熟妇AV乱码在线观看| 99在线爽| 婷婷五月色| 久久综合站| 久久一二三视频| 农村熟妇高潮精品A片| 色丁香五月婷婷婷| 激情小说视频图片| 爱狠射| 久久A V无码视频| 人人摸人人干| 79精品视频| 亚洲a片免费观看| 中文网av| 月丁香久久久| 网站免费一站二站| 婷婷99中文字幕| 97综合在线| 亚洲操逼网| 狠狠做深爱婷婷久久综合一区| 日韩美一级毛卡片| 久热这里只有精品视频免费观看| 国产AV一区二区三区最新精品| 丁香五月激情啪啪| 久热这里| 五月天婷爱综合| 4399无码视频| 大伊久久| 色九九一二| 激情五月丁香亭亭| 伊人激情啪啪| 色射影院| 亚洲国产色婷婷| 中国女人做爰A片| 婷婷综合欧美| 国产69久久久欧美黑人A片| 99成人精品| 大地9中文在线观看免费高清| 性色欲情 网站| 国自产拍偷拍精品啪啪一区二区| 99热久只有精品首页| 成人中文网| 人人人人人人人草| 伊人9在线| 色五月激情| 国产亚洲99久久精品| 精品久久99| 人妻自慰在线| 久草丁香婷婷1024| 婷婷丁香色五月久久88| 视频一二区| 色色色热热热| AV天堂婷婷五月天| 人人性久久| 久久五月视频| 激情五月天激情综合网| 久草热8精品视频在线观看| 丁香五月婷婷色| 五月激情射| 99视频精品在线| 五六月丁香激情视频| 日韩黄色AV无码| 久久激情五月婷婷| 久色国产| 婷婷久久亚洲| 六六久久黄色| 超碰人人在线| 夜丁香五月婷婷| 国产激情在线| 色狠狠色综合久久久绯色AⅤ影视| 91人人操人人| 99 热| 色婷婷五月综合激情中文字幕| 。久久久久久久久久久久久久人妻| 日本三级99人妇网站| 婷婷六月久久综合导航| 99久超碰| 日韩ww| 91美女被操| 久99久热只有精品国产99| 久激情| 欧美大肥婆大肥BBBBB| 久久久久er热| 亚州欧美国产久精国产99综合视频| 亚洲亚洲人成综合网络| 五月婷激情影院| 天天天天天操| 色五月琪琪| 色日本颜射| 婷婷香蕉| 天天艹夜夜艹| 五月天自拍视频| 大香蕉99| 六月婷婷操逼| 欧美69久成人做爰视频| 五月婷婷综合色啪| 婷婷97碰碰| 超碰cap| 久久九九免费视频| 99亚洲视频| 天天插轮理| 激情综合九月| 午夜色丁香| 亚洲欧美在线观看| 亚洲综合色色| 国产毛片精品一区二区色欲黄A片| 久久精典| 综合色婷婷| 一区二区成人电影免费播放| 天天天天操| 天天插综合| 五月丁香婷婷激情久久| 欧美噜噜久久久XXX| 丁香五月婷婷亚洲天堂| 婷婷丁香五月天激情四射| www.婷婷五月天| 99在线免费视频| 色色色9| 激情五月婷婷综合视频| 综合xx网| 久久视屏这里只有久久| 伊人超碰| 99综合自拍| 特黄三级又爽又粗又大| av在线免费播放观看| 亚洲精品视频在线| 久久激情视频| 婷婷五月天堂网| 久久婷五月综合| 婷婷久久女人| 九一九九黄色| 亚洲丁香婷婷| 婷婷大香焦| 欧美日本黄色| 婷婷五月,偷窥偷拍网| 毛片色五月| 5月丁香六月婷婷| 丁香无月在线观看| 久久婷婷六月天| 99自拍视频在线| 六月激情丁香一道本7777| 91碰操| 被强行糟蹋的女人A片| 丁香五月天激情综合| 亚洲精品无码久久| www.婷婷亚洲基地| 9 1超碰九色| 久久精品五月天| 九九人人精品| 九九色人| 99热精品在这里| 久久五月天婷婷| 人人草开心五月天| 亚洲无码99| 色婷久| 五月综合激情| 在线观看亚洲视频影院| 日韩综合久久| 亚洲精品成人| 激情五月天综合网| 国产亚洲精品久久久久久郑州| 人妻激情在线| 97色婷| 色婷婷五月综合| 五月婷婷久久综合| 国产古装妇女野外A片| 国产精品18久久久| 丁香五月激情啪啪| 9精品久久999| 婷婷五月综合社区在线| 怡红院91a√| 色欲九区| www.玖玖婷婷在线| 色婷婷69| 99热99成人| 嫩草综合网| 五月丁香AV在线| 狠狠人人婷婷| 成人av免费观看| 色情五月综合婷婷| 五月丁香影院| 人碰人人人玩91| 大香蕉久久综合网| 97日本在线| 91玖玖| www.超碰在线| 黄色99网| 国产婷婷五月色情综合| 婷婷综合五月天| 婷婷综合网| 亚洲亚洲人成综合网络| 亚洲不卡123| 99精品人人| 激情综合五月色在线| 99爱免费视频| 婷婷六月激情| 色婷婷成人做爰A片免费看网站| 丁香啪啪| 九九精品丁香花| 丁香五月先锋| 久久综合热17c| 激情图片婷婷| 色久丁香五| 女人天堂AV| 日本三级日本黄色| 丁香伊人网| 五月婷婷免费视频| 五夜丁香| 99热国品| 天天综合五月| 狠狠狠狠狠狠狠狠狠狠狠色宗合图片| 爱草视频在线| 伊人玖玖婷婷| 大战熟女丰满人妻AV| 9色免费网| 91九色中文| 日日天天操| 超碰在线综合| 九九色网专区| 精品九九婷婷| 色香蕉影院| 亚洲色 视频| 日本三级中国三级99人妇网站| 婷婷五月在线观看| 99免费青青蜜臀| 热99精品视频观看| 色色亚洲| 超碰免费人| 亚洲啪啪视频| 天天撸天天干天天插| 99碰碰| 久婷首页| 五月婷婷丁香五月婷婷| 亚洲激情综合| 狠狠久久婷| 噜色精品| 91综合在线| 丁香五月婷婷综合91| 色五月aV| 91操操| 97艹| 丁香五月天综合网| 五月天激情国产综合婷婷婷| 伊人婷婷五月天av| 国产日日操夜夜操的肉棒视频| 婷婷五月激情六月| 一二线视频 另类| 97福利视频| 无码99| 亚洲色频| 久热这里精品免费| 亚洲色色色| 97碰碰草| 久久这里这里有精品免费视频| www夜夜操comwww| 色综合五月天| 六月色色| 99色| av国产精品| 色天天综合天天综合频道。| 丁香色五月婷婷| 九九亚洲综合| 五月婷婷六月丁香激情| 亚洲字幕AV一区二区三区四区| 99ER热精品视频| 一起草av| 在线视频另类| 玖玖99免费视频| 丁香色五月天| yirenjiqingshiping| 深爱五月天婷综合| 五月天激情视频| 人人97碰| 丁香五月电影| 99re资源在线视频导航| 色五月综合婷婷| 国产又爽又猛又粗的视频A片| 亚洲无码黄色| 五月婷婷激情69| 日本乱子人伦在线视频| 他改变了拜占庭| 婷婷免费视频| 大香蕉av在线| 婷婷激情五月综合| 五月丁香六月在线欧美| 色婷婷丁香五月天| 婷婷丁香社区网| 这里只有精品1| 日韩ac不卡无码| 国产成人综合网| 久久婷婷内射| 久99视频在线观看| www.com在线操视频免费观看| 五月在线婷色| 免费精品99| 一夜福利不卡| 国产精自产拍久久久久久蜜| 欧美日本黄色| 思思热视频在线观看| yazhoujiqingav| 激情综合网激情五月丁香| 99婷五月| 美国色五月天婷婷资源站| 久久五月天丁香| 国产精品国产| 日本人妻久久| 丁香五月六月综合欧美| 色玖玖玖| 天天狠狠六月婷丁香影院| 狠狠干在线| 久久综合人妻| 久久激情五月婷婷| 人妻无码精品一区| 色欲Av五月天| 国产精产国品一二三在观看| 亚洲另类久久| 国产综合丁香五月天| 久久免费操| 日韩无码系列| 91精品无码| 婷婷五月综合色中文字幕| 婷婷六月丁| 婷婷亚洲五月丁香综合在线| 五月婷婷影视| 久热超碰91| 精品五月视频婷婷在线观看| 亚洲视频一区| 五月丁香综合啪啪対白| 性色综合网| 97干欧美| 日本在线视频手机播放五月婷| 亚洲操逼网| 久热a| 亚洲精品网址| 狠狠操狠狠插| Www.久久| 天堂久久精品| 五月丁香婷中文| 婷婷在线视频| 久久久精品人妻录| 97伦色婷婷| 色婷婷久久综合| 婷婷丁香五| 91婷婷丁香五月亚洲| 97超碰在线免费观看| 五月丁香色色综合| 99色视频| 天天舔天天操| 久久丝丝热| 婷婷五月丁香综合网| 热99AV网站| 99re99在线看| 婷婷激情六月中文| 亚洲av成人在线| 久久五月丁香| 国产AV一区二区三区最新精品| 综合视频五月| 色九月欧美| 精品无码久久久久久久久| 婷婷五月天开心网| 无码动漫AV| 人妻精品一区二区三区| 精品五月天| 欧美六月婷婷| 丁香婷婷六月| 色综合激情| 狠色综合网| 人人操碰| 一起草AV| 丁香六月色婷婷| 国产精品久久久99视频| 天天综合色99| 国产激情综合五月久久| 色99网| 婷婷丁香五月天综合网| 亚洲精品视频电影| 色色9 9| a久久| 无码99| 久久婷婷五月激情网站| 激情婷婷九月| 国产熟妇乱子伦hd| 国产激情久久久| 天天天操天天天日| 丁香五月天天| 日本三级日本三级99| 丁香五月第四色88| 1024人妻| 日日操夜夜擼| 这里只有精彩视频| 99re思思| 亚洲小电影在线观看黄999| 日韩人妻AV在线| 99婷婷| 国产激情婷婷| 9这里只有精品| 九九热国产| 色色色激情| 色很久综合| 国产黄大片在线观看画质优化| 99热在线只有精品| 狠狠色无码| 97人妻碰碰碰久| 99久久五月天| 国产一区二区三区影院| 九九热思思| 伊人久久婷婷五月天激情四射| 99色.com| 不卡成人免费| 午夜少妇在线观看视频| 婷婷欧美激情| 亚洲精品色色色| 亚洲第一色色色| 五月丁香趴趴| 五月婷婷激情综合拍| 丁香婷婷精品视频| 99久在线精品| 婷婷色色欧美| 国产综合A片| 天天久综合网永久入口18| 五月天综合网| 二色av| 色综合久久中文| 99视频这里有精品| 婷婷开心激情五月激情网| 嫩草AV久久伊人妇女超级A| 久月婷婷| www.久久久久久久| 婷婷操久久| 五月间天堂综合| 操日本色| WWW.五月com| www.玖玖九| 日本二级毛片二级毛片| 777精品久无码人妻蜜桃| 天天综合色| 六月婷婷开心| 天天草天天爽| 九九热精品| 色欲一二三| 99热精品在线免费观看| 丁香五月天啪啪a日本| 五月丁香六月婷婷视频| 天天夜夜操| 伊人综合网4| WWW.桔色成人.COM| 色久免费| 999热成人在线综合网| 欧美VA在线观看| 五月丁香花婷婷玉莉AV| 天天做天天摸| 婷婷六月丁香欧美视频在线| 婷婷五月天六点丁香五月| 亚洲五月丁| 久久99热 这里有精品| 激情的五月| 色综合久久88色综合中文字幕| 99婷婷| 丁香五月六月久久综合| 丁香婷婷九月| 另类亚洲2| 久热九九| 五月天 综合 在线| 99区视频| 99精品在线下载| 久久久久久久久久久久久久人妻视频| 婷婷色情网| 99热综合在线| 丁香五月视频在线观看| 色五月激情基地| 99愛国产| 丁香六月婷婷| 第四色激情网| 少妇人妻人伦A片| 五月丁香啪啪网| 欧美婷婷色| 五月色情婷婷| 91精品婷婷国产综合 | 激情五月婷婷她| 婷婷丁香五月天操逼| 丁香五月 无码| 亚洲AV综合网| 久久永久网址| 成人视屏在线观看| 天天搽天天射| 开心五月色婷婷综合开心网| 婷婷金品综合视频| 91久久精品无码一区二区三区| 九月停停| 九九久久污| 日本黄色精品| www.91色| 五月丁香亭亭天天舔| 欧美人妻一区二区| 亚洲激情五月天| 亚洲av成人在线| 久久久大香蕉| 五月丁香在线| 丁香六月激情国产| 色五月天丁香婷婷色| 丁香婷婷大香蕉| 亚洲综合干| 五月激情综合深爱| 成人电影AV在线观看| 在线99热| 大香久久伊人网| 九九热在线99| 伊九九三级区| 亚洲色a| 六月婷婷久久| 亚洲字幕AV一区二区三区四区| 色色色热| 久久婷婷丁香花综合网| 99色在线观看视频| 青青草搞屄视频网站| 五月丁香婷婷人体| 伊人网色婷婷五月天| 国产成人综合网| 亚洲婷婷婷| www.婷婷五月天| 丁香六月婷婷综合| 91seAV| 五月丁香六月激情综合网| 九九国产精视频| 五月天另类图片| 色色色综合色| 色爱爱综合网| 99色在线观看免费| 五月天五月天成人网亭亭成人色网站| 欧美婷婷五月天| 色婷婷五月天在线观看| 亚洲99一级无嗎特制在线| 色婷婷五月天中文字幕| 五月丁香婷爱在线| 色九九九九| 婷婷深爱五月| 九草性爱| 五月婷婷丁香大陆免费| 久综合色| 婷婷桃色网| 99色综合网| 色婷婷五月婷婷五月婷婷五月| 激情婷婷五月天伊人在线观看| 九九亚洲视频| 九色视频91| 色综合丁香婷婷| 五月丁香花激情综合网| 99色视频| 99玖玖在线视频| 可以直接看的AV网站| 97久久视频| 色哟哟www| 亚洲夜夜操| 99激情视频| 色婷婷操逼网| 色狠狠综合| 超碰人人艹| 五月天丁香综合在线| 五月天无码| 99九九在线视频| 无码碰碰| 日本va欧美va精品发布视频| 婷婷中文在线| 久久久九九九 99| 能看的AV网站| 99免费在线视频| 先锋资源91| www.henhengan| 九九AV| 91一起艹| 久热这里只有精品6| 五月婷婷亞洲中文| 99热这里有精品| 九九热这里只有精品首页| 97色在线观看视频| 青草视频在线观看视频 | 婷婷久久精品| 婷婷色一二三区波多野结衣| 色色色色色级无码| 91超碰人人操| 久草丁香婷婷五月天婷| 99热成人在线观看| 国产精产国品一二三在观看| 国产成人AV人人爽人人澡Va| 天天干狠狠| 丁香五月婷婷超碰在线| 五月婷激情影院| 北条麻妃伊人 | 91岛国片| 丁香五月婷久久| 在线综合亚洲欧美65| 99色啊| 五月婷婷成人| 五月婷av| 色欲天天综合| 色99xx| 五月天基地| 久久久999精品| 99热在线看| 五月天婷婷免费| 五月天婷婷在线AN| 亚洲小视频免费播放| 99久久6| 天天婷婷综合亚洲亚洲| 第四色激情网| 婷婷在线免费| www.婷婷五月天,com| 97 A I色色| 丁香色五月直播| 六月婷婷色综合| 日本美女天天日天天爽| 亚洲亚洲人成综合网络| 婷婷五月激情网| 亚洲色五月| 99熟女啪啪视频| 9l视频自拍九色9l视频自拍九色9l社区| 婷婷伊人综合| 日韩精品色| a性生活久久无| 蜜桃五月天| 任你搞在线观看视频| 五月丁香六月| 亚洲第一成人无码A片| 亚洲色频| 综合激情啪啪| 欧美激情综合| 天天日狠狠| 思思9久久| 人人爱人人摸人人澡| 婷婷五月激情五月丁香五月| 久热这里| 96精品国产综合久久久久久| 丁香五月六月| 五月婷婷激情性爱| 超碰av在线| 亚洲看av的网站| 另类图片五月天激情| 久久机热这里只有精品| 色色婷婷婷丁香五月天| 色色丁香激情五月| 五月婷久久久| 色情五月婷婷| 色五月成人| 国产成人片| jiujiu热在线视频| 极品人妻VIDEOSSS人妻| 久9热| 亚洲中文字幕在线观看| 樱花99视频| 五月婷婷欧洲| 色播激情五月天| 久久婷婷五月丁香网| 日日夜夜婷婷| 在线观看欧美| WWW.17C亚洲精品| 人妻久久做| 婷婷色情 | 五月情涩综合婷婷| 久久精品日| 97人人草| 色宗合久久五月婷婷| 亚洲av另类在线观看| 荷兰av一级| 亚州激情在线视频| 六月综合婷婷开心伊人| 色综合色色色色色| 色九九七七| 激情综合五月婷婷| 国产婷婷五月天| 97干欧美| 免费无码毛片一区二区A片| 婷婷欧美| 狠狠狠婷婷五月综合| 99在线精品免费视频| 婷婷五月情天| 思思热在线| 色五月丁香伊人| 成人短视频在线| 激情五月婷婷老师| 六月丁香花婷婷| 日本44久久在线| 成人五月天丁香婷| 五月综合视频| 狠狠干 狠狠操| 91人操| 免费超碰在线观看| 狠狠干五月天| 丁香五月激情综合在线观看| 开心五月婷婷综合在线精品素人| 五月婷婷婷婷网| 99 r热| 日韩av网站在线观看| 九九视频在线观看| 五月天激情小说欧美激情| 只有精品视频在线观看| 精品一区久热| 九九热免费| 激情www| 欧日韩AV| Caop在线| 欧美性生交xXxX久久久| 久99久在线| 综合五月激情| 色五月综合婷婷久久综合婷婷久久综合婷婷久久综合婷婷久久 | 五月天婷婷爱| 视色综合| 狠色综合网| 日本丁香久在线| 亚洲av| 欧美丁香婷婷五月| 五月婷婷激情综合网 | 九九99热| 中国激情网| 日日夜夜狠狠婷婷色| 色婷婷精品视频在线播放| 欧美性爱五月天| 婷婷五月天男人影院色色网| 五月天国产成人| 五月色丁香婷婷综合| 超碰成人免费| 久久久区区一久久久久久| 欧美在线视频99| 色五月婷婷91| 婷婷丁香六月天激情四射网| 亚洲天堂99| 26uuu精品一区二区| 六月婷婷影院| 激情啪啪五月天| 超碰狠狠操|