精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

亚洲国产一区二区三区青草影视| 亚洲中字在线| 91精品国产综合久久久久久| 一区二区三区偷拍| 中文字幕欧美人妻精品| 日韩精品免费一区二区三区| 欧美日韩高清影院| 日韩av影视| 在线免费看av片| 伊人久久大香线| 欧美精品一区二区高清在线观看| 国产 日韩 欧美在线| 日韩美女一级视频| 美国欧美日韩国产在线播放| 美日韩丰满少妇在线观看| 国产女人18毛片水真多18| 蜜桃视频在线网站| 久久久蜜臀国产一区二区| 国产精品久久久久久亚洲影视| 多男操一女视频| 韩国女主播一区二区三区| 日韩欧美中文在线| 天天爱天天做天天操| 亚洲国产精品欧美久久 | 国产精品69久久久| 男生女生差差差的视频在线观看| 九九**精品视频免费播放| 一区二区三区在线视频观看58| 91丨九色丨国产| 国产高潮久久久| 天天做天天爱天天综合网2021 | 欧美三级理论片| 欧美日韩色网| 国产精品―色哟哟| 高清国产在线一区| 国产精品尤物视频| 国产精品v日韩精品v欧美精品网站| 亚洲欧美激情视频| 国产资源中文字幕| 午夜日韩成人影院| 亚洲综合免费观看高清完整版| 日本一区二区高清视频| 成人免费一级视频| 日本不卡高清视频| 91国内免费在线视频| 萌白酱视频在线| 国内精品国产成人国产三级粉色 | 日韩精品一区二区三区不卡| 在线网址91| 中文字幕av一区二区三区免费看| 国产在线视频欧美一区二区三区| 国产一区二区麻豆| 日韩专区在线视频| 九九精品在线观看| 黑人狂躁日本娇小| av亚洲在线观看| 日韩大片免费观看视频播放| 亚洲成人激情小说| 99久久婷婷国产综合精品首页| 精品美女国产在线| 在线观看av的网址| 91网在线播放| 国产免费成人在线视频| 欧美高清视频一区| 神马久久精品| 99re这里只有精品首页| 国产九色精品| 日韩中文字幕影院| 成人在线综合网站| y111111国产精品久久婷婷| 亚洲无码久久久久| 久久国产福利国产秒拍| 人妖精品videosex性欧美| 国产高清中文字幕| 亚洲综合欧美| 日韩av色综合| 天堂网免费视频| 日韩二区在线观看| 国产精品久久久91| 中文字幕免费观看视频| 久久一二三区| 国产精品久久久久久久久久尿| 91精品国产高清一区二区三密臀| 免费视频一区| 日韩av电影国产| 无码人妻av一区二区三区波多野| 久久久亚洲人| 秋霞成人午夜鲁丝一区二区三区| 日本网站免费观看| 午夜亚洲激情| 国产精品免费观看在线| 中文字幕 欧美激情| 久久丁香综合五月国产三级网站 | 4438五月综合| 日韩午夜电影在线观看| 人妻av一区二区三区| 日韩一区二区三区色| 欧美成人vr18sexvr| www.四虎精品| 亚洲另类春色校园小说| 一区二区三区动漫| 久久国产高清视频| 国产伊人精品| 欧美激情在线一区| 亚洲黄色免费观看| 精品一区二区三区香蕉蜜桃| 亚洲中国色老太| 刘亦菲毛片一区二区三区| 久久综合九色综合97_久久久| 欧美视频1区| 麻豆网站在线看| 午夜一区二区三区在线观看| 99久久激情视频| 韩国三级成人在线| 日韩精品在线免费| 国产精品免费人成网站酒店| 伊人久久综合| 91av在线免费观看| 91麻豆成人精品国产| 丁香另类激情小说| 性欧美videosex高清少妇| 99久久精品免费观看国产| 香港成人在线视频| 午夜免费福利视频在线观看| 网站一区二区| 亚洲网在线观看| 欧美片一区二区| 日韩国产欧美一区二区三区| av免费观看久久| 精品av中文字幕在线毛片| 一区二区三区在线免费| 国产精品亚洲二区在线观看| 91精品国产自产观看在线| 日韩av一区二区在线| 少妇高潮在线观看| 久久狠狠一本精品综合网| 亚洲最大成人免费视频| 成年人视频在线看| 精品久久久久久久久久久久久久| 国产色视频在线播放| 欧美人与动xxxxz0oz| 欧美高清视频在线| 亚洲无码精品国产| 久久久噜噜噜久久中文字幕色伊伊 | 日本黄大片在线观看| 黄页免费欧美| 亚洲欧美日韩区| 国产成人亚洲精品自产在线| 韩国av一区二区三区四区| 日本不卡一区二区三区视频| 爱啪视频在线观看视频免费| 在线播放视频一区| 五月天综合视频| 中国女人久久久| 亚洲一区精品电影| 色影院视频在线| 一本一道久久a久久精品| 亚洲成人激情小说| 手机在线一区二区三区| 国产精品r级在线| 亚洲欧美综合一区二区| 亚洲h在线观看| 丰满人妻一区二区三区大胸| 91久久国产| 456亚洲影院| 污视频网站免费观看| 亚洲成人7777| 白嫩情侣偷拍呻吟刺激| 黄色工厂这里只有精品| 国产精品美女久久久久久免费| 男人久久精品| 五月婷婷久久丁香| 白嫩情侣偷拍呻吟刺激| 一本色道久久精品| 精品国产第一页| 鲁鲁在线中文| 亚洲精选一区二区| 在线免费观看国产精品| 久久九九久久九九| 国产九九在线视频| 99九九热只有国产精品| 成人免费激情视频| 成人av免费| 日韩视频免费观看高清完整版 | av一区二区久久| 国产精品自拍片| 久久av免费看| 欧美伊久线香蕉线新在线| 亚洲 欧美 自拍偷拍| 天涯成人国产亚洲精品一区av| 国产二级一片内射视频播放| 亚洲午夜黄色| 久久久精品动漫| 日韩大尺度黄色| 日韩在线观看免费网站| 亚洲无码精品一区二区三区| 中文字幕一区二区三区四区不卡 | 亚洲午夜精品国产| 国产欧美视频在线| 欧美国产日韩一区二区在线观看 | 免费成人在线影院| 手机成人av在线| 成人香蕉社区| 日韩美女毛茸茸| 老司机精品视频在线观看6| 日韩女优视频免费观看| 日韩精品1区2区| 国产精品网站一区| 中国男女全黄大片| 乱人伦精品视频在线观看| 亚洲精品在线视频观看| 91国内精品| 国产精品美女久久久免费| 青青草原国产在线| 在线a欧美视频| 丰满人妻一区二区| 欧洲精品在线观看| 久久国产免费观看| 国产亚洲视频系列| 中文字幕成人免费视频| 在线观看亚洲| 亚洲五月六月| 五月国产精品| 91成人伦理在线电影| 写真福利精品福利在线观看| 欧美成人激情图片网| 极品白浆推特女神在线观看 | 欧美一级黄色影院| 国产精品mm| 亚洲一区不卡在线| 日韩成人一级| 91在线播放视频| 精品3atv在线视频| 久久久视频免费观看| 一区二区高清不卡| 日韩精品丝袜在线| 亚洲av无码国产精品久久不卡| 在线观看视频欧美| 久久久久久久伊人| 日韩毛片视频在线看| 美女洗澡无遮挡| 成人性生交大片免费看中文| 日本国产一级片| 日韩av电影免费观看高清完整版| 中文字幕人妻熟女人妻洋洋| 日韩成人激情| 欧美不卡福利| 欧美韩一区二区| 国产66精品久久久久999小说| 欧美成人三级| 国产精品视频公开费视频| 国产资源在线观看入口av| 欧美精品一二区| 成人影欧美片| 久久久91精品国产| 成年人在线免费观看| 亚洲精品福利免费在线观看| 亚洲成人久久精品| 欧美精品久久99久久在免费线| 久久国产视频播放| 天天色 色综合| 日韩av无码中文字幕| 亚洲最新在线观看| 久久久久久久久久一区二区三区| 亚洲欧洲日韩av| 国产精品一区二区亚洲| 中文成人av在线| 一二三四国产精品| 中文字幕一区视频| 中文字幕另类日韩欧美亚洲嫩草| 国产精品国产自产拍高清av王其| 亚洲图片第一页| 久久久久久久久久久久久女国产乱| 黄色av网址在线观看| 不卡视频在线看| 久久精品综合视频| 99国产精品99久久久久久| 在线观看国产免费视频| 99久久久久免费精品国产 | 在线视频一区二区三| 亚洲视频 欧美视频| 91久久精品日日躁夜夜躁欧美| 日本特级黄色片| 色老汉av一区二区三区| 乱子伦一区二区三区| 欧美日韩成人在线| 国产三级小视频| 精品国产人成亚洲区| 少妇人妻精品一区二区三区| 国产视频一区在线| 搞黄视频免费在线观看| 亚洲欧美日韩国产中文专区| www亚洲人| 欧美成人第一页| 色在线视频观看| 国产精品日韩在线播放| 国产一区2区在线观看| 成人羞羞视频免费| 一本色道久久综合亚洲精品酒店| 亚洲欧美丝袜| 99精品国产福利在线观看免费 | 国产乱人伦精品一区二区在线观看| 97人妻精品一区二区三区免费| 国产精品午夜在线观看| 国产无码精品在线播放| 欧美日韩精品系列| 无码国产精品一区二区免费16| 日韩亚洲成人av在线| 中文字幕人成乱码在线观看 | 亚洲视频综合在线| 欧美性猛交bbbbb精品| 日韩欧美在线一区二区三区| 福利视频在线看| 韩国日本不卡在线| 麻豆精品在线| 亚洲欧洲精品在线| 日韩中文字幕麻豆| 久久一区二区电影| 亚洲一级二级在线| 国产xxxx孕妇| 日韩在线视频观看| 亚洲va中文在线播放免费| 好吊色欧美一区二区三区 | 中文av免费观看| 亚洲欧美日韩爽爽影院| 成人免费观看在线观看| 91入口在线观看| 亚洲综合色站| 91丝袜超薄交口足| 国产精品―色哟哟| 在线免费观看国产精品| 亚洲摸下面视频| 男人的天堂免费在线视频| 国产精品免费一区二区三区四区| 亚洲精品va| 九九热视频免费| 亚洲视频一区二区在线| 中文字幕一区二区三区四区免费看| 亚洲欧美制服综合另类| 亚洲免费福利| 欧美连裤袜在线视频| 亚洲制服av| 91网站免费入口| 色欧美乱欧美15图片| 日本成人一区二区三区| 4388成人网| 中文字幕中文字幕精品| 999精品网站| 国产精品色婷婷久久58| 久久久久久av无码免费看大片| 亚洲最大在线视频| 成人黄色视屏网站| 亚洲一区不卡在线| 国产一区二区调教| 日日骚一区二区三区| 欧美岛国在线观看| 91超碰国产在线| 久久99热只有频精品91密拍| 免费视频一区| 人与动物性xxxx| 欧美一区二区观看视频| 黄色成人在线网| 久久久精品动漫| 美女在线一区二区| √天堂中文官网8在线| 欧美成人一区二区三区在线观看 | 在线成人免费观看| 二区在线视频| 91精品久久久久久久久久入口 | 日韩一级片免费视频| 成人免费毛片嘿嘿连载视频| 中文字幕在线字幕中文| 国产视频丨精品|在线观看| 中文.日本.精品| 国产手机视频在线观看| 成人av先锋影音| 亚洲图片欧美日韩| 久久久国产精品免费| xxxxxhd亚洲人hd| 国产a级片免费观看| 1区2区3区国产精品| 国产小视频一区| 国产不卡精品视男人的天堂| 911精品美国片911久久久| 人妻激情偷乱频一区二区三区| 色噜噜狠狠一区二区三区果冻| 中文日本在线观看| 国产伦精品一区| 奇米四色…亚洲| 久久免费视频播放| 亚洲欧美一区二区三区在线| 日韩欧美专区| 久久黄色片视频| 亚洲三级在线免费观看| 人妻精品一区二区三区| 国产精品久久久久久av福利软件| 国产精品magnet| 日本黄区免费视频观看| 精品国产一区二区亚洲人成毛片| 欧美日韩五区|