亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線(xiàn)實(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)半天。后來(lái)我們立項(xiàng)做一款新的移動(dòng)端管理App決定把代碼托管和云端構(gòu)建整體遷到華為云DevCloud上核心的代碼倉(cāng)庫(kù)放到CodeHub。這件事看起來(lái)只是把Git倉(cāng)庫(kù)換個(gè)地方放實(shí)際操作下來(lái)牽扯到的東西比我預(yù)想的多得多SSH密鑰怎么配、iOS和Android兩端如何共用一套托管策略、本地環(huán)境怎么和云端構(gòu)建機(jī)對(duì)齊、CI/CD流水線(xiàn)怎么串聯(lián)起來(lái)。這篇就是整個(gè)系列的第一篇專(zhuān)門(mén)講Git連接CodeHub以及iOS、Android的本地和云端開(kāi)發(fā)環(huán)境怎么一步步搭起來(lái)。如果你正準(zhǔn)備把移動(dòng)端項(xiàng)目遷到華為云或者剛開(kāi)始用DevCloud和CodeHub這篇應(yīng)該能幫你省不少時(shí)間。我個(gè)人的體會(huì)是遷移最怕的不是技術(shù)難度而是兩邊環(huán)境不一致。本地是本地云端是云端代碼托管又是中間那一環(huán)任何一環(huán)版本對(duì)不上后面跑流水線(xiàn)的時(shí)候就會(huì)冒出一堆莫名其妙的報(bào)錯(cuò)。所以這篇文章會(huì)從代碼托管這條鏈路切入先把Git和CodeHub的連接徹底講透再分別展開(kāi)iOS和Android這邊的環(huán)境配置最后把云端構(gòu)建的環(huán)境對(duì)齊和常見(jiàn)坑也一并說(shuō)清楚。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ā)布、流水線(xiàn)等能力。而CodeHub是其中負(fù)責(zé)代碼托管的模塊本質(zhì)上就是一個(gè)基于Git的云端倉(cāng)庫(kù)服務(wù)和GitHub、GitLab屬于同類(lèi)產(chǎn)品只是它深度集成在華為云的整體生態(tài)里。對(duì)于移動(dòng)端團(tuán)隊(duì)來(lái)說(shuō)CodeHub解決的核心痛點(diǎn)是倉(cāng)庫(kù)不再依賴(lài)內(nèi)網(wǎng)服務(wù)器團(tuán)隊(duì)成員在任意網(wǎng)絡(luò)環(huán)境都能拉取和推送代碼倉(cāng)庫(kù)權(quán)限可以和DevCloud的項(xiàng)目成員體系打通同時(shí)代碼倉(cāng)庫(kù)和構(gòu)建服務(wù)天然聯(lián)動(dòng)后續(xù)做CI/CD的時(shí)候不需要額外寫(xiě)一堆腳本去對(duì)接。這里有一個(gè)很重要的認(rèn)知CodeHub不是簡(jiǎn)單的云盤(pán)版Git倉(cāng)庫(kù)它和DevCloud的流水線(xiàn)、編譯構(gòu)建任務(wù)是聯(lián)動(dòng)的。你在本地提交代碼到CodeHubCodeHub觸發(fā)Webhook云端構(gòu)建機(jī)拉取最新代碼開(kāi)始編譯整個(gè)鏈條是通的。如果只是把代碼推到遠(yuǎn)程倉(cāng)庫(kù)而不用云端構(gòu)建那這套遷移的意義就打了一半折扣。1.2 為什么我覺(jué)得這一步值得單獨(dú)寫(xiě)一篇很多教程上來(lái)就直接讓你執(zhí)行g(shù)it clone忽略了環(huán)境搭建的系統(tǒng)性。但移動(dòng)端開(kāi)發(fā)和后端不一樣涉及的本地工具鏈很重iOS必須用macOS加X(jué)codeAndroid需要JDK、Android Studio、SDK、Gradle一大堆。如果只講倉(cāng)庫(kù)配置不講環(huán)境對(duì)齊你本地跑得好好的代碼到了云端構(gòu)建機(jī)上大概率編譯不過(guò)。另外一個(gè)容易被忽略的問(wèn)題是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)庫(kù)下這些差異就必須在環(huán)境搭建階段就統(tǒng)一規(guī)范好。所以我這篇的定位是先搞定代碼托管這一層再搞定兩端環(huán)境這一層兩者的交叉點(diǎn)就是本地Git配置和SSH密鑰。下面我從最基礎(chǔ)的SSH配置開(kāi)始講這是連接CodeHub的第一道關(guān)卡。2. Git與CodeHub建立連接SSH密鑰生成、配置與驗(yàn)證全程記錄2.1 本地Git環(huán)境準(zhǔn)備與版本選擇無(wú)論iOS還是Android端第一步都是在本地裝好Git。macOS上我推薦用Homebrew安裝命令是brew install git安裝完檢查版本git --version這里有一個(gè)需要注意的細(xì)節(jié)macOS自帶的Git版本可能比較老而且Xcode如果更新過(guò)系統(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ì)說(shuō)這里先保證Git本身是可用的。2.2 SSH密鑰對(duì)生成一對(duì)密鑰還是兩對(duì)密鑰連接CodeHub有兩種方式HTTPS和SSH。HTTPS每次push都要輸入用戶(hù)名密碼可以配置credential緩存但團(tuán)隊(duì)協(xié)作時(shí)容易出問(wèn)題SSH則是通過(guò)公鑰認(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ù)說(shuō)明一下-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這種寫(xiě)法Git會(huì)自動(dòng)使用對(duì)應(yīng)密鑰。沒(méi)有這個(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)庫(kù)都能用。然后在本地驗(yàn)證連通性ssh -T gitcodehub.devcloud.huaweicloud.com第一次連接會(huì)提示確認(rèn)指紋輸入yes回車(chē)。如果返回類(lèi)似于Welcome to CodeHub的歡迎信息說(shuō)明密鑰配置成功。如果提示權(quán)限拒絕Permission denied按順序排查公鑰是否完整復(fù)制有沒(méi)有多復(fù)制空格或者漏掉末尾的郵箱注釋私鑰文件的權(quán)限是否過(guò)寬運(yùn)行chmod 600 ~/.ssh/id_rsa_devcloudssh-add -l查看私鑰是否已加載到ssh-agent沒(méi)有就執(zhí)行ssh-add ~/.ssh/id_rsa_devcloud這里我要特別提一個(gè)坑Windows環(huán)境下如果你用的是Git for Windows自帶的OpenSSH但同時(shí)又裝了別的SSH工具可能會(huì)遇到公鑰能配但就是連不上的問(wèn)題大概率是SSH客戶(hù)端選擇沖突。解決辦法是在Git for Windows的安裝選項(xiàng)里明確設(shè)置Use OpenSSH或者在系統(tǒng)環(huán)境變量里把GIT_SSH指向正確的ssh.exe路徑。2.4 創(chuàng)建CodeHub倉(cāng)庫(kù)并完成首次push在CodeHub后臺(tái)新建倉(cāng)庫(kù)填充倉(cāng)庫(kù)名選擇可見(jiàn)范圍私有還是公開(kāi)。國(guó)內(nèi)團(tuán)隊(duì)項(xiàng)目的代碼倉(cāng)庫(kù)保險(xiǎn)起見(jiàn)都選私有同時(shí)注意DevCloud里項(xiàng)目的成員權(quán)限配置——不是項(xiàng)目成員的人看不到倉(cāng)庫(kù)這一點(diǎn)和GitLab的Group權(quán)限模型類(lèi)似。倉(cāng)庫(kù)創(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寫(xiě)好。iOS項(xiàng)目至少要忽略Pods/、DerivedData/、*.xcuserstateAndroid項(xiàng)目至少要忽略build/、local.properties、.idea/。這些目錄一旦被提交進(jìn)去后面再想清理就得用git rm -r --cached麻煩不說(shuō)還容易誤刪分支命名建議統(tǒng)一用master或mainDevCloud的倉(cāng)庫(kù)默認(rèn)分支可以在后臺(tái)改。后續(xù)如果走Git Flow再按需建develop、release分支首次push的倉(cāng)庫(kù)建議不要太大超過(guò)幾百M(fèi)B時(shí)用git gc壓縮一下對(duì)象否則網(wǎng)絡(luò)不穩(wěn)定時(shí)容易push失敗3. iOS本地與云端開(kāi)發(fā)環(huán)境Xcode、模擬器與構(gòu)建機(jī)的配合3.1 Xcode版本選擇與命令行工具iOS開(kāi)發(fā)繞不開(kāi)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)單但我遇到過(guò)一個(gè)很頭疼的問(wèn)題Xcode更新到新版本后xcodebuild命令報(bào)錯(cuò)找不到SDK。這個(gè)問(wèn)題的根源是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)的情況是本地編譯鏈接通過(guò)提交上去之后云端構(gòu)建報(bào)錯(cuò)什么SDK版本過(guò)低parameter of xxx is unavailable之類(lèi)看起來(lái)像是代碼問(wèn)題實(shí)際是工具鏈版本不一致導(dǎo)致的。DevCloud的構(gòu)建任務(wù)配置頁(yè)面里可以選擇構(gòu)建機(jī)類(lèi)型和Xcode版本這一步一定要和本地對(duì)齊。我記過(guò)一次很典型的例子A同學(xué)本地Xcode 16提交的代碼云端的構(gòu)建機(jī)還停留在Xcode 14結(jié)果一跑流水線(xiàn)就報(bào)iOS 17 SDK required。當(dāng)時(shí)排查了半小時(shí)最后發(fā)現(xiàn)不是代碼問(wèn)題純粹是版本錯(cuò)位。3.2 本地模擬器與真機(jī)調(diào)試的環(huán)境細(xì)節(jié)模擬器本身不算復(fù)雜但涉及證書(shū)簽名的環(huán)節(jié)容易卡人。模擬器構(gòu)建不需要證書(shū)直接CommandR就能跑真機(jī)調(diào)試需要Apple Development證書(shū)和描述文件。這個(gè)證書(shū)體系對(duì)新手來(lái)說(shuō)是第一道坎。實(shí)操層面在Xcode的Signing Capabilities面板里勾選Automatically manage signingXcode會(huì)自動(dòng)幫你生成開(kāi)發(fā)證書(shū)和描述文件。但如果你是用CodeHub拉下來(lái)的倉(cāng)庫(kù)且項(xiàng)目里的Bundle Identifier和當(dāng)前開(kāi)發(fā)者賬號(hào)不匹配會(huì)自動(dòng)簽名會(huì)失敗。我一般建議確認(rèn)團(tuán)隊(duì)里每個(gè)開(kāi)發(fā)者在DevCloud項(xiàng)目的成員列表里并且有對(duì)應(yīng)的Apple開(kāi)發(fā)者賬號(hào)權(quán)限項(xiàng)目里如果涉及推送、App Group等能力在Apple開(kāi)發(fā)者后臺(tái)提前配好不要提交個(gè)人證書(shū)和描述文件到Git倉(cāng)庫(kù)用Xcode的自動(dòng)管理機(jī)制代替云端iOS構(gòu)建時(shí)證書(shū)的處理方式不同需要把證書(shū)和描述文件上傳到DevCloud的證書(shū)管理里構(gòu)建時(shí)通過(guò)配置關(guān)聯(lián)。這個(gè)我放到第五節(jié)講流水線(xiàn)時(shí)一起說(shuō)。3.3 使用Xcode連接CodeHub倉(cāng)庫(kù)的操作路徑Xcode內(nèi)置了Git客戶(hù)端在項(xiàng)目初始化的界面上Xcode 15及以上的版本在創(chuàng)建項(xiàng)目時(shí)可以選擇源碼控制。如果是已有的項(xiàng)目要通過(guò)Xcode連接CodeHub可以在Xcode的Source Control菜單里添加遠(yuǎn)程倉(cāng)庫(kù)填入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里寫(xiě)代碼、看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è)置這些能避免大量無(wú)意義的沖突。4. Android本地與云端開(kāi)發(fā)環(huán)境Android Studio、Gradle與CodeHub的三角組合4.1 JDK與Android Studio安裝的版本匹配問(wèn)題Android端的本地環(huán)境搭建第一個(gè)坑就是JDK版本。Android Studio新版本如Koala及以后內(nèi)置了JBRJetBrains Runtime但Gradle構(gòu)建時(shí)仍需要Java環(huán)境。常見(jiàn)的匹配關(guān)系大致如下Gradle版本JDK版本要求AGP版本建議7.xJDK 11或177.x8.xJDK 178.x8.5JDK 17或218.5如果不匹配最常見(jiàn)的就是Unsupported class file major version這類(lèi)報(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安裝完成后還要通過(guò)SDK Manager下載對(duì)應(yīng)版本的Android SDK Platform、Build Tools和NDK如果你的項(xiàng)目用C/C代碼。SDK的路徑配置很重要Android Studio默認(rèn)會(huì)寫(xiě)到用戶(hù)目錄下的Android/Sdk這個(gè)路徑務(wù)必記下來(lái)后面配置云端構(gòu)建時(shí)還要用到。4.2 Gradle初始化與項(xiàng)目依賴(lài)同步Android項(xiàng)目的構(gòu)建核心是Gradle。新建項(xiàng)目或從CodeHub拉取項(xiàng)目后Android Studio會(huì)自動(dòng)同步Gradle依賴(lài)。但如果是從倉(cāng)庫(kù)拉的老項(xiàng)目大概率會(huì)遇到兩個(gè)問(wèn)題Gradle wrapper版本和本地已安裝的Gradle版本不匹配依賴(lài)源拉取超時(shí)第一個(gè)問(wèn)題的解決辦法是修改gradle/wrapper/gradle-wrapper.properties里的distributionUrl或者直接在Android Studio里調(diào)整Gradle JDK版本。第二個(gè)問(wèn)題在實(shí)際中更常見(jiàn)經(jīng)常是國(guó)內(nèi)網(wǎng)絡(luò)環(huán)境下默認(rèn)的Google Maven倉(cāng)庫(kù)拉取慢。常用的做法是在項(xiàng)目級(jí)build.gradle里配置阿里云鏡像倉(cāng)庫(kù)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è)配置我一般建議只在本地開(kāi)發(fā)環(huán)境加提交代碼時(shí)通過(guò)git update-index --skip-worktree build.gradle的方式避免誤提交或者干脆在CI環(huán)境里用環(huán)境變量控制鏡像源。原因也很簡(jiǎn)單如果所有團(tuán)隊(duì)成員都用自己的鏡像配置可能會(huì)出現(xiàn)依賴(lài)源不一致、構(gòu)建結(jié)果不一致的情況。4.3 Android Studio的VCS配置與從CodeHub拉取項(xiàng)目Android Studio內(nèi)置了Git支持首次打開(kāi)項(xiàng)目后通過(guò)VCS菜單可以把本地倉(cāng)庫(kù)切換到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里開(kāi)發(fā)編碼切換到命令行執(zhí)行g(shù)it pull --rebase拉取遠(yuǎn)端最新代碼手動(dòng)處理沖突后再回Android Studio刷新項(xiàng)目本地編譯通過(guò)后再push到CodeHub這樣看似多了一步實(shí)際能避免很多Git操作造成的問(wèn)題。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ì)齊。這里最容易出問(wèn)題的點(diǎn)有三個(gè)SDK版本本地裝的是API 34云端構(gòu)建機(jī)可能只預(yù)裝了API 33編譯時(shí)就會(huì)報(bào)SDK component platforms;android-34 was not found。解決辦法是在流水線(xiàn)構(gòu)建任務(wù)里加上SDK安裝步驟或者通過(guò)腳本自動(dòng)下載對(duì)應(yīng)版本Gradle緩存云端構(gòu)建機(jī)每次構(gòu)建時(shí)如果不是同一臺(tái)機(jī)器Gradle的依賴(lài)緩存可能為空構(gòu)建耗時(shí)明顯拉長(zhǎng)。DevCloud構(gòu)建任務(wù)支持配置緩存策略建議開(kāi)啟簽名配置release包的簽名文件.jks不要放進(jìn)倉(cāng)庫(kù)本地構(gòu)建時(shí)用local.properties引用簽名路徑云端構(gòu)建時(shí)通過(guò)DevCloud的私密參數(shù)下發(fā)我在初期的項(xiàng)目里吃過(guò)虧本地release構(gòu)建一直正常云端一跑就報(bào)Key was created with errors排查后發(fā)現(xiàn)是簽名文件被加密后云端構(gòu)建機(jī)上解密生成的臨時(shí)文件權(quán)限不對(duì)。這種問(wèn)題很隱蔽寫(xiě)在流水線(xiàn)配置里要注意文件的加密與解密順序。5. 云的流水線(xiàn)配置從代碼提交到自動(dòng)化構(gòu)建的核心鏈路5.1 在DevCloud里創(chuàng)建編譯構(gòu)建任務(wù)DevCloud的CI/CD核心是流水線(xiàn)Pipeline構(gòu)建任務(wù)可以單獨(dú)配置也可以放在流水線(xiàn)里串聯(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)庫(kù)和分支選擇構(gòu)建模板Android有現(xiàn)成的模板會(huì)幫你填充Gradle命令和SDK路徑配置構(gòu)建機(jī)類(lèi)型一般選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)庫(kù)訪(fǎng)問(wèn)權(quán)限。另一種路徑是你在自己的流水線(xiàn)里寫(xiě)自定義腳本用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)建的證書(shū)管理與描述文件策略iOS云端構(gòu)建相對(duì)Android更繁瑣核心在于證書(shū)和描述文件不能像Android那樣簡(jiǎn)單用密鑰參數(shù)。DevCloud提供證書(shū)管理功能把.p12證書(shū)文件和.mobileprovision上傳到云端構(gòu)建時(shí)綁定到對(duì)應(yīng)任務(wù)。實(shí)操中我發(fā)現(xiàn)以下幾個(gè)環(huán)節(jié)是坑點(diǎn)高發(fā)區(qū)證書(shū)導(dǎo)出在鑰匙串訪(fǎng)問(wèn)里導(dǎo)出.p12時(shí)注意勾選包含私鑰并設(shè)置導(dǎo)出密碼。這個(gè)密碼在云端構(gòu)建配置時(shí)要用到描述文件選擇確保描述文件包含的設(shè)備列表包含運(yùn)行真機(jī)的設(shè)備或者使用App Store類(lèi)型描述文件。如果描述文件不匹配簽名階段會(huì)直接報(bào)錯(cuò)構(gòu)建命令的選擇xcodebuild的-exportArchive階段要指定ExportOptions.plist這個(gè)文件里寫(xiě)的teamID、method要和證書(shū)匹配。我們?cè)趯?shí)際項(xiàng)目中維護(hù)了一個(gè)ExportOptions.plist模板放在倉(cāng)庫(kù)里避免每個(gè)人本地手寫(xiě)導(dǎo)出配置構(gòu)建日志里常見(jiàn)的errSecInternalComponent錯(cuò)誤大多是證書(shū)導(dǎo)入到云端Keychain時(shí)權(quán)限問(wèn)題。DevCloud的文檔里會(huì)提到構(gòu)建機(jī)鑰匙串權(quán)限設(shè)置建議仔細(xì)閱讀這里不再展開(kāi)。5.3 流水線(xiàn)串聯(lián)提交觸發(fā)、靜態(tài)檢查與產(chǎn)物歸檔當(dāng)兩端構(gòu)建任務(wù)都跑通后就可以把它們串到一條流水線(xiàn)里。DevCloud里創(chuàng)建流水線(xiàn)經(jīng)過(guò)這幾個(gè)階段代碼提交時(shí)自動(dòng)觸發(fā)在倉(cāng)庫(kù)配置Webhook或者流水線(xiàn)的代碼源綁定CodeHub倉(cāng)庫(kù)每次push自動(dòng)啟動(dòng)流水線(xiàn)并行執(zhí)行iOS構(gòu)建和Android構(gòu)建在邏輯上相互獨(dú)立可以配置成并行階段節(jié)省總耗時(shí)靜態(tài)檢查可選DevCloud集成了代碼檢查服務(wù)可以加在構(gòu)建前攔截明顯的編碼規(guī)范問(wèn)題產(chǎn)物歸檔把生成的.ipa和.apk文件歸檔到DevCloud的軟件發(fā)布庫(kù)或制品庫(kù)方便測(cè)試同學(xué)直接下載這里分享一下我對(duì)自動(dòng)化程度的建議不是流水線(xiàn)越復(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)境。一上來(lái)就配置全自動(dòng)鏈路維護(hù)成本會(huì)很高而且出現(xiàn)問(wèn)題后排查難度大。5.4 云端構(gòu)建機(jī)與本地環(huán)境的一致性維護(hù)清單這是一個(gè)我強(qiáng)烈建議做成文檔的清單。我們?cè)趯?shí)際運(yùn)營(yíng)中總結(jié)出來(lái)的一致性維護(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文件云端證書(shū)管理依賴(lài)源海外或鏡像源與本地保持一致這個(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ò)亂的處理開(kāi)頭提到過(guò)xcode-select的問(wèn)題再展開(kāi)講一次具體案例。有一次Xcode從15.2升到15.3之后團(tuán)隊(duì)里幾個(gè)iOS開(kāi)發(fā)同時(shí)報(bào)告在終端跑xcodebuild時(shí)提示找不到這個(gè)命令。排查后發(fā)現(xiàn)原因是升級(jí)過(guò)程中系統(tǒng)把/Library/Developer/CommandLineTools激活成了默認(rèn)開(kāi)發(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腳本里面寫(xiě)好export DEVELOPER_DIR/Applications/Xcode.app/Contents/Developer export JAVA_HOME/path/to/jdk-17每次打開(kāi)新終端或者進(jìn)入項(xiàng)目目錄時(shí)先source env.sh從源頭避免環(huán)境錯(cuò)亂。6.2 Gradle依賴(lài)下載超時(shí)的排查鏈路Android構(gòu)建最容易出現(xiàn)的經(jīng)典坑就是依賴(lài)下載超時(shí)。表現(xiàn)是構(gòu)建日志里出現(xiàn)類(lèi)似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)庫(kù)地址是否可訪(fǎng)問(wèn)直接在瀏覽器里訪(fǎng)問(wèn)一下對(duì)應(yīng)URL檢查本機(jī)是否有代理或防火墻攔截了相關(guān)域名如果用的是鏡像源確認(rèn)鏡像源同步完整在實(shí)際案例里我們遇到過(guò)鏡像源只同步了部分模塊導(dǎo)致解析失敗的情況這時(shí)候把缺失的倉(cāng)庫(kù)臨時(shí)切回Google官方倉(cāng)庫(kù)即可。另外合理配置Gradle離線(xiàn)緩存也能顯著緩解~/.gradle/caches目錄的緩存可以復(fù)制到云端構(gòu)建機(jī)的持久化磁盤(pán)避免每次構(gòu)建從零下載。6.3 敏感文件入庫(kù)的補(bǔ)救流程經(jīng)常有同事在配置環(huán)境時(shí)臨時(shí)改了local.properties提交代碼時(shí)不小心把這個(gè)文件帶進(jìn)倉(cāng)庫(kù)。這個(gè)文件里通常含有SDK路徑、本地簽名文件路徑等信息不應(yīng)該進(jìn)倉(cāng)庫(kù)。補(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)庫(kù)光這么做還不夠因?yàn)闅v史記錄里仍然存在該文件內(nèi)容。為了徹底移除要用git filter-branch或git filter-repo重寫(xiě)歷史。這個(gè)操作會(huì)導(dǎo)致倉(cāng)庫(kù)的commit hash變化如果倉(cāng)庫(kù)已經(jīng)有多人協(xié)作重寫(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)境信息的文件一律不入庫(kù)。6.4 權(quán)限邊界與團(tuán)隊(duì)成員協(xié)作的注意事項(xiàng)CodeHub的權(quán)限模型里代碼倉(cāng)庫(kù)的訪(fǎng)問(wèn)權(quán)限與DevCloud的項(xiàng)目成員角色綁定常見(jiàn)角色有項(xiàng)目經(jīng)理、開(kāi)發(fā)人員、測(cè)試人員、瀏覽者等。開(kāi)發(fā)人員默認(rèn)有倉(cāng)庫(kù)的push權(quán)限測(cè)試人員只有只讀權(quán)限這一點(diǎn)在配置完權(quán)限后要告知每位成員避免出現(xiàn)測(cè)試同學(xué)想拉代碼卻拉不下來(lái)的疑問(wèn)。還有一個(gè)容易忽略的點(diǎn)成員從DevCloud項(xiàng)目里移除后他/她原來(lái)的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)建通過(guò)這部分我以團(tuán)隊(duì)里真實(shí)走過(guò)的路徑為藍(lán)本整理出一份可以直接對(duì)照操作的完整流程清單。假設(shè)我們的項(xiàng)目叫某跨平臺(tái)管理AppiOS和Android兩個(gè)端的代碼放在同一個(gè)CodeHub倉(cāng)庫(kù)里用不同目錄區(qū)分也可以是兩個(gè)獨(dú)立倉(cāng)庫(kù)邏輯一致這里以單倉(cāng)庫(kù)為例。7.1 初始化階段本地項(xiàng)目與CodeHub倉(cāng)庫(kù)的關(guān)聯(lián)第一步在CodeHub創(chuàng)建一個(gè)空倉(cāng)庫(kù)例如mobile-app。創(chuàng)建時(shí)選私有初始化時(shí)不要勾選生成README和.gitignore保持倉(cāng)庫(kù)為空因?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è)階段遇到最多的問(wèn)題就是push時(shí)提示Permission to XXX denied按第2.3節(jié)的方法排查密鑰配置。等push成功CodeHub網(wǎng)頁(yè)端能看到代碼就說(shuō)明Git連接這一環(huán)徹底打通了。7.2 iOS本地編譯驗(yàn)證與云端任務(wù)創(chuàng)建本地打開(kāi)Xcode確認(rèn)能直接編譯運(yùn)行項(xiàng)目。然后到DevCloud創(chuàng)建iOS構(gòu)建任務(wù)主要內(nèi)容包括代碼源選擇CodeHub倉(cāng)庫(kù)分支選擇master構(gòu)建機(jī)選擇macOS類(lèi)型構(gòu)建模板選擇Xcode相關(guān)模板在證書(shū)管理里導(dǎo)入.p12和.mobileprovision構(gòu)建命令選擇xcodebuild -workspace YourApp.xcworkspace -scheme YourApp -configuration Release clean archive并指定導(dǎo)出選項(xiàng)這一步容易出的問(wèn)題構(gòu)建機(jī)型號(hào)不同xcworkspace的Pod安裝情況也不同。如果項(xiàng)目使用CocoaPods要確保構(gòu)建前先執(zhí)行pod install否則workspace無(wú)法生成構(gòu)建直接失敗。7.3 Android本地編譯驗(yàn)證與云端任務(wù)創(chuàng)建Android端同樣先確保本地能跑通./gradlew assembleDebug。然后到DevCloud創(chuàng)建Android構(gòu)建任務(wù)代碼源選擇同一CodeHub倉(cāng)庫(kù)構(gòu)建機(jī)類(lèi)型選擇Linux構(gòu)建命令填寫(xiě)./gradlew clean assembleDebug配置JDK和SDK路徑如果構(gòu)建時(shí)下載依賴(lài)慢開(kāi)啟Gradle緩存這里的關(guān)鍵是SDK路徑。DevCloud的Linux構(gòu)建機(jī)預(yù)裝了SDK但版本可能不是你需要的。我們的做法是在構(gòu)建腳本開(kāi)頭動(dòng)態(tài)安裝SDK組件sdkmanager --install platforms;android-34 build-tools;34.0.0或者直接在Gradle配置里用android.suppressUnsupportedCompileSdk的方式控制版本兼容。7.4 兩端構(gòu)建通過(guò)后的驗(yàn)證清單構(gòu)建任務(wù)創(chuàng)建完手動(dòng)觸發(fā)一次拿到構(gòu)建成功的日志后做以下驗(yàn)證在CodeHub上修改一次代碼并push確認(rèn)流水線(xiàn)自動(dòng)觸發(fā)如果配置了自動(dòng)觸發(fā)從制品庫(kù)下載iOS的.ipa和Android的APK分別安裝到模擬器和真機(jī)驗(yàn)證讓另一位同事從CodeHub重新clone代碼跑一次本地編譯確認(rèn)新成員環(huán)境也能正常復(fù)現(xiàn)檢查構(gòu)建日志里有沒(méi)有warning或非致命錯(cuò)誤盡量消除我建議至少把這些驗(yàn)證做全再進(jìn)行下一步的自動(dòng)化集成否則環(huán)境層面埋下的雷會(huì)在后續(xù)功能迭代中反復(fù)炸。8. 寫(xiě)在最后的個(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ù)、流水線(xiàn)配置里做一次同步更新同時(shí)更新團(tuán)隊(duì)文檔里的環(huán)境對(duì)齊清單。不要等到下次構(gòu)建失敗時(shí)再想起來(lái)那時(shí)候排查成本已經(jīng)上去了。另一個(gè)有價(jià)值的體會(huì)是文檔比記憶靠譜。我們團(tuán)隊(duì)現(xiàn)在維護(hù)了一份標(biāo)準(zhǔn)的入職環(huán)境搭建文檔內(nèi)容就是這篇文章里講到的流程壓縮版。新人來(lái)了照著做基本半天內(nèi)能把環(huán)境和CI鏈路跑通。如果你也是移動(dòng)端團(tuán)隊(duì)的負(fù)責(zé)人我強(qiáng)烈建議把環(huán)境搭建規(guī)范做成文檔讓每個(gè)成員按同一套標(biāo)準(zhǔn)來(lái)后續(xù)省下的時(shí)間絕對(duì)值得。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
亚洲成人在线播放| 欧美天天综合站| 中文字幕一区二区三四五区日日骚| 后入国产| 96AV精品| 亚洲精品人体| 人人爱操| 乱性AV| 99色热| 欧美色综合网| 亚洲精品精品一区二区| 免看60秒涩涩视频| 1769一区二区| 国产精品69久久久久久久| 狠狠中文字幕| 久操在97| 国产综合网站在线播放| 4虎在线观看| 亚洲黄网在哪免费看| 校园春色亚洲无码| 蜜乳AV一区| 欧美 综合| 国产 日韩,欧美 自拍| 婷婷五月天补不补| av网站免费看| 欧美 亚洲 大香| 人人贴人人摸| 欧美国产婷婷久久| 97人妻色| 国产美女裸体秘 永久无遮挡| 粉嫩AV输入| 精品亚洲国产成人av网站| 91色色综合| 久久九九国产精品| 久区视频| 中文久久96| 亚洲蜜乳av| 91色色综合| 精品国产乱码久久久久久口爆网站| 亚洲性少妇| 亚洲啪啪视频一区二区| 国产成人精品网站| 99re在线视频国产| 国产精品久久发布| 欧美性爱系列| 亚洲成人贴图| 超碰日韩美妻| 精品精品精品| 啪一啪免费视频| 春色91| 亚洲综合影视| 人妻熟女av国产网站| 亚洲欧美另类图片| 人妻 欧美 中文| 性爱精品一区| 久久综合资源一区二区| 亚洲无码电影久久久| 超碰午夜| 天天操女人| 综合免费无码中文| 国产高清成人免费视频| 九久9精品| 91精品国久久久久久无码| 综合色色婷婷| 最新av网站在线观看| 色欧美色交综合| 欧美九九爱| 思思热影视| 中文字幕久久婷婷丁香五月天| 96国产污污污丝袜| 97激情97激情| 婷婷97| 97人妻免费中文字幕| 欧美日韩一二三| 国产传媒一区日韩| 人妻天堂综合网| 操日韩第| 成年无码动漫av片无尽在线 | 亚洲第一黄色av网站| 少妇天堂| 亚洲熟妇AV日韩熟妇在线| 偷拍 精品另类 凸凹了四区| 成人亚欧免费视频| 99性视频| 丁香六月综合激情| 午夜久久无码1000合集| 黄色免费网页无码| 免费人成在线观看网站品爱网| 香蕉99秘 一区精品蜜桃臀| 综合色久欲| 超碰97久久国| 躁躁日曰躁2020| 少妇免费视频| 久久天天摸| 新版天堂中文资源8在线| 国产传媒午夜理伦精品| 天天操夜夜嗨| 婷婷色综合| 无码伊人久久大杳蕉中文无码| 免费自拍三级综合| 天天激情综合站| 日本久久女同性恋视频| 精品日韩人妻视频| 91看黄片| 国产精品久久久无码aV去| 香蕉人欧美综合| 精品久久97观看在线视频| 天美麻豆黄色录像| 天堂亚洲精品| 国产高清自拍| 国产一级内射高清视频| 欧美日韩在线小说 | 欧美中文狠| 中文字幕乱码人妻一区二区三区,99精品| 欧美一级做a爰片免费视频| 国产欧美日韩精品中文| 婷婷色色网| 日韩在线AB| 亚熟在线| 男同专区一区二区三区在线| 蜜桃av色偷偷av老熟女| 亚洲欧美高清无码| 精品午夜福利国产一区二区在线观看| 91精品人妻电影| 亚洲AV成人无码久久精品播放| 国产高清在线观看欧美| 色婷婷丁香| 五月综合久久| 久无码| 日本不卡二三区| 精品九九九九九九九九九| 日韩噜噜69| 欧美综合 站| 97久操| 91第一页| 激情综合二| 亚洲精品三| 天美av在线观看| 欧美色图天堂网m| 你草精品在线视频| 97久久久久久久久久| 91少妇高潮| 91亚洲在线| 亚洲一区二区三区中文字幕| 欧美日不卡| 成人天天看站长推荐| 97超碰人操| 久久二| 欧美gv在线观看| 性开放中文AV高清无码免费看| 97av在线视频| 蜜臀AV成人精品蜜臀| 全国男人天堂网| 18禁无码永久免费无限制| 蜜乳AV一区| 五月天婷婷影院| 吉田爱美AV在线| 欧美日韩精品久久久久东北老熟妇| 欧美激情精品| 天天精品| 激情文学欧美| 日韩小电影| 欧美日韩国产黄色片| 色情成人五月天| 亚洲诱惑| 欧美日韩不卡a片| 天天爽天天| 91在线色| 1769国内精品视频| 口爆综合网| 高清孕妇孕交 交孕妇| 亚洲美女av无码| 爱媛媛久久国产福利| 内射中出日韩在线观看视频| 亚洲,欧美,综合网| 偷看洗澡一二三区美女| 日日噜噜夜夜久久亚洲一区二区| 97狠狠| 99精品热| 国产久9| 国产精品一级毛片不卡视| 欧美嫩性色| 黄色成年| 狠狠爱综合| 本道在线| 九九探花视频在线观看| 传媒免费一区二区三区| 国产精品久久久久久亚洲色欲| 亚洲av乱伦色图网站| 美美91成人国产精品欧美精品久久久久久久| 99热这里都是精品| 99色色| 欧美色图20P| 超碰在线人妻| 97视频播放| 色色婷婷丁香| 另类图片天天影视| 啊啊啊啊啊啊啊国| 亚洲网站一区二区在线| 欧美 亚洲 大香| 人妻另类 专区 欧美 制服| 欧美制服网站美腿丝袜| 亚洲天堂2020| 96久久科窝| 立川理惠被中出无码| 91狠婷| 亚州性色| 青青草吊丝| 被窝影院午夜看片无码| 9久久美女首页| 香蕉国产精品麻豆亚洲欧美日韩 | 色乱二区| 欧美96交| 国产99999久久精品| 992大香蕉| 精品成人久久久人人亚洲| 你懂的在线观看区国产| 91久久精品国产| 无马一区二区| 91狠狠综合久久久久久| 88在线一区二区三区| 日韩国产成人自拍视频| chaopen97久久| 人人操人人操草草| 熟妇人妻一二三区免费| 精品一区二区亚洲国产| 美女天天干| 欧美人人AAA| 亚洲骚男同com| 操逼操逼视频操逼| 国产乱不卡| 粉嫩在线一区二区懂色| 美女性91| 亚洲欧美中日韩| 在线视频97| 国产视频三区四区| 香港澳门日本三级网站| 人妻精品4K4K4K4K4| 成人怡红院| 亚洲情色五月天| 91这里只有精品| 亚洲日本加勒比在线| 久久久久久九九九| 精品一区96| 国产又猛又粗又爽又黄| 一本大道综合伊人精品热热| 日韩一性一交一A片俄罗斯 | 国产精品小视频一区二区三区| 91性网| 亚洲宅男天堂| 精品日韩人妻精品一二三区| 超碰69| 亚洲日韩成人性爱视频| 男人的天堂va| 日本精品国产视频| 丝袜熟女一区二区三区| 无人区高清电影免费观看一区二区三 www.qmcai2.com | 1204金沙人妻懂旧版免费| 欧美精品99久久久**| 偷拍片久久| 99热精品在线| 午夜啪| 国产十八禁视频| 粉嫩av在线一区二区| 亚洲图片欧美偷拍| 91九九九小逼| 亚洲色诱惑| 久久午夜色播影院免费高清| 欧美性爱一区| 伊人久久88国产女| 91精品微拍福利| 死我十八禁| 在线观看AV不卡| 国产日韩在线播放av| 91男人综合| 五月天春色激情网| 视频分类 国内精品| 91五十路| Julia Annxxxxx| 人人乐大香蕉| 国产精品视频一区二区三区八戒| 香蕉99秘 一区精品蜜桃臀| 美女大乳久久久久久久女人18| 秋霞蝌科网日本一区| 看全色黄大色大片免费视频| 97ai亚洲| 亚洲涩图欧美| 久久久久中出| 天天躁日日躁AAA片李宗瑞| 夜夜骑夜夜操| 欧美日本视频一区| 熟女一区二区| 天天做天天爱| 亚洲成人福利电影免费| 尤物av网站免费在线播放| 岛国不卡超碰护士AV在线播放| 99热| 91free福利| 一区二区三区高清天码| 玖草在线视频| 久久蜜桃一区二区| 欧美激色| 久久久久久久久久久久久久久久9| 97福利视频| 美國A片| 欧美高清无码免费视频高清版| 一本色道久久综合亚洲二区三区| 熟女自慰久久久| 亚洲少妇喷视频看| 丁香五月综合| 日本日皮视频逼| 啪啪视频亚洲第一| 久草尤物| 超碰免费97| 综合欧美色图| 玖玖超碰熟| 中文字幕精品久久久久人妻红杏ⅰ| 67914亚洲精品| 日韩乱伦视频| 亚洲欧洲国产综合av| 国产99精品一区二区三区免费| 国产拍偷精品网站| 欧美成人性爱视频在线播放 | 人人操人人操人妻人| 2017天天透天天通天天擦| 国产污视频麻豆传媒一区二区| 久久五月份| 成人精品在线| 色婷久久| 久久久久13| 人妻熟女一区在| 国产日比| 尹人大香蕉视频在线| 91日本在线观看| 91精品国产高清久久久久久,亚洲成人 | 99亚洲天堂| 不卡免费av在线播放| 蜜桃视频成a人v在线| 无码区蜜乳| 极品欧美一区二区三区| 边做饭边操逼逼| 日韩熟女三十乱伦| 91人妻人人澡人人爽人人精品| 午夜操一操| 97亚洲综合| 日语五十路和六十路亚洲国产精品| 亚洲熟女av中文字幕| 色综合天天爱去电影网| 超碰在线一区二区| 四虎国产精品永久入口| 天天色黄色影院天天操| 精品人妻av在线播放| 亚洲第一精品在线视频| 久久亚洲精品成人av| 一区三区啪啪| 国产日比| 国产性感在线观看| 97爱b| 欲女人妻性色av| 欧美日韩美女精品久草一区二区三区| 久草线上视频免费看| 97久久超碰亚洲| 亚洲高清91| 免费试看60秒| 超碰国产精品久| 操逼视频免费日韩无码| 婷婷久久五月天| 日本久久久久久久久| 乱理日韩中文| 亚洲鸥美色图| 91少妇人妻| 日韩性爱免费观看视频| 日人妻视频91| 91N欧美| 日韩午夜国产| 正宗无毛一线天嫩逼| 加勒比海色香蕉婷婷| 日韩操逼性鲍| 国产在线视视频有精品| 亚洲精品蜜桃久久久一区二区三区| 99操| 日天天九九天堂666| 亚洲牲交| 中文一区在线视频| 精品国产乱码久久久久久久久1| 久久超碰亚洲人| 制服丝袜第二页| 国产91 丝袜在线播放00-百度| 免费中文综合精品| 女人被添高潮免费视频| 99国产天美| 亚洲中文字幕一区| 亚洲成人精品在线一区| 亚洲九区| 中国小夫妻勾搭露脸淫荡对白| 欧美图片校园春色| 伊人精品久久网站| 人人色97| 婷婷激情五月综合| 国产野战露脸在线播放| 激情小说五月天| 日韩精品99久久久久久中文字幕 | 久久最新视频免费观看| 欧美高清16| 国产欧美成人第一页在线观看| 亚洲午夜AV| 加勒比av中文| 内射夫妻三片| 资源在线观一 二| 日本最新1区2区3区| 明星性猛交ⅹxxx乱大交| 爆操无码| 欧美影音在线| 欧美在线永久天堂| 五月天精品| 龙兴卡官方查询| 亚洲伊人久久综合97| 天堂8在线新版官网| 超碰人妻中文在线| 白丝一区| 狼天天狼天天大香蕉| 夜夜嗨免费视频| 一个国产在线综合网站| juliaann精品熟女一区| 蜜臀99久久精品久久久懂爱| 亚洲欧美中文日韩视频中国语| 亚州中文字幕超碰97| 黄片www视频免费| 99在线精品观看99| 骚货操死你| 图片区小说区| 久久精品操| 91成人久久| 日本男人插女人的逼黄色| 亚洲 无码 偷拍| 天堂蜜桃无码视频一区二区| 激情欧美97| 99热婷婷| 人妻少妇精品视频一区二区三区| 国产伦精品一区二区三区在线观| 国产丝袜高跟美女av免费观看| 欧美一区二区福利在线| 97日视频| 日本东京热加勒比久久| 中文字幕综合人妻| 天堂无码精品国产久| 欧美色一二三| 国产一区二区a毛片| 国产欧美日韩臀| 日本高清免费一本视频在线观看| 欧美丝袜激情| 性暴力欧美猛交在线直播| 粘花网06av视频| jizz啪啪| 我中文字幕6区 | 亚洲精品一区二区免费在线观看| 亚洲精品天堂久久A∨51成人漫| 久久国模av| 奇米四色影视777久久久| 一区二区国产视频在线观看| 色色香蕉| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 久久人人爽人人爽人人片Ⅴ| 91N综合网| 亚洲色五月| 欧美夜夜| 国产成自自拍在线观看| 免费一级特黄特色大片在线观看看| 日日干男人的天堂| aaaa少妇高潮大片| 99精品九九九九九九| 99热免费| 精品美女久久久久| 加勒比伊人综合| 亚洲精品久久久久久久蜜桃臀| 午夜啊啊| 久久久久中出| 国产人妖视频一区在线观看| 久久9免费视频| av天天在线观看| 手机午夜电影神马久久| 久久成人午夜狠狠| 激情丁香五月| 欧美激情性爱视频网站| 后入福利| 久久9亚洲| 国产一区在线观看无码AV | 亚洲色图欧美色18直播在线| 天天日日日射| 丁香九月激情啪| 白嫩少妇| 天天天堂影视日韩亚洲91| 婷婷久久五月天| 日韩av电影成人在线| 嫩草 我啊~嗯~在线| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 女生看匆91网站| 九一亚洲国产免费| · —级AA伦aa坐爱午夜极速ⅴA一区天天噪天天噪天天噪 | 97超碰超碰| 试看60秒| 婷婷三区| 丰满的三级少妇欧美久久久| yiqicaoav| 人妻天天爽| 精品久久久无码| 国产亲戚伦亲在线| 国产精品4p在线观看| asc国产精品| 嗯阿好爽好紧| 色色色欧美| 精品日韩中文在线| 国产91精品在线免费| 午夜精品久久久99热蜜桃的功能特点| 大鸡吧尹人在线| 免费的黄片wwwwww| 国产又黄又爽又刺激久久久久久| 97色在线视频| 97在线亚洲| 综合网欧| 亚洲……91| 国产精品三级视频网站| 性影在线视频| 欧美亚洲国产91在线| 9久久久久久| 99日免费视频中文字幕| 欧美无圣光在线| 综合网欧美在线| 欧美自拍偷拍免费观看| ji熟女.com| 91久久久亚洲| 超碰九区| 久久久涩| 热热色综合网| 60秒免费视频| 无码久| 97精品视频免费| 日韩情色视频| 射 色综合| 婷婷综合| 91丨九色丨东北熟女| 欧美黄片欧美黄片xxx| 国产极品精品美女视频| 国产精品麻豆成人av| 黑人娇小av在线播放| 亚州性9| 少妇淫妇久久久久久久| 久久蜜桃一区二区| 色网亚洲人| …中文字幕亚洲乱,97人妻无码费视… | 99久热精品99re6热| 欧美性区| 午夜精品久久久久| 夜夜久久| 青青青艹在线视频| 亚洲老司机123专区| 久久爽爽精品| 夜草欧美| 久久久免费懂色| 校园春色欧美| 少妇熟女视频一区二区三区| 精品女同一区| 偷拍导航视频网站| 欧美劲爆第一页| 97在线视频网站| 日夜伊人网| 女人久久久| 97视频在线免费观看| 国产无码成人无码| 欧美不卡在线一区二区| 国产精品区在线12p| 超碰国产精品久| 极品尤物女神在线观看| 黑人黄片在线免费观看| 久久激情网| 2020中文字幕| 中文乱码99| 亚洲色香| 91在线一起| 欧美碰碰综合色| 亚洲色天| 日逼视频日本| 国产亚洲国产超碰| 色妺妺在线视频| 国产精品乱码久久久久久久久久久久| 熟女欧美日韩综合婷婷| 蜜桃臀一区二区aV| 久久精品无码专区| 精品日韩人妻视频| 综合操逼| 亚洲天堂区| 69综合网| 精品无码产区一区二| 国产丝袜啪啪| 自拍偷拍国产欧美日韩韩| 亚洲最新中文字幕免费| 色婷婷99| 91色五月俺来也| 国模久久在线| 日本精品五区| 天天视频综合在线观看视频| 开心五月天激情网| 西西美女视频网| 丝袜美腿操av| 五月天我淫我色av| 欧美成人午夜免费福利785| 国产精品老熟女一区二区| 亚洲综合小视频小说在线观看| 加勒比性爱成人在线| 麻豆成人影音在线| 视频国产精品未满十八禁止在线观看| 97色色视频| 欧美日韩国产电影| 熟妇色99| 婷婷午夜成人色中色| av天天在线观看| 老熟妇一区二区三区啪啪| 中文字幕第2页| 18禁美女裸体无遮挡啪啪| 91一区二区| 热热色色综合| av毛片aaaaa免费看| 亚洲天堂 视频你懂的| 国产又大又粗又长视频在线| 97欧美日韩综合| 黄色AAAAA欧美| 久久理论字幕视频| 成人草草视频| 国产51色综合久久免费| 东北女人av| 深喉吞精| 亚洲一区二区中文字幕| 少妇人妻精品| 国产强奸乱伦第1页| 欧美日韩操逼嗦吊| 免费成人在线熟妇网| 人妻夜夜爽天天爽三区麻豆AV网站| 女人双腿搬开让男人桶| 日本大香蕉| 亚洲高清视频在线免费观看| 久久99久久99久久99人受| 国产第11页| 国产精品ⅴ无码大片在线看.| 五月天婷婷综合网| 欧美后入式| 上海一级黄片| 性色av一区二区| jazzjazz国产精品麻豆| 天天爽爽爽爽| 99re欧美| 91啪啪| 97伊人超碰| 日本高清有码网址视频| 欧洲精品网| 国产精品蜜臀久久久久无码AV| 丝袜六区| 极品白嫩美少妇在地板上位骑射淫水泛滥| 国内精品伊人久久久久影院会| s片在线观看| 日本 色 导航| 精品999日本| 日韩成人在线性爱视频| 60秒试看最爽10分钟网站| av亚欧| 久久久久久久久久久人妻| 精品78| 狼天天狼天天大香蕉| 激情欧美97| 女人爽到高潮久久久| 亚洲视频精选| 插入综合网| 男人在线天堂| 亚洲、日韩、综合、另类| 亚洲欧美另类激情小说| 91在线美女| 立川理惠被中出无码| 69AV女优男人的天堂| 97免费在线视频| 青青操97| 久久久国产av美女私房| 蜜臀AV成人精品蜜臀| 性爱视频无打码在线观看| 999综合色| 国产AV激情无码久久无码 | 91美女高潮| 狠狠综合网| 亚洲se91| 91jk色拍| 大香蕉强奸乱伦| 天天干夜夜操一区二区| 久久婷婷五月| 欧美乱伦专区| 97国产天堂岛| 围产精品一区二区三区视频播放| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 欧美精品1区2区3区| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 少妇二级| 久久双插| 久久久内射良家| 中文字幕成人| 五月丁香黄色网| 农村妇女精品一区二区| 国模无码一区二区三区在线| 91色欧美| 日本丝袜美腿人妻九九| 333kkkk·亚洲com久久| 99久久99九九99九九九| 欧美最婬乱婬爆婬性视频 | 91+欧美| 操逼片中文| 三四中文字幕| 你草精品在线视频| 熟女突然公开看18禁影片| 欧美色女人| 欧美一级专区免费大片| 婷婷啪啪| 亚洲图片激情综合另类| 青青草原av| 欧美色九九九| 日本一级性爱| 99人妻碰碰碰久久久久禁片| 91日日夜夜| 天天看少妇| 久热香蕉精品在线视频| 欧美中文字幕精品人妻| 亚洲日韩久久精品一区| 国产11页| 福利伊人玖玖国产| 久久久久久久9| 欧美 日韩 婷婷 五月| 久久久无码国精品无码三区三区| 岛国大片国产| 人妻少妇精品视频一区二区三区| 97公开久久| 91亚州日韩高清| 太久视频| 91在线精品一区二区三区| 亚洲有薄码区久久在线一区| 国产SV一线| 色色国产| 青青操狠狠撩| 亚瑟国产精品久久无码| 欧美劲爆第一页| 啊啊啊啊啊啊啊网址在线观看| 久久国产精品一级二级三级| 特级丰满少妇一级AAAA爱毛片| 91亚洲综合| 快播电影网日韩新片| 亚洲综合九| 婷婷情色综合网| 女人高潮抽搐喷水视频网站| 综合五月婷婷亚洲一区| 久久的免费性爱视频| 可乐操亚洲蜜911| 香蕉免费一区二区三区不读| 三级片大波波| 曰韩精品九九无码| 一区在线观看中文字幕| 中文字幕精品日韩中文字幕| 欧美日韩午夜精品一区二区三区| 综合色一区三区二区| 东北女人性交| 久久久久久99999国产精品| 超碰98综合网| 狠狠图片青青草| 国内精品不卡无毒99999| 97人人射| 五月婷婷性爱| 亚洲国产欧美中日韩成人综合视频| 少妇3P性爱自拍| 2019精品国产无码成人| 免费一二区| 97av在线观看| 99re99| 9久热这里只有精品| 日日躁狠狠躁天天躁精品| 日韩亚洲97| 人妻五十路在线| 伊人991| 欲射影视| 性爱AV天堂| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 久久九九网| 国内精品久久久久影院亚洲| 亚洲免费人妻在| 中文字幕性感少妇av| 久久99午夜精品一区人妻| 国产精品无码av| 无码av永久免费专区网站| 天天日天天搞天天干| 国产隔壁老王影院在线| 日日夜夜精品| 18禁精品网站在线看| 18禁免费视频| 亚洲美女自拍偷拍视频| 久久精品国产96精品亚洲拳交| 成人免费在线网站| 日韩在线观看中文字幕视频| 久久久久婷婷| 欧美日不卡| 人妻精品综合中文字幕在线| 欧美日日夜夜| 中国小夫妻勾搭露脸淫荡对白| 亚洲www91| 午夜欧美女人操逼| 97碰在线视频| 99性视频| 亚洲人妻av| 另类图片五月| 亚州色站 日韩电影| 色91综合网| 和协影院中文字幕三区| 色网1| 大香蕉92| 最新制服中文第一页| 碰碰97| 色欲三区| 日本日皮视频逼| 国产精品麻豆成人AV艾秋| 久久久久久久久久久人妻| 啊灬快c我灬啊灬用力灬啊灬-国产精品性做久久久久久-成人AV | 91丨人妻丨国产丨丝袜| 精品无码一区二区三区| 日本狂喷奶水在线播放212| 色欲日韩欧美在线一区| 67914亚洲精品| 妇女视频网站| 精品人妻一区二区蜜桃视频 | 亚洲骚男同com| 一起草在线视频| 俄罗斯一区二区视频在线观看| 日韩av一级黄片| 伊人影院中文字幕| 九九国产| 天天爱天天操| 日本性爰一道本| 婷婷五月天激情网| 色爱综合网欧美| 亚洲AV色图一区| 亚洲欧美999| 中文字幕一区电影在线观看| 天天操综合网| 亚洲天堂情色| 精品欧美乱码久| 翔田千里一区二区三区奶水| 极品极品色影院| 色综合潮| 九七超碰人人乐| 激情五月天插| 五月婷婷综合在线| 久久AV色| 老司机午夜精品视频| 欧美精品久久久久久久久88| 黄色成品网站| 久热精品在线| 中文人妻av高清一区| 天天日日夜夜| 成人久久久精品| 日韩性爱小视频| 国产精品国产拍高清AV| 黄呦呦在线| 大香蕉中文在线| 人妻aa| 97久久超碰国产网站| 中国熟妇| 国产区性爱在线视频秋霞豆| 夜夜操av亚洲一区二区| 麻豆一区二区AV天美| 国内偷自视频区视频综合| 91美女中出| 亚洲大色鬼| 影音先锋日本乱伦| 欧美1727免费观看视频| 超碰9 7女人 | 亚洲色婷婷| 久久视频,这里只有精品| 亚洲欧美国产va在线播放频| 日本天天色| 欧美精品亚洲精品日韩传电影| 100啪啪视频大全| 亚洲AV小说| 人妻另类| 亚洲无码久久久久久久| 亚州色图欧美| 女欧美一区二三区| 天天欧美欧美亚洲网| 久久东京热成人| 牛牛aV| 人妻熟妇久草在线| 国产乱伦亚洲| 欧美一区二区三区大综合| 欧美综合网在线| 任你草| 日本免费二区三区| 操逼逼福利视频| 97超碰免费人人性爱| 亚洲AV成人精品网站在AV| 亚洲美乱| 天天噜| 精品区9| 中文字幕乱码在线观看| 99无码视频| 加勒比99999| 色色五月丁香| 97在线视频免费看| 人人爱操| 国产AV中文| 99色| 亚洲图片欧美色| 欧美午夜精品久久久久久超碰| 亚洲 日本 不卡| 午夜大香蕉| 亚洲精品欧洲色| 97五月天| 久久免费少妇| 久久国产99精品72福利| 91无码西班牙视频在线| 大香蕉伊人网WWWn0n| AVE乱伦| 亚洲自拍另类丝袜综合| 国产又黄又粗的视频| 97碰碰日本乱偷人妻中文的| 国产人妖视频一区在线观看| 人妻无码视频一区二区三区久久| 欧美性爱三区二区| 中文字幕av片| 涩五月婷婷| 人人妻人人爱人人玩| AND人妻系列| 超碰国产精品无码| 国产精品天干天干综合网麻豆| 人人看欧美性爱| 台湾佬中文娱乐网久久久久久久久久com| 亚洲天堂7777| 十八禁黄色| 另类综合另类| 男女日B国产| 欧美亚洲宗合色性图| ?亚洲伊人伊成久久人综合网| 亚洲色图欧美色18直播在线| 亚洲色图激情小说| 国产午夜福利电影免费在线观看| 久久久久密臀视频| 人成午夜免费大片| 欧美少妇色图| 欧美72网页| 精品国产乱码久久久久久口爆网站| 性生活性生大爱77AV国产| 中文字幕一区av| 黄色免费网| 亚洲人码13| 五月婷婷丁香六月| www久久国产精品| 日韩 欧美 国产 麻豆| 婷婷五月天激情网| 日本αv| 丝袜色综合| 中文字幕在线播放2中文字幕在线观看2| 亚洲欧美人妻| 在线小视频| 七久久久| 欧美日日操| 九九精品网| 9超碰免费| 亚洲天堂 视频你懂的| 久久久久亚洲Av无码专区老牛影视| 欧日韩在线观看| 天天综合精品| 久久久久人妻二区精品叶可怜| 亚洲成人AB| 日韩99神马视频播放| 最近的最新的中文字幕视频| 精品无码久久久久久久杏吧| 欧洲精品区| 中文字幕一区 二 区 三 四 五 区日 日 骚 | 91在线观看,天天综合| 欧美永久激情一区二区| 亚洲啪啪性视频| 成人无码在线视频网站| 麻豆一区二区三区在线看 | 密臀在线视频| 狠狠色一区二区中文字幕| 一本道综合色图| 青娱乐国产精品| 乱伦强奸区日韩| 春色综合免费| 天天综合网在线| 婷婷中文字幕| 国产精品婬乱一级毛片彝族| 2017大香蕉| 青青操日韩| 欧美 亚洲 另类 综合| 大香蕉在线视频15| 精品久久久亚洲AV成人网站| 欧美激情性爱视频网站| 精品福利| 情色大香蕉| 人妻激情在线视频| 欧美一区二区三区大综合| www.色五月| 久久‘黄片视频| 日本欧美韩国国产在线| 激情综合网激情综合| 超碰97久| 欧美极品色| 性色av一区二区| 白丝1区2区3区| 色婷婷影视| 新婚人妻扶着粗大强行坐下| 国产精品探花色| 欧美成人一级麻豆| 久久岛国| 精产品久久| 久热网| 久久久久极品| 蜜桃一区二区三区| 午夜福利在线视频1000| 国精品一区二区三| 天美国产三级传媒| 熟女精品一区二区三区| 日韩成人电影AV| 秋霞视频一区二区| 欧美日韩国产色图在线| 91成人久久| 免费在线黄片视频| 日本无码1| 中文字幕乱在线伦视频中文字幕乱码在线| 日韩欧美亚欧在线视频| 亚洲av青草久久一区二区| 91丝袜在线播放| 欧美性性性| 婷婷激情四射| 色五月av| 97综合国产| 操东北女人| 97综合网| 亚欧色图在线激情| 呦呦一区| 日韩性爱一级片| 国产精品又黄又猛又粗| 无码久久国产 | 99精品在线| 亚洲蜜臀精品视频久久| 男人的天堂kva| 在线看污网站| 熟妇色99| 老司机福利青青草| 五月天婷婷在线看| 国产AAAAAABBBBB| 久久久久人妻二区精品叶可怜| 加勒比在线观看一区二区| 在线无码网站| 乱伦Av网| www.色操逼| 九九热在线精品视频| 天天影视网综合少妇| 日韩欧亚太美不卡| 久久精9| 中文一区二区| 国产91 丝袜在线播放| 青娱乐91| 国产无码精品成人| 琪琪精品免费一区二区三区| 不卡一区二区日本视频| 亚洲AV无码成人精品久久| 大香蕉520| 亚洲人精品久久久喷水| 国产青视频| 操老熟女AV| 亚洲熟女诱惑| 翔田千里无码一区| 无码操逼网| 色欲天天综合网| 久热色情精品| 老司机久久| 深爱伊人影院| 狠狠操使劲操| 人妻 中文 日韩| 伊人99热| 亚洲 se图 欧美电影| 日韩熟女视频二区| 精品传媒在线一区| 成人免费毛片| 日本 欧美 国产一区| 午夜情侣自拍网站| 亚洲鸥美色图| 人妻精品一区二区| 中文字幕美女91| 91人人臊| 三级片大波波| 欧美日本视频一区| 一起草高清无码| 亚洲少妇综合在线播放| caorenqi shipin| 操死我了嗯嗯嗯| 久久老熟女| 国产v片在线免费观看| 免费人成?大片在线播放| 素人美腿视频网站| 精人妻无码一区二区三区伊人直播| 久久精品无码专区| 国产极品精品美女视频| 六月丁香啪啪| 欲香欲色天天天综合和网| sewuyueav| 亚洲蜜乳av| 亚洲有薄码区日本系列中文字幕| 美女主播色欲91抠b在线播放| 激情婷婷黑人91| 国产亚洲性生活视频播放| 大香蕉久久| 伊人久久蜜月| 日本操逼视频免费| 91人人臊| 蜜臀AV成人精品蜜臀| 色97干| 成人 日本A片无码8888| 亚洲最大黄网| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 高清视频一区| 美女操逼福利视频| 91jk色拍| 玖玖久久久| 玖玖爱免费观看视频| 久久超碰、| 天天综合青苹果| 国产精品探花视频| 国产农村妇女精品一二区| 啊啊啊好大好深| 亚洲情色中文字幕一区| 天天综合有色网| 爱逼综合| 日本免费亚洲欧美| 99热8| 乱伦色图网址是多少| 免费看美国人人爽,人人操| 久久成人东京热人妻| 啪啪AV导航| 麻豆AV短剧| 老司机福利青青草| 丁香六月天| 97超碰公开| 美女操逼福利视频| 超碰天天操| 欧美中文字幕日韩在线| 久久黄色网址| 女优大全 - 91n| 丁香婷婷久久 | 精品对白久久不卡| 大香蕉丝袜一级片| 日韩精品系列| 一区操逼日比视频| 天美传媒Av在线| 18禁无码永久免费无限制| 夜夜爽妓女| av网站免费看| 天美av在线观看| 97狠狠| 蜜臀久久99精品久久综合|