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

鴻蒙開源第三方組件—日志工具組件Timber_ohos

系統(tǒng)
Timber_ohos是一個帶有小型可擴展API的日志工具組件,它可以給開發(fā)者提供統(tǒng)一的API接口,來記錄不同類型的日志,幫助開發(fā)者管理不同類型的log。

[[409611]]

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區(qū)

https://harmonyos.51cto.com

前言

基于安卓平臺的日志工具組件Timber ( https://github.com/JakeWharton/timber), 實現(xiàn)鴻蒙的功能化遷移和重構。代碼已經開源到(https://gitee.com/isrc_ohos/timber_ohos),歡迎各位開發(fā)者提出寶貴意見。

背景

Timber_ohos是一個帶有小型可擴展API的日志工具組件,它可以給開發(fā)者提供統(tǒng)一的API接口,來記錄不同類型的日志,幫助開發(fā)者管理不同類型的log。同時,Timber_ohos是項目開發(fā)時的log開關,通過此開關控制log的打印與關閉,從而形成不同的軟件版本。該組件功能豐富且使用簡單高效,可以被廣泛應用于軟件項目開發(fā)中。

組件效果展示

1、測試界面。

如圖1所示,這是一個為了測試Timber_ohos功能而簡單構建的UI頁面。點擊“測試”按鈕即可輸出相應的log。

鴻蒙開源第三方組件——日志工具組件Timber_ohos-鴻蒙HarmonyOS技術社區(qū)

圖1 測試界面UI圖

2、Log打印

Timber類的靜態(tài)方法調用如圖2中的(a)圖所示。運行項目后查看HiLog顯示,可以看到實時打印出來的日志,如圖2中的(b)圖所示。

鴻蒙開源第三方組件——日志工具組件Timber_ohos-鴻蒙HarmonyOS技術社區(qū)
鴻蒙開源第三方組件——日志工具組件Timber_ohos-鴻蒙HarmonyOS技術社區(qū)

圖2 HiLog日志打印

Sample解析

1、Tree的使用

Timber_ohos將不同的日志操作以樹(Tree)的概念進行表示,種植一種樹就擁有一種日志記錄功能,種植多種樹就擁有多種日志記錄的功能,樹的種類有很多,常見的樹有:DebugTree、RealeseTree、FileTree、CrashReportingTree等,這些樹都是繼承自Tree類。

  • DebugTree:對所有的日志進行記錄。
  • RealeseTree:只對 warn,error,wtf 信息進行記錄。
  • FileTree:在運行時將日志記錄到文件中。
  • CrashReportingTree:對應用崩潰時的信息進行記錄。

Timber_ohos中默認已經種植了DebugTree,由于Timber_ohos本身是一個可擴展的框架,因此開發(fā)者想得到其他類型的Log日志時,就需要自己實現(xiàn)一個日志記錄類 ,然后種植到Timber_ohos中即可。

2、Sample的實現(xiàn)

Sample部分需要添加日志記錄種類,并負責整體顯示布局的搭建。首先為Timber_ohos組件添加想要的任何Tree子類實例(這里使用的是DebugTree),然后設置簡單的按鈕監(jiān)聽器,當按動按鈕時在鴻蒙常規(guī)HiLog中出現(xiàn)調試日志。下面將詳細介紹組件的使用方法。

步驟1. 種樹(添加Tree子類實例)。

步驟2. 創(chuàng)建整體的顯示布局。

步驟3. 導入相關類并設置按鈕監(jiān)聽。

步驟4. 使用Tree實例。

(1)種樹(添加Tree子類實例)

本步驟是在ExampleApp類的onInitialize()方法中實現(xiàn)的。首先需要創(chuàng)建Tree子類實例,然后調用Timber的plant()方法,同時將實例作為plant()方法的參數(shù),這個過程叫做“種樹”。

  1. Timber.plant(new Timber.DebugTree(0x001f00)); 

復制(2)創(chuàng)建整體的顯示布局 在XML文件中創(chuàng)建一個DirectionalLayout作為整體顯示布局,寬度和高度都跟隨父控件變化而調整。創(chuàng)建兩個組件,分別是Text組件和Button組件,用于控制組件效果顯示。整體顯示布局如圖1所示。

  1. <DirectionalLayout 
  2.     xmlns:ohos="http://schemas.huawei.com/res/ohos" 
  3.     ohos:height="match_parent" 
  4.     ohos:width="match_parent" 
  5.     ohos:orientation="vertical" 
  6.     ohos:padding="32vp" 
  7.     ohos:background_element="#ffffff" 
  8.     ohos:alignment="horizontal_center"
  9.     <Text   //“測試”提示 
  10.         ohos:height="match_content" 
  11.         ohos:width="match_content" 
  12.         ohos:layout_alignment="horizontal_center" 
  13.         ohos:text="Timber測試" 
  14.         ohos:text_size="35fp"/> 
  15.     <Button  //控制按鈕 
  16.         ohos:id="$+id:btn1" 
  17.         ohos:height="match_content" 
  18.         ohos:width="match_content" 
  19.         ohos:top_margin="35vp" 
  20.         ohos:text_size="25fp" 
  21.         ohos:background_element="#FF51A8DD" 
  22.         ohos:padding="10vp" 
  23.         ohos:text="測試"/> 
  24. </DirectionalLayout> 

 (3)導入顯示布局并設置按鈕監(jiān)聽

在MainAbilitySlice中,整體顯示布局也需要通過super.setUIContent()方法進行設置,才能生效并成功顯示。然后給按鈕設置點擊事件,當用戶需要使用Tree子類實例時,可通過手指進行點擊。

  1. super.setUIContent(ResourceTable.Layout_ability_main);//設置整體顯示布局 
  2. findComponentById(ResourceTable.Id_btn1).setClickedListener(new Component.ClickedListener() { 
  3.     ...//按鈕的點擊事件 

 (4)使用Tree實例

當用戶需要打印調試日志的時候,調用Timber的靜態(tài)方法,就會在鴻蒙常規(guī)HiLog上出現(xiàn)調試日志。調試日志如組件效果展示部分的圖2所示。

  1. Timber.e  ("Timber.e 測試成功!!!"); 
  2. Timber.d  ("Timber.d 測試成功!!!"); 
  3. Timber.i  ("Timber.i 測試成功!!!"); 
  4. Timber.w   ("Timber.w 測試成功!!!"); 
  5. Timber.wtf   ("Timber.wtf測試成功!!!"); 

Library解析

Library主要為Timber_ohos組件提供日志輸出的統(tǒng)一接口。以Sample中種植的調試樹(DebugTree)為例,當使用Timber的靜態(tài)方法Timber.e時,從MainAbilitySlice到Timber.e打印log的地方可以分為5個步驟,整體調用的流程如圖3所示。

鴻蒙開源第三方組件——日志工具組件Timber_ohos-鴻蒙HarmonyOS技術社區(qū)

圖3 調用順序圖

下面我們著重介紹樹(Tree類)在Library中的實現(xiàn),核心算法prepareLog()內部的邏輯結構這兩個方面的內容。

1.樹(Tree)的實現(xiàn)

Tree類是一種概念形式的日志操作,具體可分為(DebugTree、ReleaseTree、FileTree等)。而在Library內部,Tree類也實現(xiàn)了一系列方法,以便于對森林中的各類樹進行增加、刪除、修改等操作。

(1)在Timber_ohos組件中維護一個森林對象(FOREST)。

森林對象由不同類型的日志樹組合而成,并提供對外的接口進行日志的打印。每種類型的樹都可以通過種植操作來把自己添加到森林對象中,或者通過移除操作從森林對象中刪除,從而實現(xiàn)該類型日志記錄的開啟和關閉。

  1. private static final List<Tree> FOREST = new ArrayList<>();  

(2)種樹。

調用plant()方法,把Tree實例添加進FOREST里面 可以種植一棵樹,也可以種植多棵樹。這里以種一棵樹為例。可以看到,樹的種植是在plant()靜態(tài)方法的synchronized 同步代碼塊中進行的。具體流程是先將樹對象添加到 FOREST 列表中,然后將日志樹保存到 forestAsArray 數(shù)組中(將樹種植到森林中)。

需要注意的是,如果樹為空,則拋出空指針異常的錯誤;如果開發(fā)者手動種植靈魂之樹(TREE_OF_SOULS),Timber_ohos將會拋出非法數(shù)據(jù)異常。

  1. public static void plant(@NotNull Tree tree) { 
  2.   if (tree == null) { 
  3.     throw new NullPointerException("tree == null"); 
  4.   } 
  5.   if (tree == TREE_OF_SOULS) { 
  6.     throw new IllegalArgumentException("Cannot plant Timber into itself."); 
  7.   } 
  8.   synchronized (FOREST) { 
  9.     FOREST.add(tree); 
  10.     forestAsArray = FOREST.toArray(new Tree[FOREST.size()]); 
  11.   } 

 (3)移除Tree實例

同樣的,樹的移除也是在靜態(tài)方法uproot()中的synchronized 同步代碼塊中進行的。如果沒有該樹可以移除,則Timber_ohos組件將拋出一個非法數(shù)據(jù)異常;反之,Timber_ohos組件將根據(jù)移除該樹后的 FOREST列表生成 新的forestAsArray 數(shù)組。

  1. public static void uproot(@NotNull Tree tree) { 
  2.   synchronized (FOREST) { 
  3.     if (!FOREST.remove(tree)) { 
  4.       throw new IllegalArgumentException("Cannot uproot tree which is not planted: " + tree); 
  5.     } 
  6.     forestAsArray = FOREST.toArray(new Tree[FOREST.size()]); 
  7.   } 

 (4)清除森林里面全部的Tree實例

移除森林里所有的Tree實例,首先使用FOREST的clear()方法清除所有的Tree實例,將會自動生成一個對應的新的Tree數(shù)組,而forestAsArray就是這個數(shù)組的引用。因此forestAsArray 數(shù)組被設置為空數(shù)組。

  1. public static void uprootAll() { 
  2.   synchronized (FOREST) { 
  3.     FOREST.clear(); 
  4.     forestAsArray = TREE_ARRAY_EMPTY; 
  5.   } 

 (5) 靈魂之樹(TREE_OF_SOULS)

估計很多同學好奇上述TREE_OF_SOULS。代碼實現(xiàn)中,在這里運用的是經典設計模式中的代理模式,TREE_OF_SOULS 本質上是一個代理對象,森林中所有其他普通的樹對象都是被代理對象,代理對象通過 for 循環(huán)來依次調用被代理對象的同名方法,從而實現(xiàn)不同類型的日志記錄,如下所示。

  1. private static final Tree TREE_OF_SOULS = new Tree() { 
  2.   @Override public void v(String message, Object... args) { 
  3.     Tree[] forest = forestAsArray; 
  4.     for (Tree tree : forest) { 
  5.       tree.v(message, args); 
  6.     } 
  7.   } 

2.核心算法( prepareLog)

Timber_ohos組件的日志記錄功能的核心算法在抽象類 Tree 的私有化 prepareLog()方法中,該方法接收四個參數(shù),如圖4所示:

鴻蒙開源第三方組件——日志工具組件Timber_ohos-鴻蒙HarmonyOS技術社區(qū)

圖4 參數(shù)表

prepareLog()中首先判斷了打log的條件,然后將要打印的message信息進行了處理,最后調用了抽象方法log進行日志輸出。總體而言 prepareLog()算法流程如下:

(1)獲取當前線程的 tag。

(2)當正常信息message不為null且信息長度為0時,這時正常信息message為null。

(3)當正常信息message和異常信息t都是 null 時,說明沒有信息可以記錄,方法直接返回。

(4)異常信息t通過getStackTraceString方法轉換為字符串。

(5)正常信息message和可選格式化參數(shù) args 通過formatMessage方法拼裝成一個字符串。

(6)調用抽象方法 log 進行日志記錄,這個方法由Tree的子類來實現(xiàn)。

  1. private void prepareLog(int priority, Throwable t, String message, Object... args) { 
  2.       //獲取當前線程的 tag 
  3.       String tag = getTag(); 
  4.       //當正常信息message不為null且信息長度為0時,這時正常信息message為null 
  5.       if (message != null && message.length() == 0) { 
  6.         message = null
  7.       } 
  8.       //當正常信息 message 和異常信息 t 都是 null 時,說明沒有信息可以記錄,方法直接返回 
  9.       if (message == null) { 
  10.         if (t == null) { 
  11.           return; // Swallow message if it's null and there'no throwable. 
  12.         } 
  13.         //異常信息 t 通過 getStackTraceString 方法轉換為字符串 
  14.         message = getStackTraceString(t); 
  15.       } else { 
  16.         if (args != null && args.length > 0) { 
  17.     //正常信息 message 和可選格式化參數(shù) args 通過 formatMessage 方法拼裝成一個字符串 
  18.           message = formatMessage(message, args); 
  19.         } 
  20.         if (t != null) { 
  21.           message += "\n" + getStackTraceString(t); 
  22.         } 
  23.       } 
  24.       //調用抽象方法 log 進行日志記錄,這個方法由 Tree 的子類來實現(xiàn) 
  25.       log(priority, tag, message, t); 
  26.     } 

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區(qū)

https://harmonyos.51cto.com

 

責任編輯:jianghua 來源: 鴻蒙社區(qū)
相關推薦

2021-04-20 15:06:42

鴻蒙HarmonyOS應用

2021-08-30 17:55:58

鴻蒙HarmonyOS應用

2021-04-08 14:57:52

鴻蒙HarmonyOS應用

2021-11-17 15:37:43

鴻蒙HarmonyOS應用

2021-07-20 15:20:40

鴻蒙HarmonyOS應用

2021-04-15 17:47:38

鴻蒙HarmonyOS應用

2021-11-02 14:54:21

鴻蒙HarmonyOS應用

2021-08-10 15:23:08

鴻蒙HarmonyOS應用

2021-10-19 10:04:51

鴻蒙HarmonyOS應用

2021-03-10 15:03:40

鴻蒙HarmonyOS應用

2021-04-29 14:32:24

鴻蒙HarmonyOS應用

2021-06-29 09:28:16

鴻蒙HarmonyOS應用

2021-03-24 09:30:49

鴻蒙HarmonyOS應用

2021-06-17 14:56:00

鴻蒙HarmonyOS應用

2021-07-28 09:40:04

鴻蒙HarmonyOS應用

2021-03-03 09:42:26

鴻蒙HarmonyOS圖片裁剪

2021-08-03 10:07:41

鴻蒙HarmonyOS應用

2021-08-26 16:07:46

鴻蒙HarmonyOS應用

2021-03-01 14:00:11

鴻蒙HarmonyOS應用

2021-08-05 15:06:30

鴻蒙HarmonyOS應用
點贊
收藏

51CTO技術棧公眾號

亚洲一区二区三区无吗| 久久不射影院| 免费视频一区二区| 精品国产一区二区三区久久狼5月| 女同激情久久av久久| 影院在线观看全集免费观看| av在线一区二区三区| 国产精品 欧美在线| 91 在线视频| 色婷婷狠狠五月综合天色拍| 欧美日精品一区视频| 久久人妻无码一区二区| 久久久久久女乱国产| 国产综合一区二区| 5278欧美一区二区三区| 极品美妇后花庭翘臀娇吟小说| 丁香婷婷成人| 欧美日本在线看| 亚洲国产精品久久久久婷蜜芽| 欧美69xxx| 久久综合色播五月| 99国产在线视频| 久草热在线观看| 亚洲毛片网站| 久久在线视频在线| 中文字幕国产专区| 国产无遮挡裸体免费久久| 欧美日韩在线播放一区| 内射国产内射夫妻免费频道| av在线麻豆| 中文字幕乱码久久午夜不卡 | 日韩中文一区二区| 欧美性生活影院| 可以免费观看av毛片| 超免费在线视频| 亚洲精品一卡二卡| 不卡中文字幕在线| 888av在线| 国产视频一区在线播放| 久久久久久久久久久久久9999| www.久久久久久久久久| 麻豆91小视频| 国产精品久久久久久久久久免费| 69成人免费视频| 日韩视频久久| 国内久久久精品| 国产一级视频在线播放| 欧美精品一级| 欧美丰满片xxx777| 欧美成欧美va| 中文字幕日韩欧美精品高清在线| 久久久国产精品免费| 我要看黄色一级片| 亚洲国产一成人久久精品| 日日摸夜夜添一区| 亚洲 欧美 国产 另类| 色小子综合网| 久久夜色精品亚洲噜噜国产mv | 亚洲奶汁xxxx哺乳期| 国产一区二区视频在线播放| 成人精品网站在线观看| 国产一区二区在线视频观看| 九九精品视频在线看| 国产精品中文字幕久久久| 成人免费一区二区三区| 亚洲精品乱码日韩| 黑人巨大精品欧美一区二区一视频 | 高清日韩av电影| 欧美国产激情一区二区三区蜜月| 亚洲精品8mav| 97caopor国产在线视频| 亚洲一区二区三区中文字幕在线 | 国产黄色片在线| 欧美国产美女| 欧美激情a∨在线视频播放| 国产精品第一页在线观看| 91久久在线| 国产福利视频一区二区| 中文字幕在线网站| 国产一区二区三区四区五区美女 | 欧美性黄网官网| 99草草国产熟女视频在线| 欧美日韩卡一| 欧美成人bangbros| 国产三级国产精品| 热久久天天拍国产| 欧美日本啪啪无遮挡网站| 麻豆一区二区三区精品视频| 久久成人在线| 成人黄色在线免费| 日韩性xxxx| 亚洲国产成人午夜在线一区| 成人国产在线看| 不卡一二三区| 欧美一级夜夜爽| 久久无码人妻精品一区二区三区 | ww亚洲ww在线观看国产| 亚洲精品一区二区三| 色黄网站在线观看| 色婷婷激情综合| 中文写幕一区二区三区免费观成熟| 欧美深夜视频| 久久精品国产99国产精品澳门 | 国产又粗又黄又猛| 欧美日韩一区二区三区四区在线观看| 欧美一区二区影院| 国产色视频在线| 久久婷婷一区二区三区| 9色视频在线观看| 日韩中文视频| 亚洲第一免费网站| 男人av资源站| 麻豆精品网站| 国产成人精品日本亚洲11| 午夜免费播放观看在线视频| 午夜激情久久久| 天天久久综合网| 成人羞羞网站| 国产成人精品日本亚洲| 亚洲欧美另类综合| 亚洲色图一区二区| 999精品视频在线| 日韩欧美中文字幕电影| 欧美精品国产精品日韩精品| 国产又粗又大又黄| 亚洲国产精品黑人久久久| 久久久亚洲国产精品| 亚洲伦理久久| 在线一区二区日韩| 日日夜夜狠狠操| 96av麻豆蜜桃一区二区| 欧美午夜性视频| 中文字幕一区二区三区四区久久| 最近中文字幕日韩精品| 欧美国产一级片| 久久久久久久久久美女| 97超碰青青草| 欧美一性一交| 欧美一二三视频| 天天摸天天干天天操| 亚洲一区在线电影| 国产高清av片| 亚洲精品二区三区| 91香蕉嫩草影院入口| 欧美96在线| 3d成人h动漫网站入口| 亚洲色图27p| 老司机免费视频一区二区| 午夜一区二区三区| 在线一区视频观看| 中文字幕免费精品一区| 中文字幕二区三区| 国产精品午夜久久| 欧美美女性视频| 婷婷激情综合| 亚洲a∨日韩av高清在线观看| 黄色在线播放网站| 日韩欧美123| 久久久全国免费视频| 成人午夜电影久久影院| 国产免费黄色小视频| 日韩欧美中文字幕电影| 国产成人自拍视频在线观看| av在线免费一区| 91精品在线麻豆| 久久精品女人毛片国产| www.欧美色图| 欧美牲交a欧美牲交aⅴ免费下载| 禁果av一区二区三区| 国产极品精品在线观看| 69视频在线观看| 制服丝袜av成人在线看| 久久国产精品波多野结衣| 成人av在线看| 日本美女高潮视频| 亚洲澳门在线| 国产一区国产精品| 成人做爰视频www网站小优视频| 少妇av一区二区三区| 国产v在线观看| 精品动漫一区二区三区| 久久久久久成人网| 国产成人免费在线观看不卡| 日日橹狠狠爱欧美超碰| 日韩在线理论| 国产精品久久久久久久久久久久午夜片| sm捆绑调教国产免费网站在线观看 | 欧美一级在线播放| 欧美一区二区三区| 亚洲精品福利免费在线观看| 在线免费观看一区二区| 亚洲一区二区三区精品在线| 自拍偷拍亚洲天堂| 国产麻豆精品久久一二三| 亚洲中文字幕无码专区| 亚洲国产不卡| 欧美性猛交xxxxx免费看| 好吊色欧美一区二区三区视频| 国产免费拔擦拔擦8x在线播放| 国产一区二区三区18| aaaa一级片| 色婷婷久久一区二区三区麻豆| 欧美三级黄色大片| 久久久五月婷婷| 第一页在线视频| 七七婷婷婷婷精品国产| 青草网在线观看| 欧美大黑bbbbbbbbb在线| 国产视色精品亚洲一区二区| 四虎影视成人精品国库在线观看| 97在线看福利| 亚洲精品天堂| 日韩中文字幕在线精品| 日本1级在线| 欧美成人a∨高清免费观看| 最近中文字幕在线观看| 精品国产乱码久久久久久虫虫漫画| 免费国产羞羞网站美图| 国产精品入口麻豆原神| 香蕉网在线播放| 成人激情免费网站| 国产男女无遮挡猛进猛出| 蜜桃av一区二区三区电影| av动漫在线看| 雨宫琴音一区二区在线| 成人手机在线播放| 四虎8848精品成人免费网站| 视频一区二区综合| 亚洲精品一级二级三级| 亚洲白虎美女被爆操| 色播五月激情五月| 久久只有精品| 少妇高潮喷水久久久久久久久久| 亚洲大胆视频| www.夜夜爱| 欧美久久99| 中文字幕第一页亚洲| 不卡av一区二区| 涩涩涩999| 国产九一精品| 日韩高清av| 加勒比久久综合| 日韩电影免费观看在| 一本久久青青| 欧美午夜精品久久久久免费视| 精品视频高潮| 精品久久sese| 亚洲婷婷伊人| 欧美日韩日本网| 国产亚洲第一伦理第一区| 久久伦理网站| 亚洲国产合集| 日韩欧美亚洲日产国产| 久久99国内| 视频一区二区三| 日本精品黄色| 在线码字幕一区| 99精品视频在线| 日本女人高潮视频| 亚洲欧洲中文字幕| 无颜之月在线看| 欧美va亚洲va日韩∨a综合色| 免费的一级黄色片| 伊人久久久大香线蕉综合直播| 国产人妻777人伦精品hd| 国产一区二区三区久久久久久久久| www.爱色av.com| 亚洲尤物影院| 狠狠热免费视频| 久久福利视频一区二区| 性生活在线视频| www.在线欧美| 亚洲v国产v欧美v久久久久久| 中文字幕高清不卡| 紧身裙女教师波多野结衣| 亚洲高清中文字幕| 天堂网视频在线| 色噜噜久久综合| 欧美一级黄视频| 欧美一区二区久久| 天天干天天摸天天操| 尤物yw午夜国产精品视频明星| 美女隐私在线观看| 久久人人爽人人爽人人片av高请| av资源亚洲| 91在线观看免费| 婷婷综合一区| 综合久久国产| 最新日韩av| 亚洲娇小娇小娇小| 不卡视频在线看| 国产欧美一区二区三区在线观看视频| 亚洲免费在线观看视频| 中文字幕视频网| 日韩一区二区精品| 蜜桃成人在线视频| 欧美另类在线播放| 欧美性片在线观看| 国产精品二区二区三区| av一区二区在线播放| 日韩精品一区二区三区四| 视频一区视频二区在线观看| 美女日批在线观看| 亚洲国产高清aⅴ视频| 日韩污视频在线观看| 欧美精品在线一区二区| 色资源在线观看| 欧美美最猛性xxxxxx| 91伊人久久| 久久99久久精品国产| 图片区亚洲欧美小说区| 久久久免费视频网站| 国产麻豆欧美日韩一区| 实拍女处破www免费看| 一区二区免费视频| 伊人成人在线观看| 亚洲精品中文字幕女同| av在线免费播放| 国产日韩中文在线| 久久91麻豆精品一区| 亚洲人精品午夜射精日韩| 国内精品自线一区二区三区视频| 日本少妇xxxxx| 欧美视频13p| 人成网站在线观看| 欧美猛少妇色xxxxx| 成人黄色理论片| 亚洲最新在线| 日本午夜精品视频在线观看| 亚洲乱码国产乱码精品精大量 | 中文字幕另类日韩欧美亚洲嫩草| 在线亚洲+欧美+日本专区| 亚洲欧美一区二区三| 久久久久一本一区二区青青蜜月| 成人在线分类| 一区二区三区在线视频111| 日本在线不卡视频一二三区| 亚洲国产欧美视频| 欧美色视频日本版| 亚欧洲精品视频| 欧美亚洲成人网| 神马日本精品| 国产亚洲天堂网| 91香蕉视频mp4| 亚洲欧美精品一区二区三区| 亚洲国产精品中文| 国产调教在线| 久久爱av电影| 免费一区视频| 久久久视频6r| 欧美日韩精品欧美日韩精品| 午夜精品一区| 国产在线视频不卡| 久久久久久久久久久久久久久久久久| 日本在线观看视频一区| 国产精品盗摄一区二区三区| 一级黄色短视频| 久久亚洲国产精品成人av秋霞| gogo大尺度成人免费视频| 国产精品亚洲天堂| 国产精品一二一区| 国产主播在线播放| 日韩成人在线网站| 亚洲国产福利| 一本色道久久99精品综合| 韩国三级在线一区| 国产一级一片免费播放放a| 亚洲国产成人av在线| 欧美成人ⅴideosxxxxx| 亚洲人成人77777线观看| 国模少妇一区二区三区| 国产一级片网址| 亚洲人成五月天| av日韩一区| 免费看又黄又无码的网站| 久久无码av三级| 99久久久国产精品无码网爆| 欧美精品videossex88| 亚洲国产网址| 天天看片天天操| 精品欧美一区二区三区| www.亚洲视频| 96成人在线视频| 麻豆精品网站| 丰满少妇高潮久久三区| 亚洲乱码av中文一区二区| 日韩av黄色| 欧美 国产 综合| 中文字幕在线不卡一区二区三区| 亚洲精品一区二区口爆| 国产精品久久av| 激情欧美日韩一区| 阿v天堂2014| 精品国产凹凸成av人网站| 国内自拍亚洲| 女人和拘做爰正片视频| 亚洲三级在线看| 蜜桃免费在线| 狠狠色综合欧美激情| 精品一区二区在线免费观看|