精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何在運行時改變App的圖標

移動開發
在你完成應用程序的beta版本后,最后會有些人去幫你測試,使你去完善應用程序……或者會有投資青睞。但是如果測試人員有一種簡單地方式去檢查構建版本的應用程序會不會有幫助呢?這個教程將會向你展示這些,向你介紹一些或許很少有人知道的Xcode里面的功能。

在你完成應用程序的beta版本后,最后會有些人去幫你測試,使你去完善應用程序……或者會有投資青睞。但是如果測試人員有一種簡單地方式去檢查構建版本的應用程序會不會有幫助呢?

這個教程將會向你展示這些,向你介紹一些或許很少有人知道的Xcode里面的功能。

你會相信在這個教程中你不會寫一行Swift的代碼嗎?當然,你也不用寫一句Objective-C代碼。

這個教程會讓你寫一些bash shell腳本。你將會使用到ImageMagick,Terminal,Xcode,去寫一個自動在你的app的圖標上加上"debug"或者"beta"標識的腳本。

這個教程需要你有一些基本的Unix腳本的知識。你可以跟隨一些shell腳本大神學習,但你也可以在Bash初學者指南或者Bas腳本高級編程指南。

你想接下來做這些嗎?

blob.png

app圖標

準備

首先,你需要安裝ImageMagick,這是一個非常強大的圖形處理圖軟件套件,專門通過終端進行。你可以非常簡單地通過Homebrew來安裝ImageMagick。如果你沒有安裝Homebrew,或者你可能并不知道它是什么,你可以在主頁上學習了解并安裝它。

如果你已經安裝了Homebrew,打開終端并輸入:

  1. brew update 

這是確定你是否從Homebrew上安裝的最新的安裝包,這個也是確認你是否有安裝Homebrew。

那么,現在,通過使用Homebrew來安裝你所需要的安裝包。現在輸入下面的命令:

  1. brew install ImageMagick 

[[148401]]

你將會看到一些列的東西通過Homebrew,展示了ImageMagick安裝的詳細過程,因此跟著步驟安裝。

接下來,你也需要安裝Ghostscript,因為你將使用的ImageMagick會依賴它。Ghostscript是一個軟件套件用于呈現PDF和PS文件。你需要它是因為它提供了支持ImageMagick的字體。

安裝Ghostscript通過運行下面的命令:

  1. brew install ghostscript 

如果中間發生錯誤,運行這個命令:

 
  1. brew doctor 

如果安裝失敗,你會得到一個消息,并告訴你如何去修復它。

這些是所有你需要安裝的,以在本教程中使用。

Llama你好

ImageMagick中有許多命令,但在本教程中,你需要用到的是convert和composite(轉換和組合)

convert:一張圖片,修改它,然后保存為一張新的圖片;

composite:一張圖片,在它上面覆蓋另外一張圖片,然后存為新的第三張圖片。

本教程中提供一些簡單地圖標供使用。當然,你也可以使用你自己的圖標,但你需要修改為相應的文件名。在這里下載圖標,對于本教程,將其放在桌面上。

這里的目標之一是覆蓋構建版本應用程序的圖標。所以你將看到如何使用ImageMagick覆蓋文本圖像將Hello World放在其中的一個圖標上。打開終端并進入到放應用程序圖標的文件夾:

  1. cd ~/Desktop/AppIconSet 

現在輸入:

  1. convert AppIcon60x60@2x.png -fill white -font Times-Bold -pointsize 18 -gravity south -annotate 0 "Hello World" test.png 

我將會逐一分解這行命令,因此你將會明白它做了寫什么:

  1. AppIcon60x60@2x.png 是輸入圖片的名字;
  2. fill white 設置文本為白色;
  3. font Times-Bold 告訴ImageMagick使用什么字體;
  4. pointsize 18 設置字體的大小為18;
  5. gravity south 文本與圖片的底部對齊
  6. annotate 0 "Hello World" 告訴ImageMagick使帶有"Hello World"文本注釋的圖片旋轉的度數為0度;
  7. test.png 輸出的文件名,并且ImageMagick將會覆蓋掉已經存在的文件。

如果你在終端上沒有看到任何的錯誤,那么你將會在AppIconSet的文件夾中看到一個命名為test.png的文件,打開后你會看到這樣:

blob.png

提示:如果你看到了錯誤的消息,或者是腳本沒有作用,那么可能是你沒有安裝所需的字體。通過運行下面的命令,看下你所能用的字體有哪些。

  1. convert -list font 

如果你沒有Times這個字體,那么選擇一個你可以使用的來代替。

現在,將beta標志加載圖片上。在終端上輸入:

  1. composite betaRibbon.png test.png test2.png 

這個是將betaRibbon.png放在test.png的上面,然后將合成的圖片保存為test2.png

打開test2.png。等等,你看到的還是原來的test.png.

那么為什么會是這樣呢?

test.png 大小是120x120的,然而,betaRibbon.png是1024x1014的,所以betaRibbon.png只有透明的那部分在test.png上,剩下的部分被裁剪掉了。

不相信我嗎?那么試下相同的命令,但是將betaRibbon.png 和 test.png位置交換。

  1. composite test.png betaRibbon.png test2.png 

你現在將會看到一張在test.png的右上角帶有beta的很大的圖片:

blob.png

為了得到我們想要的,你需要將betaRibbon.png的尺寸改為120x120的。在ImageMagick中這是非常容易的。僅僅輸入:

  1. convert betaRibbon.png -resize 120x120 smallBetaRibbon.png 

這行命令是將betaRibbon.png的大小改為120x120,并保存為smallRetaRibbon.png

現在,執行下面:

  1. composite smallBetaRibbon.png test.png test2.png 

打開test2.png,然后你將看到我們期待的:

blob.png

這些就是在本教程中你需要知道的ImageMagick的功能,但是這些僅僅是ImageMagick功能的冰山一角。點擊ImageMagick的主頁,查看更多關于它的功能。

#p#

Xcode

在這些圖像處理工作之后,是時候回到我們熟悉的平臺了。

打開Xcode,選擇File\New\Project…選擇 iOS\Application\Single View Application, 然后點擊 Next. 工程命名為Llama Trot, 選擇語言為 Swift, 然后設置設備為Universal. 然后將工程保存在桌面上。

你的目標是通過Xcode和ImageMagick,根據所選的構建配置,在每次構建時生成一個適當的圖標。

Xcode能夠在你的工程構建時運行腳本來做些事情。運行腳本僅僅是Unix腳本,就像你已經寫過的,在你每次運行你的Xcode的項目時執行。

設置一個運行腳本

在你的工程中,選擇Llama Trot的Target,然后選擇Build Phases,點擊+,在彈出的菜單中選擇New Run Script Phase:

blob.png

你將會看到Run Script Phase添加到你的工程配置中。

在運行腳本時,Shell參數被自動設置為bin/sh,也就是說腳本將在bash Unix shel中執行。

下面的框是讓你用來寫腳本的。在框中輸入:

  1. echo "Hello World" 

你的新的 build phase應該看起來像下面這樣:

blob.png

構建并運行。你將看到什么也沒發生。這事因為腳本打印的"Hello World"在你的構建日志中。

點擊Report Navigator,Xcode的導航欄面板最右邊的圖標,點擊最近構建的報告,像下圖展示的這樣。當你構建一個工程時,這里描述了Xcode為你做的所有的事情,你將會看到"Hello World":

blob.png

應用圖標

很好,現在你已經寫了一個腳本輸出"Hello World",就像你作為一個開發者的職業生涯中已經做過一百萬次打印"Hello World"。現在是時候修改應用的圖標了。

從你的腳本中找到應用圖標

將所有的應用圖標都添加到Images.xcassets中,將每個圖標拖到合適的AppIcon尺寸上:

blob.png

同時,你也要將debugRibbon.png 和 betaRibbon.png 放在和.xcodeproj同級的目錄文件中。

blob.png

為了使用icons,你的腳本需要知道致謝icons在哪里。用下面的代碼代替你之前寫的腳本:

  1. echo "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 
  2. echo "${SRCROOT}" 
  1. 第一行打印在你運行你的項目后的問佳佳路徑,包含最后一個圖標。
  2. 第二行打印項目文件所在的文件夾路徑。

這是通過使用Xcode的一些構建設置的變量。

運行你的項目并查看構建報告。你將會看到描述你的工程最后產品的文件路徑。在它下面,你將會看到你的項目工程所在的文件路徑:

blob.png

定位到第一個文件夾,查看它所在的位置;你將看到你的app中所有的東西,包括所有的app圖標。這里面是存放ImageMagick修改后的圖標的地方。

通過在Application icon點擊右鍵,然后選擇Show Package Contents,你將看到這些圖標?,F在他們都是看起來非常正常的!

blob.png

現在定位到打印的第二個文件路徑。這個僅僅是你正常工程項目的文件夾。因此,應用圖標在哪里呢?

前往有著相同名字的Llama Trot文件。在這里面你將看到Images.xcassets。打開Images.xcassets,你將會看到另外一個叫AppIcon.appiconset的文件。

應用圖標就在這個文件夾中,你將通過ImageMagick來修改它們。假設你將你的工程保存到桌面上命名為Llama Trot,那么圖標的路徑為~/Desktop/Llama\ Trot/Llama\ Trot/Images.xcassets/AppIcon.appiconset

將腳本的最后一行替換為下面的代碼,你將會得到原始圖標的我完整路徑:

  1. IFS=$'\n' 
  2. echo $(find ${SRCROOT} -name "AppIcon60x60@2x.png"
  1. 第一行設置IFS-internal字段分隔符換行符。如果你不這樣做,第二行就會失敗,因為文件名,Llama Trot,包含一個空格。如果你好奇沒有第一行發生了什么,你可以將其刪除后嘗試一下。
  2. 第二行中此命令$ { SRCROOT }文件夾遞歸搜索文件AppIcon60x60@2x.png。

運行項目,你將會看到 AppIcon60x60@2x 完整的路徑被打印出來:

blob.png

將它們放在一起

困難的事情就要結束了?,F在是時候將它們放在一起,通過你的腳本來修改應用的圖標。你將首先開始修改AppIcon60x60@2x.png,然后處理所有的應用圖標。這就意味著你需要在Retina@2x的模擬器或者6Plus上測試。

通過結合ImageMagick的技術和你以前的腳本,最終你會得到下面的腳本。確保更新相應的腳本:

  1. IFS=$'\n' 
  2. #1 
  3. PATH=${PATH}:/usr/local/bin 
  4. #2 
  5. TARGET_PATH="${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AppIcon60x60@2x.png" 
  6. BASE_IMAGE_PATH=$(find ${SRCROOT} -name "AppIcon60x60@2x.png"
  7. #3 
  8. convert betaRibbon.png -resize 120x120 resizedBetaRibbon.png 
  9. #4 
  10. convert ${BASE_IMAGE_PATH} -fill white -font Times-Bold -pointsize 18 -gravity south -annotate 0 "Hello World" - | composite resizedBetaRibbon.png - ${TARGET_PATH} 

現在來分析發生了什么:

  1. 如果你省略第一行,編譯將失敗。你的終端有一個叫PATH的變量,來存儲一些默認的本地腳本。對于所有的命令終端認為這是第一個,默認并不是Unix的一部分。這允許任何命令位于一個目錄路徑運行沒有指定完整的命令的位置。Xcode需要將相同的PATH變量分享給你的終端。這行添加/user/local/bin到PATH變量,Homebrew安裝的地方。
  2. 接下來的兩行,獲取本地的應用圖標,然后分別將該路徑保存到TARGET_PATH 和 BASE_IMAGE_PATH 變量中
  3. 這行是將betaRibbon.png的圖標的尺寸改為合適的大??;
  4. 最后一行做了兩件事情。首先,它在原始的應用圖標上添加"Hello World"文本。然后該腳本執行合成的功能--將有beta標識的圖片放置在其上面。然后將合成的圖片保存為應用的圖標。

提示:應用程序圖標名字不是任意的。在最終的產品,應用程序圖標的名稱必須像AppIcon60x60@2x.png。Xcode使用此命名約定來確定使用哪個圖標根據設備使用。

運行項目,在你的設備的主屏幕中看你的應用的圖標;吐過你是在模擬其中,可以按Cmd + Shift + H 切換到主屏幕。你將會看到一個修改過的圖標:

blob.png

#p#

剩下的圖標

現在你已經處理了一個圖標,現在該將這個腳本去處理所有的圖標了,以使得在iPad、iPhone 6+等上顯示。

要做到這一點,你就會把代碼修改到一個函數,使圖標圖標的名稱作為參數。然后為每個圖標執行該函數。

修改腳本像下面這樣:

 
  1. PATH=${PATH}:/usr/local/bin 
  2. IFS=$'\n' 
  3. function generateIcon () { 
  4. BASE_IMAGE_NAME=$1 
  5. TARGET_PATH="${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/${BASE_IMAGE_NAME}" 
  6. BASE_IMAGE_PATH=$(find ${SRCROOT} -name ${BASE_IMAGE_NAME}) 
  7. WIDTH=$(identify -format %w ${BASE_IMAGE_PATH}) 
  8. convert betaRibbon.png -resize $WIDTHx$WIDTH resizedRibbon.png 
  9. convert ${BASE_IMAGE_PATH} -fill white -font Times-Bold -pointsize 18 -gravity south -annotate 0 "Hello World" - | composite resizedRibbon.png - ${TARGET_PATH} 
  10. generateIcon "AppIcon60x60@2x.png" 
  11. generateIcon "AppIcon60x60@3x.png" 
  12. generateIcon "AppIcon76x76~ipad.png" 
  13. generateIcon "AppIcon76x76@2x~ipad.png" 

這使得整個圖像處理代碼為一個函數,稱為generateIcon(),并且你將圖標的名稱傳遞給過程作為參數。腳本訪問這個論點通過使用$1,并設置變量BASE_IMAGE_PATH.$ { BASE_IMAGE_PATH }然后放置AppIcon60x60@2x之前放置的地方。

你將會發現ImageMagick的一個新功能,Identity,這個功能會獲取圖片的信息。在這種情況下,你想使用通過格式化-format %w 得到的寬度在identify,去重新改變betaRibbon.png的大小。

現在,選擇一個iPad或者一個iPhone6+的模擬器,然后運行該項目。這是因為字體的大小是用像素表示的,不同的設備屏幕有不同的像素密度。

blob.png

這是很容易的。你真正想要的是根據整個圖標通過一定的比例來設置文本的高度。

在你之前設置WIDTH變量的地方立即加入下面的腳本:

  1. FONT_SIZE=$(echo "$WIDTH * .15" | bc -l) 

這行是非常微妙的,但是它確實是設置一個FONT_SIZE變量可變寬度的五分之一。因為Unix算術不支持浮點運算,您必須使用bc程序。

basic calculator的縮寫,bc能夠處理浮點類型的計算。

現在,改變最后一行generateIcon() ,通過使用FONT_SIZE變量來代替18.最后腳本應該是下面這樣:

 
  1. PATH=${PATH}:/usr/local/bin 
  2. IFS=$'\n' 
  3. function generateIcon () { 
  4. BASE_IMAGE_NAME=$1 
  5. TARGET_PATH="${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/${BASE_IMAGE_NAME}" 
  6. BASE_IMAGE_PATH=$(find ${SRCROOT} -name ${BASE_IMAGE_NAME}) 
  7. WIDTH=$(identify -format %w ${BASE_IMAGE_PATH}) 
  8. FONT_SIZE=$(echo "$WIDTH * .15" | bc -l) 
  9. convert betaRibbon.png -resize $WIDTHx$WIDTH resizedRibbon.png 
  10. convert ${BASE_IMAGE_PATH} -fill white -font Times-Bold -pointsize ${FONT_SIZE} -gravity south -annotate 0 "Hello World" - | composite resizedRibbon.png - ${TARGET_PATH} 
  11. generateIcon "AppIcon60x60@2x.png" 
  12. generateIcon "AppIcon60x60@3x.png" 
  13. generateIcon "AppIcon76x76~ipad.png" 
  14. generateIcon "AppIcon76x76@2x~ipad.png" 

運行你的工程項目在不同的設備上,你會發現好多了。

blob.png

構建號

在圖標上將"Hello World"文本換位構建號其實是很容易的事情。

版本的構建號可以在Info.plist中的CFBundleVersion找到。

因此,你要怎樣將它放在你的腳本中呢?事實證明,你的Mac會通過一個程序來幫你實現。它叫PlistBuddy,你可以在/usr/libexec/中找到。

在你的腳本的最上面添加下面這行:

  1. buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${PROJECT_DIR}/${INFOPLIST_FILE}"

這行是通過使用PlistBuddy來獲取構建號。現在很簡單的將"Hello World" 替換為$buildNumber:

  1. convert ${BASE_IMAGE_PATH} -fill white -font Times-Bold -pointsize ${FONT_SIZE} -gravity south -annotate 0 "$buildNumber" - | composite resizedRibbon.png - ${TARGET_PATH} 

在General中改變構建號為2015:

blob.png

現在運行。你將會看到一個有構建號的圖標:

blob.png

構建配置

太酷了!整個過程即將完成。你已經在項目每次運行時將一個beta標識和一個構建號添加在應用圖標上。

但是你不想永遠是一個beta標識和構建號。那該怎么辦?

在Xcode中,到項目配置中。你將會看到兩個默認的設置:Debug和Release。

點擊+,選擇Duplicate Release 然后將它命名為 Beta。

blob.png

Dubug配置將是調試版本,Beta配置將是測試版本,Release配置將是釋放發布版本。

現在你需要將這些配置放在你的腳本中,并通過CONFIGURATION來設置。在腳本總添加一個if來選擇當前的配置。更新你的腳本如下:

 
  1. IFS=$'\n' 
  2. buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${PROJECT_DIR}/${INFOPLIST_FILE}"
  3. versionNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" "${PROJECT_DIR}/${INFOPLIST_FILE}"
  4. PATH=${PATH}:/usr/local/bin 
  5. function generateIcon () { 
  6. BASE_IMAGE_NAME=$1 
  7. TARGET_PATH="${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/${BASE_IMAGE_NAME}" 
  8. echo $TARGET_PATH 
  9. echo $SRCROOT 
  10. echo $(find ${SRCROOT} -name "AppIcon60x60@2x.png"
  11. BASE_IMAGE_PATH=$(find ${SRCROOT} -name ${BASE_IMAGE_NAME}) 
  12. WIDTH=$(identify -format %w ${BASE_IMAGE_PATH}) 
  13. FONT_SIZE=$(echo "$WIDTH * .15" | bc -l) 
  14. echo "font size $FONT_SIZE" 
  15. if [ "${CONFIGURATION}" == "Debug" ]; then 
  16. convert debugRibbon.png -resize ${WIDTH}x${WIDTH} resizedRibbon.png 
  17. convert ${BASE_IMAGE_PATH} -fill white -font Times-Bold -pointsize ${FONT_SIZE} -gravity south -annotate 0 "$buildNumber" - | composite resizedRibbon.png - ${TARGET_PATH} 
  18. fi 
  19. if [ "${CONFIGURATION}" == "Beta" ]; then 
  20. convert betaRibbon.png -resize ${WIDTH}x${WIDTH} resizedRibbon.png 
  21. convert ${BASE_IMAGE_PATH} -fill white -font Times-Boldr -pointsize ${FONT_SIZE} -gravity south -annotate 0 "$buildNumber" - | composite resizedRibbon.png - ${TARGET_PATH} 
  22. fi 
  23. generateIcon "AppIcon60x60@2x.png" 
  24. generateIcon "AppIcon60x60@3x.png" 
  25. generateIcon "AppIcon76x76~ipad.png" 
  26. generateIcon "AppIcon76x76@2x~ipad.png" 

改變構建配置,通過選擇 Product\Scheme\Edit Scheme…,選擇Info,,然后基于你將要做的選擇構建配置,Run,Archive,Profile等等。

blob.png

這就是它!有構建數字和標識的應用圖標!

blob.png

beta

blob.png

debug

另外,代碼可點擊下載參考

責任編輯:倪明 來源: zmp1123投稿
相關推薦

2018-06-24 15:23:05

軟件工程環境開發

2020-07-15 11:17:04

云計算云安全云原生

2015-07-20 15:44:46

Swift框架MJExtension反射

2021-08-18 08:32:09

代碼運行時間示波器

2022-10-08 00:00:00

V8channel對象

2023-04-03 13:01:14

UbuntuCRI-O

2024-03-21 09:15:58

JS運行的JavaScrip

2020-04-06 11:47:44

Linux命令腳本

2020-12-07 13:31:43

GoMutex開發者

2009-06-17 15:46:36

Java運行時本機內存

2019-07-12 09:30:12

DashboardDockerDNS

2021-09-11 15:38:23

容器運行鏡像開放

2022-11-04 09:09:54

Linux服務器

2024-01-29 08:07:42

FlinkYARN架構

2023-08-27 21:07:02

2023-08-21 09:37:57

MySQL工具MariaDB

2018-04-08 14:27:45

Linuxuptime系統運行時間

2011-01-26 13:26:32

Linux進程

2022-10-08 00:06:00

JS運行V8

2021-08-27 00:21:19

JSJust源碼
點贊
收藏

51CTO技術棧公眾號

国产精品夜夜爽| 欧美h版在线| 黑人巨大精品欧美一区二区| 久久久久综合一区二区三区| 亚洲永久精品一区| 91精品国产成人观看| 亚洲黄色免费三级| 国产又猛又黄的视频| 日韩精品分区| 久久久久综合网| 亚洲一区二区中文| 伦av综合一区| 中文字幕人成人乱码| 亚洲免费视频观看| 被黑人猛躁10次高潮视频| 中文字幕21页在线看| 亚洲同性gay激情无套| 精品综合在线| 国产黄a三级三级三级| 乱码第一页成人| 欧美精品日韩三级| 日韩毛片无码永久免费看| 中文无码日韩欧| 精品视频999| 欧美一级在线看| 怡红院在线观看| 国产精品无遮挡| 精品免费国产| 亚洲黄色片视频| 美女国产一区二区| 欧美在线日韩在线| 欧美极品视频在线观看| 日韩欧美视频| 亚洲片在线资源| 星空大象在线观看免费播放| 欧美午夜在线播放| 欧美日韩一区不卡| 黄色一级一级片| 男人的天堂免费在线视频| 有码一区二区三区| 三年中文高清在线观看第6集| 国产精品500部| 999国产精品999久久久久久| 亚洲色图国产精品| 亚洲一区二区三区四区五区六区| ririsao久久精品一区| 中文字幕日韩欧美一区二区三区| 亚洲高清免费在线| 久久国产一区二区| www.成人免费视频| 韩国视频一区二区| 国产日产欧美精品| 中文字幕有码无码人妻av蜜桃| 国产精品久久久久久麻豆一区软件| 欧美日韩午夜在线视频| 青青艹视频在线| 大香伊人久久| 亚洲成人av中文| 国产日本在线播放| gogo高清在线播放免费| 亚洲最大成人综合| 日本阿v视频在线观看| 手机在线免费观看av| 亚洲精品五月天| 老司机av福利| 一区二区三区伦理| 亚洲一区在线视频观看| 日韩xxxx视频| 在线免费三级电影网站| 欧美性猛交xxxx乱大交极品| 国产又大又硬又粗| 色老太综合网| 欧美日韩亚洲丝袜制服| 91亚洲精品久久久蜜桃借种| 国产精品一区二区美女视频免费看| 精品久久久久久久久久久久久| 日韩精品不卡| 色影视在线观看| 亚洲另类春色国产| 日本中文字幕在线视频观看 | 免费欧美在线| 琪琪第一精品导航| 国产精品露脸视频| 国产乱码精品一区二区三区av| 国产91精品黑色丝袜高跟鞋| 一级成人黄色片| 青娱乐精品在线视频| 96sao精品视频在线观看| 性欧美videos另类hd| www.日韩精品| 五月天婷亚洲天综合网鲁鲁鲁| 亚洲 小说区 图片区 都市| 久久夜色精品国产欧美乱极品| 91精品国产综合久久久久久丝袜| 欧美国产一级片| 极品少妇xxxx偷拍精品少妇| 国产精品一区二区三区观看 | 久久亚洲欧美| 成人xvideos免费视频| 亚洲欧美另类日韩| 99国产精品久久久| 亚洲高清视频一区二区| 调教一区二区| 欧洲亚洲精品在线| 中文字幕1区2区| 九九久久电影| 久久99国产精品自在自在app| 992在线观看| 亚洲精华国产欧美| 91精品久久久久久久久久另类| 波多野结衣黄色| 国产成人免费在线| 午夜精品一区二区三区四区| av中文资源在线资源免费观看| 亚洲精品老司机| 精品国产成人av在线免| 亚洲1区在线| 色偷偷av一区二区三区| 日韩免费av片| 国产在线精品不卡| 久久久久久久久久久久久久久久av | 成人高清免费观看mv| 一区二区三区久久| 深夜黄色小视频| 一本色道久久综合亚洲精品酒店| 亚洲美女久久久| 久久精品一区二区三| 麻豆中文一区二区| 欧美aaaaa喷水| 国产在线xxx| 制服丝袜亚洲网站| 1024手机在线观看你懂的| 亚洲人成毛片在线播放女女| 91久久在线观看| 日本在线天堂| 欧美自拍偷拍一区| 国产美女精品久久| 国产精品一级| 精品国产91亚洲一区二区三区www| 青青草超碰在线| 亚洲国产成人av| 黄页网站在线看| 亚洲乱码免费伦视频| 国产色视频一区| 在线免费黄色| 欧美自拍偷拍一区| 日本黄色激情视频| 日韩电影在线观看网站| 欧洲一区二区在线| 偷拍视频一区二区三区| 亚洲丝袜av一区| 一二三区免费视频| 久久免费午夜影院| 可以免费观看av毛片| 男男gay无套免费视频欧美| 欧美亚洲成人xxx| 四虎影视2018在线播放alocalhost| 国产欧美精品在线观看| 能看的毛片网站| 国产中文精品久高清在线不| 国产成人精品综合| 日本大片在线观看| 日韩欧美aaa| 97超碰在线免费观看| 久久久久网站| 亚洲国产精品一区二区第一页| 青春草视频在线观看| 日韩三级免费观看| 日本三级理论片| 久久女同互慰一区二区三区| 日本a√在线观看| 99久久久久国产精品| 国产精品丝袜高跟| 18免费在线视频| 欧美一区二区三区在线视频| 久久久全国免费视频| 成人福利在线看| 久久久噜噜噜www成人网| 国产欧美高清视频在线| 国产精品自产拍在线观| 欧洲一区二区三区| 精品网站999www| 一级黄色大片免费| 一区二区三区在线视频观看 | 亚洲精品xxx| 日韩视频在线观看一区| 中文字幕精品—区二区四季| 99视频在线观看视频| 亚洲美女一区| 亚洲乱码一区二区三区三上悠亚 | 亚洲一区二区三区不卡国产欧美| wwwwxxxx日韩| 亚洲先锋影音| 久久精品欧美| 亚洲人体在线| 欧美在线观看网址综合| 欧美被日视频| 亚洲精品美女久久久久| 亚洲自拍第二页| 午夜精品久久久久| 亚洲精品电影院| 99精品欧美一区二区三区综合在线| 久艹在线免费观看| 国产日产精品一区二区三区四区的观看方式 | 农村寡妇一区二区三区| 999色成人| 日本国产精品视频| 羞羞网站在线看| 亚洲一品av免费观看| 亚洲成熟女性毛茸茸| 欧美在线视频全部完| 中文在线观看免费网站| 亚洲欧洲日韩av| 双性尿奴穿贞c带憋尿| 精品一区二区三区欧美| a√天堂在线观看| 欧美日韩成人| 久久久一二三四| 国产欧美日韩免费观看| 狠狠色狠狠色综合人人| 国产精品美女久久久久人| 日本不卡视频在线播放| 国产高清中文字幕在线| 久久视频在线直播| www.亚洲视频| 亚洲视频网站在线观看| 天堂网在线播放| 欧美一级国产精品| 国产一区二区在线不卡| 欧洲在线/亚洲| av一级在线观看| 欧美日韩另类视频| 国产在线一二区| 一区二区三区欧美视频| 中文字幕人妻一区二| 国产精品妹子av| 日本精品久久久久中文| 国产欧美日本一区视频| 国产精成人品免费观看| 久久先锋资源网| 成人手机在线免费视频| av一区二区三区在线| 中文字幕在线视频播放| 国产99久久久国产精品| 9191在线视频| 国产91色综合久久免费分享| 奇米777在线| 国产精品123| 国产精品91av| 成人三级伦理片| 色综合久久五月| 91首页免费视频| 黄色aaa视频| 久久久99精品免费观看不卡| 国产精品无码久久久久久| 久久婷婷色综合| 人妻av无码一区二区三区| 国产亚洲自拍一区| 九九九视频在线观看| 国产精品久久网站| 顶臀精品视频www| 夜夜嗨av一区二区三区四季av | 视频福利一区| 蜜桃av色综合| 欧美色图在线播放| 日韩激情久久| 91久久电影| 99久久免费观看| 激情欧美国产欧美| 熟女少妇在线视频播放| 久久亚洲精品伦理| 在线观看国产福利| 国产成人免费视| 91精品国产自产| 国产精品久久久一区麻豆最新章节| av网站有哪些| 国产女人18毛片水真多成人如厕| 四虎永久免费观看| 成人国产精品免费观看| 老熟妇一区二区| 亚洲三级电影全部在线观看高清| 日本黄色小视频在线观看| 国产精品久久福利| 久久久久无码精品国产| 色综合天天综合| 中文字幕在线观看你懂的| 欧美三级电影在线看| 精品人妻伦一区二区三区久久| 在线不卡中文字幕| 懂色av一区二区三区四区| 精品亚洲夜色av98在线观看| √天堂资源地址在线官网| 欧美日韩国产成人| 毛片无码国产| 91精品国产一区二区三区动漫| 日本美女久久| 国产精品一区二区免费| 极品美女一区二区三区| 蜜桃网站在线观看| 日韩影院精彩在线| av漫画在线观看| 中文字幕乱码亚洲精品一区| 久久中文字幕无码| 色老综合老女人久久久| www.精品久久| 中文字幕日韩欧美在线| h片在线观看视频免费| 国产主播在线一区| 羞羞答答一区二区| 97精品国产97久久久久久粉红| 亚洲精品成人无限看| 97成人在线观看视频| 国产成人日日夜夜| 日韩一级片在线免费观看| 亚洲国产视频一区| 国产理论视频在线观看| 亚洲无限av看| 少妇视频一区| 国产91视觉| 国产精品久久久久久久久久10秀| 亚洲午夜激情| 国产模特精品视频久久久久| 国产人妖在线观看| 一色屋精品亚洲香蕉网站| 男人的天堂av网站| 亚洲精品国产精品国自产观看浪潮| 欧美一级在线免费观看| 日韩在线视频免费观看| 亚洲成a人片| 久久综合九色欧美狠狠| 国产精品mm| 无套内谢丰满少妇中文字幕 | 97netav| 日韩专区精品| 亚洲 欧美 日韩系列| av高清不卡在线| 国产午夜福利片| 精品美女一区二区| 午夜小视频福利在线观看| 91沈先生作品| 一区二区三区午夜视频| 久久久久久久久久久久久久久国产 | 国产精品嫩草69影院| 中文字幕在线观看一区二区| 中国一区二区视频| 在线观看国产精品日韩av| 欧美极品免费| 日本一区视频在线| 日韩专区中文字幕一区二区| 国产 欧美 在线| 91成人免费网站| 97人人在线| 国产中文日韩欧美| 91久久久精品国产| 丰满人妻一区二区三区53视频| 久久久亚洲精品石原莉奈| 国产成人精品网| 亚洲欧美国产精品久久久久久久| 大片免费在线观看| 51国产成人精品午夜福中文下载| 色婷婷综合久久久久久| 成熟老妇女视频| 中文字幕久久午夜不卡| 中文字幕永久免费视频| 欧美成人合集magnet| 一区二区三区免费在线看| 日本wwwcom| 2023国产精品自拍| 91porny九色| 久久偷看各类女兵18女厕嘘嘘| 午夜av成人| 一区二区不卡在线| 国产风韵犹存在线视精品| 日本五十熟hd丰满| 亚洲日韩欧美视频| 91嫩草国产线观看亚洲一区二区| 日韩三级在线播放| 久久精品国产成人一区二区三区 | 99草在线视频| 久久久久久国产精品三级玉女聊斋 | 欧美精品网站| 黄色在线观看av| 在线观看91视频| 色噜噜狠狠狠综合欧洲色8| 裸模一区二区三区免费| 美腿丝袜亚洲色图| 久久人人爽人人爽人人| 亚洲欧美日韩在线高清直播| 午夜不卡一区| 成 年 人 黄 色 大 片大 全| 国产精品18久久久久| 美日韩一二三区| 色琪琪综合男人的天堂aⅴ视频| 久久久久黄色| 免费超爽大片黄| 国产欧美日韩另类视频免费观看| 日批视频免费观看| 欧美福利视频在线观看| 成久久久网站| 最新在线黄色网址|