3atv精品不卡视频,97人人超碰国产精品最新,中文字幕av一区二区三区人妻少妇,久久久精品波多野结衣,日韩一区二区三区精品

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

跨进程通信机制

發(fā)布時間:2024/1/18 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 跨进程通信机制 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

跨進程通信機制


1. Binder

1.1. Binder定義

Binder是Android系統(tǒng)中進程間通訊(IPC)的一種方式,也是Android系統(tǒng)中最重要的特性之一。Android中的四大組件Activity,Service,Broadcast,ContentProvider,不同的App等都運行在不同的進程中,它是這些進程間通訊的橋梁。

1.2. Binder架構(gòu)

Binder跨進程通信機制模型基于Client - Server 模式,其在 framework 層進行了封裝,通過 JNI 技術調(diào)用 Native(C/C++)層的 Binder 架構(gòu)。而在Native層,Binder 則以 ioctl 的方式與 Binder 驅(qū)動進行通訊,其架構(gòu)圖如下:

Binder架構(gòu)中的組件主要包括 ClientServerServiceManager 以及 Binder 驅(qū)動四種,各角色作用如下:

角色作用
ClientAndroid客戶端,使用服務的進程
Server服務器端,提供服務的進程
ServiceManager管理Service的注冊與查詢,將字符形式的Binder名字轉(zhuǎn)化成Client中對該Binder的代理
Binder驅(qū)動負責進程之間Binder通信的建立,Binder在進程之間的傳遞,Binder引用計數(shù)管理,數(shù)據(jù)包在進程之間的傳遞和交互等一系列底層支持

1.3. Binder機制

Binder機制如下圖所示:

  • 首先需要注冊Server端,只有注冊了Server端,Client端才有通訊的目標,Server端通過 ServiceManager 注冊服務,注冊的過程就是向 Binder 驅(qū)動的全局鏈表 binder_procs 中插入Server端的信息(binder_proc 是結(jié)構(gòu)體,每個 binder_proc 結(jié)構(gòu)體中都有 todo 任務隊列),然后向 ServiceManager 的 svcinfo 列表中緩存注冊的服務;
  • 在Server端注冊完成后,Client端就可以與其進行通訊了。在通訊之前Client端需要先獲取服務,即拿到服務的代理,也可以理解為引用。獲取Server端的方式就是通過 ServiceManager 到 svcinfo 列表中查詢所需服務并返回Server端的代理,svcinfo 列表就是所有已注冊服務的通訊錄,保存了所有已注冊服務的信息;
  • 在有了Server端的代理之后即可向Server端發(fā)送請求。Client端通過 BinderProxy 將請求參數(shù)發(fā)送給 ServiceManager,通過共享內(nèi)存的方式使用內(nèi)核方法 copy_from_user() 將請求參數(shù)先拷貝到內(nèi)核空間,此時Client端進入等待狀態(tài),然后 Binder 驅(qū)動向Server端的 todo 隊列里面插入一條事務,執(zhí)行完成之后通過 copy_to_user() 將內(nèi)核的執(zhí)行結(jié)果拷貝到用戶空間(這里只執(zhí)行拷貝命令,并沒有拷貝數(shù)據(jù)),喚醒等待的客戶端并把結(jié)果返回,即完成了一次通訊。

1.4. Binder驅(qū)動

Linux 內(nèi)核的運行空間與用戶程序的運行空間是相互隔離的,即使用戶程序崩潰了,內(nèi)核也不受影響。內(nèi)核空間與用戶空間的交互過程如下圖所示:

內(nèi)核空間可以執(zhí)行任意命令,調(diào)用系統(tǒng)的一切資源,而用戶空間只能執(zhí)行簡單的運算,不能直接調(diào)用系統(tǒng)資源。雖然從邏輯上抽離出內(nèi)核空間和用戶空間,但是不可避免的的是,總有那么一些用戶空間需要訪問內(nèi)核的資源。而用戶空間訪問內(nèi)核空間的唯一方式就是系統(tǒng)調(diào)用(System call),通過這個統(tǒng)一的入口接口,所有的資源訪問都是在內(nèi)核的控制下執(zhí)行,以免導致用戶程序?qū)ο到y(tǒng)資源的越權(quán)訪問,從而保障了系統(tǒng)的安全和穩(wěn)定。

當一個任務(進程)執(zhí)行系統(tǒng)調(diào)用而陷入內(nèi)核代碼中執(zhí)行時,就稱進程處于內(nèi)核運行態(tài)(或簡稱為內(nèi)核態(tài)),此時處理器處于特權(quán)級最高的(0級)內(nèi)核代碼中執(zhí)行,處理器在特權(quán)等級高的時候才能執(zhí)行特權(quán)CPU指令。當進程在執(zhí)行用戶自己的代碼時,則稱其處于用戶運行態(tài)(用戶態(tài)),即此時處理器在特權(quán)級最低的(3級)用戶代碼中運行。

通過系統(tǒng)調(diào)用,用戶空間可以訪問內(nèi)核空間,而當一個用戶空間想與另外一個用戶空間進行通信時就需要讓操作系統(tǒng)內(nèi)核添加支持,如Socket、管道等都是內(nèi)核支持的。但 Binder 并不是 Linux 內(nèi)核的一部分,而是 Linux 的動態(tài)可加載內(nèi)核模塊(Loadable Kernel Module,LKM)。Binder是具有獨立功能的程序,可以被單獨編譯,但不能獨立運行。它在運行時被鏈接到內(nèi)核作為內(nèi)核的一部分在內(nèi)核空間運行。因此,通過添加一個運行在內(nèi)核空間的內(nèi)核模塊,作為用戶進程之間通信的橋梁,從而實現(xiàn)進程間通信。在 Android 系統(tǒng)中,這個運行在內(nèi)核空間的,負責各個用戶進程通過 Binder 通信的內(nèi)核模塊叫做 Binder 驅(qū)動;

在上圖中,用戶空間中 binder_open(), binder_mmap(), binder_ioctl()方法通過 System call 來調(diào)用內(nèi)核空間 Binder 驅(qū)動中相對應的方法。內(nèi)核空間與用戶空間的共享內(nèi)存通過 copy_from_user()和 copy_to_user()內(nèi)核方法來完成用戶空間與內(nèi)核空間的數(shù)據(jù)傳輸。此外,Binder 驅(qū)動中有一個全局的 binder_procs 鏈表,用來保存Server端的進程信息。

1.5. Binder進程與線程

對于底層Binder驅(qū)動而言,通過 binder_procs 鏈表記錄所有創(chuàng)建的 binder_proc 結(jié)構(gòu)體,Binder 驅(qū)動中的每一個 binder_proc 結(jié)構(gòu)體都與用戶空間中的一個用 Binder 通信的進程相對應,且每個進程有且只有一個 ProcessState 對象,通過單例模式實現(xiàn)。在每個進程中可以有多個線程,每個線程對應一個 IPCThreadState 對象,IPCThreadState 對象也是通過單例模式實現(xiàn),在 Binder 驅(qū)動層也有與之相對應的結(jié)構(gòu),即Binder_thread 結(jié)構(gòu)體。在 binder_proc 結(jié)構(gòu)體中通過成員變量 rb_root threads來記錄當前進程內(nèi)所有的 binder_thread。

每個 Server 進程在啟動時創(chuàng)建一個 Binder 線程池,并向其中注冊一個 Binder 線程,之后 Server 進程也可以向 binder 線程池注冊新的線程。當 Binder 驅(qū)動在探測到?jīng)]有空閑 binder 線程時,也可以主動向 Server 進程池注冊新的的 binder 線程。對于一個 Server 進程有一個最大 Binder 線程數(shù)限制,默認為16個 Binder 線程。對于所有 Client 端進程的 Binder 請求都是交由 Server 端進程的 Binder 線程來處理的。

1.6. ServiceManager啟動

ServiceManager提供注冊服務與查詢服務的功能,其啟動如下圖所示:

ServiceManager 分為 framework 層和 native 層,framework 層只是對 native 層進行了封裝方便調(diào)用,圖上展示的是 native 層的 ServiceManager 的啟動過程。

ServiceManager 的啟動是系統(tǒng)在開機時,init 進程解析 init.rc 文件并調(diào)用 service_manager.c 中的 main() 方法啟動的。 native 層的 binder.c 封裝了一些與 Binder 驅(qū)動交互的方法。

ServiceManager 的啟動分為三步:首先打開驅(qū)動創(chuàng)建全局鏈表 binder_procs;然后將自己當前進程信息保存到 binder_procs 鏈表;最后開啟 loop 不斷的處理共享內(nèi)存中的數(shù)據(jù),并處理 BR_xxx 命令(ioctl 的命令)。

1.7. ServiceManager 注冊服務

Service組件運行在Server進程中,首先要將Service注冊到Service Manager中,再啟動一個Binder線程池來等待和處理Client端的通信請求。

注冊過程(addService)的核心工作是在服務所在進程創(chuàng)建binder_node,在ServiceManager進程創(chuàng)建binder_ref。

以Media服務為例,注冊的過程涉及到MediaPlayerService(作為Client進程)和Service Manager(作為Service進程),通信流程圖如下所示:

  • 注冊 MediaPlayerService 服務端,通過 ServiceManager 的 addService() 方法來注冊服務;
  • 首先 ServiceManager 向 Binder 驅(qū)動發(fā)送 BC_TRANSACTION 命令,并攜帶 ADD_SERVICE_TRANSACTION 命令,同時注冊服務的線程進入等待狀態(tài) waitForResponse()。 Binder 驅(qū)動收到請求命令向 ServiceManager 的 todo 隊列里面添加一條注冊服務的事務。事務的任務就是創(chuàng)建服務端進程 binder_node 信息并插入到 binder_procs 鏈表中;
  • 事務處理完之后發(fā)送 BR_TRANSACTION 命令,ServiceManager 收到命令后向 svcinfo 列表中添加已經(jīng)注冊的服務。最后發(fā)送 BR_REPLY 命令喚醒等待的線程,通知注冊成功。

1.8. ServiceManager 獲取服務

請求服務過程,就是向serviceManager進程查詢指定服務,當執(zhí)行binder_transaction()時,會區(qū)分請求服務所屬進程情況:

  • 當請求服務的進程與服務屬于不同進程,則為請求服務所在進程創(chuàng)建binder_ref對象,指向服務進程中的binder_node,即返回請求服務的一個代理對象;
  • 當請求服務的進程與服務屬于同一進程,則不再創(chuàng)建新對象,而是返回的對象的真實子類;

ServiceManager 獲取服務的流程如下圖所示:

  • 獲取服務的過程與注冊類似,相反的過程。通過 ServiceManager 的 getService() 方法來注冊服務;
  • 首先 ServiceManager 向 Binder 驅(qū)動發(fā)送 BC_TRANSACTION 命令,并攜帶 CHECK_SERVICE_TRANSACTION 命令,同時獲取服務的線程進入等待狀態(tài) waitForResponse();
  • Binder 驅(qū)動收到請求命令向 ServiceManager 的發(fā)送 BC_TRANSACTION 查詢已注冊的服務,若查詢到所需服務則直接響應 BR_REPLY 并喚醒等待的線程,否則將與 binder_procs 鏈表中的服務進行一次通訊再響應。

1.9. 進行一次完整通訊

進行一次完整通訊的流程如下圖所示:

  • 服務注冊完成;
  • 首先通過 ServiceManager 獲取到服務端的 BinderProxy 代理對象,通過調(diào)用 BinderProxy 將參數(shù),方法標識傳給 ServiceManager,同時客戶端線程進入等待狀態(tài);
  • ServiceManager 將用戶空間的參數(shù)等請求數(shù)據(jù)復制到內(nèi)核空間,并向服務端插入一條執(zhí)行方法的事務。事務執(zhí)行完通知 ServiceManager 將執(zhí)行結(jié)果從內(nèi)核空間復制到用戶空間,并喚醒等待的線程,響應結(jié)果,通訊結(jié)束。

2. AIDL

2.1. 概述

AIDL,全稱是 “Android Interface Definition Language”,也就是 “Android接口定義語言”。設計這門語言的目的是為了實現(xiàn)進程間通信,尤其是在涉及多進程并發(fā)情況下的進程間通信。

在 Android 中,一個進程通常無法訪問另一個進程的內(nèi)存。因此,為進行通信,進程需將其對象分解成可供操作系統(tǒng)理解的原語,并將其編組為可供操作的對象。而通過 AIDL 即可定義客戶端與服務端均認可的編程接口,以便二者之間實現(xiàn)通信。

2.2. AID語法

AIDL 的語法基本上和 Java 是一樣的,只是在一些細微處有些許差別,差別之處主要如下所示:

  • 文件類型:用 AIDL 書寫的文件的后綴是**.aidl**,而不是 .java。

  • 數(shù)據(jù)類型:AIDL 默認支持一些數(shù)據(jù)類型,在使用這些數(shù)據(jù)類型的時候是不需要導包的。但是除了這些類型之外的數(shù)據(jù)類型,在使用之前必須導包,即使目標文件與當前正在編寫的 .aidl 文件在同一個包下也是需要導包的(在 Java 中,這種情況是不需要導包的)。

    • 默認支持的數(shù)據(jù)類型包括:
      • Java中的八種基本數(shù)據(jù)類型:booleanbytecharshortintfloatdoublelong
      • String 類型;
      • CharSequence 類型;
      • List 類型:List中的所有元素必須是AIDL支持的類型之一,或者是一個其他AIDL生成的接口,或者是定義的parcelable,List可以使用泛型;
      • Map 類型:Map中的所有元素必須是AIDL支持的類型之一,或者是一個其他AIDL生成的接口,或者是定義的parcelable,Map是不支持泛型的。
  • 定向tag:AIDL 中的定向 tag 表示了在跨進程通信中數(shù)據(jù)的流向,其中 in 表示數(shù)據(jù)只能由客戶端流向服務端; out 表示數(shù)據(jù)只能由服務端流向客戶端;而 inout 則表示數(shù)據(jù)可在服務端與客戶端之間雙向流通。其中,數(shù)據(jù)流向是針對在客戶端中的那個傳入方法的對象而言的。in 為定向 tag 的話表現(xiàn)為服務端將會接收到一個客戶端中傳入方法的對象的完整數(shù)據(jù),但是客戶端該對象不會因為服務端對傳參的修改而發(fā)生變動;out 的話表現(xiàn)為服務端將會接收到那個對象的的空對象,但是在服務端對接收到的空對象有任何修改之后客戶端將會同步變動;inout 為定向 tag 的情況下,服務端將會接收到客戶端傳來對象的完整信息,并且客戶端將會同步服務端對該對象的任何變動。

    注:Java 中的基本類型和 String ,CharSequence 的定向 tag 默認且只能是 in

  • 兩類AIDL文件:第一類是用來定義 parcelable 對象,以供其他 AIDL 文件使用 AIDL 中非默認支持的數(shù)據(jù)類型的。第二類是用來定義方法接口,以供系統(tǒng)使用來完成跨進程通信的。兩類文件都是在“定義”,而不涉及具體的實現(xiàn),這就是為什么它叫做“Android接口定義語言”。
    注:所有的非默認支持數(shù)據(jù)類型必須通過第一類AIDL文件定義 parcelable 對象才能被使用。

舉例如下:

目錄結(jié)構(gòu)如圖所示:

其中,Pet.java、Person.java分別與Pet.aidl、Person.aidl對應,對應的java文件與aidl文件的包名需一致(自動編譯)。

Pet.aidl、Person.aidl以及Ipet.aidl文件代碼如下:

package com.example.aidlparcelableservertest;// Pet.aidl // 第一類AIDL文件 // 這個文件的作用是引入一個序列化對象 Pet 供其他的AIDL文件使用 // Pet.aidl 與 Pet.java的包名應該是一樣的 parcelable Pet; package com.example.aidlparcelableservertest;// Person.aidl // 第一類AIDL文件 // 這個文件的作用是引入一個序列化對象 Person 供其他的AIDL文件使用 // Person.aidl 與 Person.java的包名應該時一樣的 parcelable Person; package com.example.aidlparcelableservertest;// Ipet.aidl // 第二類AIDL文件// Pet和Person不是默認支持的類型 // 即使Ipet.aidl與Pet.aidl、Person.aidl在同一包內(nèi),也需要導入 import com.example.aidlparcelableservertest.Pet; import com.example.aidlparcelableservertest.Person;interface IPet {// 無論是什么類型,所有的返回值前都不需要加任何東西// 定義一個Person對象作為傳入?yún)?shù)List<Pet> getPets(in Person owner);// 傳參時除Java基本類型void addPetIn(in Pet pet);void addPetOut(out Pet pet);void addPetInout(inout Pet pet);}

2.3. 如使用AIDL實現(xiàn)跨進程通信

在進行跨進程通信時,AIDL 中定義的方法里包含非默認支持的數(shù)據(jù)類型與否,要進行的操作是不一樣的。如果不包含,則只需要編寫一個.aidl 文件(第二類),如果包含,那么我們通常需要寫 n+1 個 .aidl 文件( n 為非默認支持的數(shù)據(jù)類型的種類數(shù))。所以接下來以 AIDL 文件中包含非默認支持的數(shù)據(jù)類型為例進行介紹。

在構(gòu)建每個包含.aidl文件的應用時,Android SDK 工具會生成基于該.aidl 文件的IBinder接口,并將其保存到項目的 app/build/generated/aidl_source_output_dir 目錄中。服務必須視情況實現(xiàn)IBinder 接口。然后,客戶端應用便可綁定到該服務,并調(diào)用IBinder 中的方法來執(zhí)行 IPC。

使用 AIDL 創(chuàng)建綁定服務的步驟如下:

  • 創(chuàng)建.aidl文件:
    • 此文件定義帶有方法簽名的編程接口。
  • 實現(xiàn)接口:
    • Android SDK 工具基于.aidl 文件,使用 Java 編程語言生成接口。此接口擁有一個名為Stub 的內(nèi)部抽象類,用于擴展Binder 類并實現(xiàn) AIDL 接口中的方法,必須擴展該Stub類并實現(xiàn)這些方法。
  • 向客戶端公開接口:
    • 實現(xiàn)Service 并重寫 onBind(),從而返回Stub 類的實現(xiàn)。

2.3.1. 創(chuàng)建 .aidl文件

創(chuàng)建Pet.aidl、Person.aidl文件,代碼如下:

package com.example.aidlparcelableservertest;parcelable Pet; package com.example.aidlparcelableservertest;parcelable Person;

定義接口服務時注意:

  • 方法可帶零個或多個參數(shù),返回值或空值;
  • 所有非默認支持的數(shù)據(jù)類型的參數(shù)均需要指示數(shù)據(jù)流向的方向標記:in、out 或 inout。默認支持的數(shù)據(jù)類型的參數(shù)只能為in;
  • 可以在 ADL 接口中定義 String 常量和 int 字符串常量,如:const int VERSION = 1;

2.3.2. 實現(xiàn) Parcelable 接口

可以通過 IPC 接口,將某個類從一個進程發(fā)送至另一個進程。但必須確保 IPC 通道的另一端可使用該類的代碼,并且該類必須支持 Parcelable 接口。

實現(xiàn) Parcelable 接口相當于 Android 提供的一種自定義序列化機制,不僅要求實現(xiàn)Parcelable接口中定義的方法,而且要求在實現(xiàn)類中定義一個名為CREATOR、類型為Parcelable.Creator的靜態(tài)常量。

  • 創(chuàng)建與Pet.aidl、Person.aidl對應的文件Pet.java、Person.java,對應的java文件與aidl文件的包名一致。Pet.aidl、Person.aidl中的內(nèi)容分別如下所示:
package com.example.aidlparcelableservertest;import android.os.Parcel; import android.os.Parcelable;public class Pet implements Parcelable {private String name;private double weight;public Pet() {}public Pet(String name, double weight) {super();this.name = name;this.weight = weight;}public String getName() {return name;}public void setName(String name) {this.name = name;}public double getWeight() {return weight;}public void setWeight(double weight) {this.weight = weight;}// 實現(xiàn)Parcelable接口必須實現(xiàn)的方法@Overridepublic int describeContents() {return 0;}// 實現(xiàn)Parcelable接口必須實現(xiàn)的方法// 將Pet對象的數(shù)據(jù)寫入到parcel中@Overridepublic void writeToParcel(Parcel parcel, int i) {parcel.writeString(name);parcel.writeDouble(weight);}// 添加一個靜態(tài)成員CREATOR,該對象實現(xiàn)了Parcelable.Creator接口// 該靜態(tài)常量的值負責從parcel數(shù)據(jù)包中回復Pet對象public static final Creator<Pet> CREATOR = new Creator<Pet>() {@Overridepublic Pet createFromParcel(Parcel parcel) {// 從Parcel中讀取數(shù)據(jù),返回Pet對象return new Pet(parcel.readString(), parcel.readDouble());}@Overridepublic Pet[] newArray(int i) {return new Pet[i];}};@Overridepublic String toString() {return "Pet{" + "name='" + name + ", weight=" + weight + '}';} } package com.example.aidlparcelableservertest;import android.os.Parcel; import android.os.Parcelable;import java.util.Objects;public class Person implements Parcelable {private int id;private String name;private String pass;public Person() {}public Person(Integer id, String name, String pass) {super();this.id = id;this.name = name;this.pass = pass;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPass() {return pass;}public void setPass(String pass) {this.pass = pass;}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Person person = (Person) o;return Objects.equals(name, person.name) && Objects.equals(pass, person.pass);}@Overridepublic int hashCode() {return Objects.hash(id, name, pass);}// 實現(xiàn)Parcelable接口必須實現(xiàn)describeContents@Overridepublic int describeContents() {return 0;}// 實現(xiàn)Parcelable接口必須實現(xiàn)describeContents// 將Person對象的數(shù)據(jù)寫入到parcel中@Overridepublic void writeToParcel(Parcel parcel, int i) {// 把該對象所包含的數(shù)據(jù)寫到Parcel中parcel.writeInt(id);parcel.writeString(name);parcel.writeString(pass);}// 添加一個靜態(tài)成員CREATOR,該對象實現(xiàn)了Parcelable.Creator接口// 該靜態(tài)常量的值負責從parcel數(shù)據(jù)包中回復Person對象public static final Creator<Person> CREATOR = new Creator<Person>() {@Overridepublic Person createFromParcel(Parcel parcel) {// 從Parcel中讀取數(shù)據(jù),返回Person對象return new Person(parcel.readInt(), parcel.readString(), parcel.readString());}@Overridepublic Person[] newArray(int i) {return new Person[i];}}; }

注:若AIDL文件中涉及到的所有數(shù)據(jù)類型均為默認支持的數(shù)據(jù)類型,則無此步驟。因為默認支持的數(shù)據(jù)類型都是可序列化的。

  • 創(chuàng)建通信接口的Ipet.aidl 文件,代碼如下:
package com.example.aidlparcelableservertest;import com.example.aidlparcelableservertest.Pet; import com.example.aidlparcelableservertest.Person;interface IPet {List<Pet> getPets(in Person owner);}

在定義完該通信接口的 AIDL 文件之后,在項目的 app/build/generated/aidl_source_output_dir 目錄中會生成基于該.aidl 文件的IBinder接口(未生成則點擊Make Project)。接口文件分析見后文。

2.3.3. 向客戶端公開接口

  • 實現(xiàn)ParcelableService類并重寫onBind(),從而返回Stub 類的實現(xiàn),代碼如下:
package com.example.aidlparcelableservertest;import android.app.Service; import android.content.Intent; import android.os.IBinder; import android.os.RemoteException;import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;public class ParcelableService extends Service {private static final String TAG = "ParcelableService";private PetBinder petBinder;private static Map<Person, List<Pet>> pets = new HashMap<>();static {// 初始化pets Map集合List<Pet> list1 = new ArrayList<>();list1.add(new Pet("旺財", 4.3));list1.add(new Pet("來福", 5.8));pets.put(new Person(1, "sun", "1234"), list1);List<Pet> list2 = new ArrayList<>();list2.add(new Pet("kitty", 6.6));list2.add(new Pet("bobby", 8.8));pets.put(new Person(2, "moon", "4321"), list2);}// 繼承Stub,也就是實現(xiàn)了IPet接口,并實現(xiàn)了IBinder接口class PetBinder extends IPet.Stub {// getPets()方法的實現(xiàn)@Overridepublic List<Pet> getPets(Person owner) throws RemoteException {return pets.get(owner);}}@Overridepublic void onCreate() {super.onCreate();petBinder = new PetBinder();}@Overridepublic IBinder onBind(Intent intent) {/*** 返回petBinder對象* 在綁定本地Service的情況下,該petBinder對象會直接傳給客戶端的ServiceConnection對象的onServiceConnected方法的第二個參數(shù)* 在綁定遠程Service的情況下,只將petBinder對象的代理傳給客戶端的ServiceConnection對象的onServiceConnected方法的第二個參數(shù)*/return petBinder;} }
  • 創(chuàng)建客戶端進程MainActivity.java,代碼如下。客戶端必須擁有接口類的訪問權(quán)限,因此如果客戶端和服務在不同應用內(nèi),則客戶端應用的 src/ 目錄內(nèi)必須包含 .aidl 文件(該文件會生成 android.os.Binder 接口,進而為客戶端提供 AIDL 方法的訪問權(quán)限)的副本,即將Pet與Person類的java文件和AIDL文件以及IPet.aidl復制到客戶端中。注意,復制時需要保持包名不變。

package com.example.aidlparcelableclienttest;import androidx.appcompat.app.AppCompatActivity;import android.app.Service; import android.content.ComponentName; import android.content.Intent; import android.content.ServiceConnection; import android.os.Bundle; import android.os.IBinder; import android.os.RemoteException; import android.util.Log; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.ListView;// 引入IPet.aidl及Pet.java、Person.java import com.example.aidlparcelableservertest.IPet; import com.example.aidlparcelableservertest.Pet; import com.example.aidlparcelableservertest.Person;import java.util.List;public class MainActivity extends AppCompatActivity {private IPet petService;private ServiceConnection conn = new ServiceConnection() {@Overridepublic void onServiceConnected(ComponentName componentName, IBinder iBinder) {// 獲取遠程Service的onBind方法所返回的對象的代理petService = IPet.Stub.asInterface(iBinder);}@Overridepublic void onServiceDisconnected(ComponentName componentName) {petService = null;}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);EditText personView = findViewById(R.id.person);ListView showView = findViewById(R.id.show);Button getBtn = findViewById(R.id.get);Intent intent = new Intent();intent.setAction("PARCELABLE_SERVICE");intent.setPackage("com.example.aidlparcelableservertest");bindService(intent, conn, Service.BIND_AUTO_CREATE);getBtn.setOnClickListener(view -> {String personName = personView.getText().toString();try {// 調(diào)用遠程Service方法List<Pet> pets = petService.getPets(new Person(1, personName, personName));// 將程序返回的list包裝成ArrayAdapterArrayAdapter<Pet> adapter = new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_list_item_1, pets);showView.setAdapter(adapter);} catch (RemoteException e) {e.printStackTrace();}});}@Overrideprotected void onDestroy() {super.onDestroy();this.unbindService(conn);} }
  • activity_main.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical"><Buttonandroid:id="@+id/get"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_gravity="center_horizontal"android:text="@string/get" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/person" /><EditTextandroid:id="@+id/person"android:layout_width="fill_parent"android:layout_height="wrap_content"android:hint="@string/person"/><ListViewandroid:id="@+id/show"android:layout_width="fill_parent"android:layout_height="fill_parent"android:cacheColorHint="#00000000"android:textColor="#ffffff" /> </LinearLayout>

注:當應用的版本是Android 11(API 級別 30)或更高版本時,需要在AndroidManifest.xml文件中添加<queries>,該標簽的具體應用可見<queries>標簽解析章節(jié),如下所示:

<queries><package android:name="com.example.aidlparcelableservertest"/></queries>

或:

<queries><intent><action android:name="PARCELABLE_SERVICE"/></intent></queries>
  • 運行程序:

2.4. 接口文件分析

接口中內(nèi)容如下:

/** This file is auto-generated. DO NOT MODIFY.*/ package com.example.aidlparcelableservertest;public interface IPet extends android.os.IInterface {/*** Default implementation for IPet.*/public static class Default implements com.example.aidlparcelableservertest.IPet {// 定義一個Person對象作為傳入?yún)?shù)@Overridepublic java.util.List<com.example.aidlparcelableservertest.Pet> getPets(com.example.aidlparcelableservertest.Person owner) throws android.os.RemoteException {return null;}@Overridepublic android.os.IBinder asBinder() {return null;}}/*** Local-side IPC implementation stub class.*/public static abstract class Stub extends android.os.Binder implements com.example.aidlparcelableservertest.IPet {// binder唯一標識// 不同的進程之間,通過序列化傳遞DESCRIPTOR來找到對應的Binder// 相同進程,也需要DESCRIPTOR才能找到對應的Binderprivate static final java.lang.String DESCRIPTOR = "com.example.aidlparcelableservertest.IPet";/*** Construct the stub at attach it to the interface.*/// 將interface提供出去,這樣當同一進程其他位置執(zhí)行IBinder.queryLocalInterface的時候就可以獲取到這個Binderpublic Stub() {// 初始化時調(diào)用attachInterface(),相同進程調(diào)用queryLocalInterface()時才能找到該Binderthis.attachInterface(this, DESCRIPTOR);}/*** Cast an IBinder object into an com.example.aidlparcelableservertest.IPet interface,* generating a proxy if needed.*/// 接收服務端的IBinder(通常是傳遞給客戶端onServiceConnected() 回調(diào)方法的參數(shù)),并返回Stub接口的實例。public static com.example.aidlparcelableservertest.IPet asInterface(android.os.IBinder obj) {if ((obj == null)) {return null;}// 調(diào)用attachInterface()方法,返回該Binderandroid.os.IInterface iin = obj.queryLocalInterface(DESCRIPTOR);// server和client同一進程,直接通過queryLocalInterface(DESCRIPTOR)找到Binder返回Stub對象if (((iin != null) && (iin instanceof com.example.aidlparcelableservertest.IPet))) {return ((com.example.aidlparcelableservertest.IPet) iin);}// server和client不同進程,返回一個封裝后的Proxy對象return new com.example.aidlparcelableservertest.IPet.Stub.Proxy(obj);}@Overridespublic android.os.IBinder asBinder() {// 返回stub的Binder對象return this;}// 服務端// 運行在服務器端中 Binder 線程池中,客戶端發(fā)起跨進程請求時,遠程請求會通過系統(tǒng)底層封裝后交給此方法來處理// 方法調(diào)用由 onTransact() 代碼分派,該代碼通常基于接口中的方法索引。@Overridepublic boolean onTransact(int code, android.os.Parcel data, android.os.Parcel reply, int flags) throws android.os.RemoteException {java.lang.String descriptor = DESCRIPTOR;switch (code) {case INTERFACE_TRANSACTION: {reply.writeString(descriptor);return true;}case TRANSACTION_getPets: {// 需要傳遞DESCRIPTOR,到另一個進程可以找到對應的Binderdata.enforceInterface(descriptor);com.example.aidlparcelableservertest.Person _arg0;if ((0 != data.readInt())) {// 讀取CREATOR中參數(shù)_arg0 = com.example.aidlparcelableservertest.Person.CREATOR.createFromParcel(data);} else {_arg0 = null;}// 運行getPets()方法獲取結(jié)果java.util.List<com.example.aidlparcelableservertest.Pet> _result = this.getPets(_arg0);reply.writeNoException();// 寫入返回值reply.writeTypedList(_result);// 在執(zhí)行完 return true 之后系統(tǒng)將會把 reply 流傳回客戶端,只是過程被隱藏了return true;}default: {return super.onTransact(code, data, reply, flags);}}}// 客戶端private static class Proxy implements com.example.aidlparcelableservertest.IPet {private android.os.IBinder mRemote;Proxy(android.os.IBinder remote) {// Proxy在初始化時引用server的IBindermRemote = remote;}@Overridepublic android.os.IBinder asBinder() {// 返回當前Proxy的Binderreturn mRemote;}public java.lang.String getInterfaceDescriptor() {return DESCRIPTOR;}// 定義一個Person對象作為傳入?yún)?shù)@Overridepublic java.util.List<com.example.aidlparcelableservertest.Pet> getPets(com.example.aidlparcelableservertest.Person owner) throws android.os.RemoteException {// _data存儲流向服務端的數(shù)據(jù)流android.os.Parcel _data = android.os.Parcel.obtain();// _reply存儲流回客戶端的數(shù)據(jù)流android.os.Parcel _reply = android.os.Parcel.obtain();java.util.List<com.example.aidlparcelableservertest.Pet> _result;try {// 需要傳遞DESCRIPTOR,到另一個進程可以找到對應的Binder_data.writeInterfaceToken(DESCRIPTOR);if ((owner != null)) {_data.writeInt(1);owner.writeToParcel(_data, 0);} else {_data.writeInt(0);}// 通過調(diào)用mRemote.transact()來觸發(fā)遠端Stub的onTransact() // 0:數(shù)據(jù)雙向流通,1:數(shù)據(jù)從服務端流向客戶端boolean _status = mRemote.transact(Stub.TRANSACTION_getPets, _data, _reply, 0);if (!_status && getDefaultImpl() != null) {return getDefaultImpl().getPets(owner);}_reply.readException();// 從_reply中取出服務端執(zhí)行方法的結(jié)果_result = _reply.createTypedArrayList(com.example.aidlparcelableservertest.Pet.CREATOR);} finally {_reply.recycle();_data.recycle();}// 將結(jié)果返回return _result;}public static com.example.aidlparcelableservertest.IPet sDefaultImpl;}// getPets的調(diào)用id 調(diào)用IPC方法的唯一id// Stub.onTransact()中會通過TRANSACTION_getPets來對應執(zhí)行getPets()方法的邏輯。// Proxy調(diào)用transact的時候,也是通過傳遞TRANSACTION_getPets,來標識自己想要執(zhí)行的邏輯。static final int TRANSACTION_getPets = (android.os.IBinder.FIRST_CALL_TRANSACTION + 0);public static boolean setDefaultImpl(com.example.aidlparcelableservertest.IPet impl) {// Only one user of this interface can use this function// at a time. This is a heuristic to detect if two different// users in the same process use this function.if (Stub.Proxy.sDefaultImpl != null) {throw new IllegalStateException("setDefaultImpl() called twice");}if (impl != null) {Stub.Proxy.sDefaultImpl = impl;return true;}return false;}public static com.example.aidlparcelableservertest.IPet getDefaultImpl() {return Stub.Proxy.sDefaultImpl;}}// 定義一個Person對象作為傳入?yún)?shù)public java.util.List<com.example.aidlparcelableservertest.Pet> getPets(com.example.aidlparcelableservertest.Person owner) throws android.os.RemoteException; }
  • DESCRIPTOR:Binder 中唯一的標識,自動生成時用當前 Binder 類名表示;
  • TRANSACTION_getPets:聲明的整型的 id 用于標識在 transact 過程中客戶端中請求的到底是自身還是代理的getPets()方法;
  • asInterface(android.os.IBinder obj) {...}:將服務端的 Binder 對象按是否同一進程轉(zhuǎn)換成客戶端所需 AIDL 接口類型的對象, 客戶端和服務器在同一進程中,返回的是服務端 Stub 本身,否則就返回系統(tǒng)封裝后的 Stub.proxy 對象;
  • onTransact(int code, android.os.Parcel data, android.os.Parcel reply, int flags) {...}:運行在服務器端中 Binder 線程池中,客戶端發(fā)起跨進程請求時,遠程請求會通過系統(tǒng)底層封裝后交給此方法來處理:通過 code 確定客戶端的方法,再從 data 中取得參數(shù) (如果存在參數(shù)的話),然后執(zhí)行在服務端的目標方法,執(zhí)行完成之后,向 reply 中寫入返回值 (如果客戶端中需要返回值的話);
  • Proxy.getPets(com.example.aidlparcelableservertest.Person owner){...} :在客戶端中運行,當客戶端遠程調(diào)用此方法時,內(nèi)部實現(xiàn)方法如下:先創(chuàng)建所需的輸入型 Parcel 對象_data, 輸出型 Parcel 對象 _replay 和返回值對象 _result。先將需求參數(shù)寫入data 中,接著調(diào)用 transact() 方法發(fā)起遠程調(diào)用 (RPC) 請求,同時當前線程會掛起,然后服務端的 onTransact() 方法會被調(diào)用,當 RPC 方法結(jié)束返回后,當前線程從掛起狀態(tài)變成重新運行狀態(tài),并從reply中取出 RPC 過程的返回結(jié)果,最后返回 _reply 中的數(shù)據(jù)。

基本步驟如下:

  • Client通過ServiceConnection()獲取到Server的Binder,并且封裝成一個Proxy;
  • 通過Proxy來同步調(diào)用IPC方法。同時通過Parcel將參數(shù)傳給Binder,最終觸發(fā)Binder的transact()方法;
  • Binder的transact()方法最終會觸發(fā)到Server上Stub的onTransact()方法;
  • Server上Stub的onTransact()方法中,會先從Parcel中解析中參數(shù),然后將參數(shù)帶入真正的方法中執(zhí)行,然后將結(jié)果寫入Parcel后傳回;
  • Client的IPC方法中,執(zhí)行Binder的transact()時,是阻塞等待的。一直到Server邏輯執(zhí)行結(jié)束后才會繼續(xù)執(zhí)行;
  • 當Server返回結(jié)果后,Client從Parcel中取出返回值,于是實現(xiàn)了一次IPC調(diào)用。

bindService()->onBind()->onServiceConnected()->asInterface()->getPets()->transact()(Stub本身直接觸發(fā)該方法,代理是在Proxy.getPets()方法中觸發(fā))->onTransact()->返回結(jié)果

3. **<queries>**標簽解析

當創(chuàng)建的應用以 Android 11(API 級別 30)或更高版本為目標平臺時,在默認情況下,系統(tǒng)只會讓部分應用可見,而隱藏其他應用,以鼓勵最小權(quán)限原則并保障用戶的隱私安全。但是,應用的可見與否會影響到提供其他應用相關信息的方法的返回結(jié)果,如:queryIntentActivities()。此外,還會影響與其他應用的顯式交互,例如啟動另一個應用的服務。

3.1. 自動可見的應用

在 Android 11及以上版本,無需聲明\<queries>便可進行交互的應用如下:

  • 我們自己的應用;
  • 實現(xiàn) Android 核心功能的某些系統(tǒng)軟件包;
  • 安裝了我們自己應用的應用;
  • 使用startActivityForResult()方法啟動Activity的任何應用;
  • 啟動或者綁定到我們自己的應用中的某項服務的任何應用;
  • 訪問我們自己的應用中的ContentProvider的任何應用;
  • 具有ContentProvider的任何應用,其中我們自己的應用已被授予URI權(quán)限來訪問該ContentProvider;
    • 讀取權(quán)限: FLAG_GRANT_READ_URI_PERMISSION
    • 寫入權(quán)限: FLAG_GRANT_WRITE_URI_PERMISSION
  • 我們自己的應用作為輸入法應用提供輸入,接收該輸入的任何應用;

此外,無論某一應用對我們自己的應用是否可見,我們都可以使用隱式或者顯示的intent來啟動該應用的 activity。

如需查看特定設備的完整軟件包列表,在該設備的終端中運行adb shell dumpsys package queries命令。在命令輸出中,找到forceQueryable部分,即包含該設備上對我們自己的應用可見的軟件包列表。如下圖所示:

3.2. 查詢應用

當創(chuàng)建的應用以 Android 11(API 級別 30)或更高版本為目標平臺,并且需要與非自動可見的應用進行交互,則需要在該應用的AndroidManifest.xml清單文件中添加<queries>。在<queries>中,可以通過軟件包名稱package、intent簽名或提供程序授權(quán)provide來查詢特定軟件包并與之交互。

3.2.1. 按軟件包名稱查詢特定軟件包及與之交互

當知道要查詢或與之交互的一組特定應用時,可以將其軟件包名稱添加到<queries>內(nèi)的一組<package>元素中,如下所示:

<manifest package="com.example.game"><queries><package android:name="com.example.store" /><package android:name="com.example.services" /></queries>... </manifest>

3.2.2. 按 intent 過濾器查詢應用及與之交互

當需要查詢一組具有特定用途的應用但卻并不知道其具體的軟件包名稱時,可以在<queries>中按intent過濾器進行查詢,使創(chuàng)建的應用能夠查詢到匹配<intent-filter>的應用,如下所示:

<manifest package="com.example.game"><queries><intent><action android:name="android.intent.action.SEND" /><data android:mimeType="image/jpeg" /></intent></queries>... </manifest>

<intent>元素的限制:

  • 至少要有一個<action>或者一個<data>元素,各屬性至多只有一個;
  • <data>中不能使用 path、pathPrefix、pathPattern 以及 port 屬性,否則會被當作通用通配符*;
  • <data>中不能使用<mimeGroup>屬性;
  • 在單個<intent>的<data>中,mimeType、scheme以及host最多使用一次,但可以在多個<data>之間分配這些屬性,也可以在單個<data>中使用這些屬性。

<intent> 支持通用通配符*作為以下屬性的值:

  • <action>元素的 name 屬性;
  • <data>元素的 mimeType 屬性的子類型 (image/*);
  • <data>元素的 mimeType 屬性的類型和子類型 (*/*);
  • <data>元素的 scheme 屬性;
  • <data>元素的 host 屬性。

除非前面列表中另有說明,否則系統(tǒng)不支持混合使用文本和通配符,如 prefix*。

3.2.3. 在給定提供程序授權(quán)的情況下查詢應用及與之交互

當需要查詢ContentProvider但不知道具體的軟件包名時,可以在 <provider> 元素中聲明該提供程序的授權(quán),如下所示:

<manifest package="com.example.suite.enterprise"><queries><provider android:authorities="com.example.settings.files" /></queries>... </manifest>

可以在單個 <queries> 元素中聲明多項提供程序授權(quán):

  • 在單個 <provider> 元素中,聲明以英文分號分隔的授權(quán)列表;
  • 在同一個<queries>元素中添加多個 <provider>元素 ,在每個 <provider>元素中,聲明單項授權(quán)或以英文分號分隔的授權(quán)列表。

3.2.4. 查詢所有應用及與之交互

在極少數(shù)情況下,我們創(chuàng)建的應用可能需要查詢設備上的所有已安裝的應用。此時,我們可以通過QUERY_ALL_PACKAGES權(quán)限以查詢其他所有已安裝應用,如下所示:

<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>

3.2.5. parseQueries方法解析

/*** 根據(jù)<queries>標簽中的內(nèi)容進行解析** @param input:與輸入類型無關的,用來被轉(zhuǎn)換為ParseResult輸出類型的輸入源參數(shù)* @param pkg:被解析的包* @param res:用于訪問應用程序資源的類* @param parser:返回讀取的XML資源* @return ParseResult:ParserInput的輸出端*/ private static ParseResult<ParsingPackage> parseQueries(ParseInput input, ParsingPackage pkg,Resources res, XmlResourceParser parser) throws IOException, XmlPullParserException {final int depth = parser.getDepth();int type;// 判斷是否還可以讀取parser中的資源while ((type = parser.next()) != XmlPullParser.END_DOCUMENT&& (type != XmlPullParser.END_TAG || parser.getDepth() > depth)) {// 初始時刻 type = START_TAGif (type != XmlPullParser.START_TAG) {continue;}// 當queries中標簽使用intent時if (parser.getName().equals("intent")) {// 對Intent中的action、category以及data信息進行解析,解析結(jié)果存放在result中ParseResult<ParsedIntentInfo> result = ParsedIntentInfoUtils.parseIntentInfo(null,pkg, res, parser, true /*allowGlobs*/, true /*allowAutoVerify*/, input);if (result.isError()) {return input.error(result);}// 獲取含有解析的action、category以及data等信息的ParsedIntentInfo對象intentInfoParsedIntentInfo intentInfo = result.getResult();Uri data = null;String dataType = null;String host = null;// 分別獲取action、data scheme(為空返回0)、data types(為空返回0)、Host的長度final int numActions = intentInfo.countActions();final int numSchemes = intentInfo.countDataSchemes();final int numTypes = intentInfo.countDataTypes();final int numHosts = intentInfo.getHosts().length;// 每個intent至少要有一個action或者一個data,各屬性至多只有一個if ((numSchemes == 0 && numTypes == 0 && numActions == 0)) {return input.error("intent tags must contain either an action or data.");}if (numActions > 1) {return input.error("intent tag may have at most one action.");}if (numTypes > 1) {return input.error("intent tag may have at most one data type.");}if (numSchemes > 1) {return input.error("intent tag may have at most one data scheme.");}if (numHosts > 1) {return input.error("intent tag may have at most one data host.");}Intent intent = new Intent();// private ArrayList<String> mCategories = null;// 將intentInfo獲取的category屬性添加到intent對象中for (int i = 0, max = intentInfo.countCategories(); i < max; i++) {intent.addCategory(intentInfo.getCategory(i));}// host屬性賦值if (numHosts == 1) {host = intentInfo.getHosts()[0];}// data屬性賦值if (numSchemes == 1) {data = new Uri.Builder().scheme(intentInfo.getDataScheme(0)).authority(host)// /*.path(IntentFilter.WILDCARD_PATH).build();}// dataType屬性賦值if (numTypes == 1) {dataType = intentInfo.getDataType(0);// The dataType may have had the '/' removed for the dynamic mimeType feature.// If we detect that case, we add the * back.if (!dataType.contains("/")) {dataType = dataType + "/*";}// data設置默認值if (data == null) {data = new Uri.Builder().scheme("content")// */*.authority(IntentFilter.WILDCARD).path(IntentFilter.WILDCARD_PATH).build();}}intent.setDataAndType(data, dataType);if (numActions == 1) {intent.setAction(intentInfo.getAction(0));}// 將intent添加到空List<Intent> queriesIntents中pkg.addQueriesIntent(intent);} else if (parser.getName().equals("package")) { // 當queries中標簽使用package時// 獲取包名final TypedArray sa = res.obtainAttributes(parser,R.styleable.AndroidManifestQueriesPackage);final String packageName = sa.getNonConfigurationString(R.styleable.AndroidManifestQueriesPackage_name, 0);if (TextUtils.isEmpty(packageName)) {return input.error("Package name is missing from package tag.");}// 將packageName添加到空List<String> queriesPackages中pkg.addQueriesPackage(packageName.intern());} else if (parser.getName().equals("provider")) { // 當queries中標簽使用provider時final TypedArray sa = res.obtainAttributes(parser,R.styleable.AndroidManifestQueriesProvider);try {// 獲取authorities屬性final String authorities = sa.getNonConfigurationString(R.styleable.AndroidManifestQueriesProvider_authorities, 0);if (TextUtils.isEmpty(authorities)) {return input.error(PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED,"Authority missing from provider tag.");}// 將多個authorities以";"拆分并加入到pkg中StringTokenizer authoritiesTokenizer = new StringTokenizer(authorities, ";");while (authoritiesTokenizer.hasMoreElements()) {// 將authorities添加到空Set<String> queriesProviders中pkg.addQueriesProvider(authoritiesTokenizer.nextToken());}} finally {sa.recycle();}}}return input.success(pkg); }

總結(jié)

以上是生活随笔為你收集整理的跨进程通信机制的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

国产黑色丝袜在线播放 | 黑人巨大精品欧美一区二区 | 国产真实伦对白全集 | 久久精品成人欧美大片 | 男人和女人高潮免费网站 | 好男人社区资源 | 国产精品资源一区二区 | 亚洲成av人在线观看网址 | 欧美阿v高清资源不卡在线播放 | 久久精品女人的天堂av | 中文精品久久久久人妻不卡 | 人妻少妇精品久久 | 少妇激情av一区二区 | 亚洲乱码国产乱码精品精 | 久久zyz资源站无码中文动漫 | 久久伊人色av天堂九九小黄鸭 | 久久久中文久久久无码 | 久久综合狠狠综合久久综合88 | 中国大陆精品视频xxxx | 伊人久久大香线焦av综合影院 | 亚洲成色在线综合网站 | 俺去俺来也在线www色官网 | 国产精品多人p群无码 | 高潮毛片无遮挡高清免费 | 久久综合网欧美色妞网 | 欧美日本免费一区二区三区 | 少妇人妻偷人精品无码视频 | 日韩av无码一区二区三区不卡 | 日日碰狠狠躁久久躁蜜桃 | 亚洲第一无码av无码专区 | 装睡被陌生人摸出水好爽 | 特大黑人娇小亚洲女 | 国产9 9在线 | 中文 | 美女极度色诱视频国产 | 亚洲人成影院在线无码按摩店 | 亚洲成a人片在线观看日本 | 中文无码精品a∨在线观看不卡 | av无码久久久久不卡免费网站 | 国产精品亚洲一区二区三区喷水 | 在线视频网站www色 | 午夜精品一区二区三区在线观看 | 又粗又大又硬毛片免费看 | 久久精品视频在线看15 | 国产真实乱对白精彩久久 | 无码人妻av免费一区二区三区 | 无码一区二区三区在线 | 日韩人妻无码一区二区三区久久99 | 精品无码成人片一区二区98 | 亚洲欧美日韩国产精品一区二区 | 久久成人a毛片免费观看网站 | 亚洲无人区一区二区三区 | 日日天干夜夜狠狠爱 | 日本肉体xxxx裸交 | 女人和拘做爰正片视频 | 人人妻人人澡人人爽欧美一区 | 国产激情无码一区二区 | 国产sm调教视频在线观看 | 人妻尝试又大又粗久久 | 久久视频在线观看精品 | 成人精品视频一区二区 | 欧美老妇与禽交 | 久久综合久久自在自线精品自 | 人妻aⅴ无码一区二区三区 | 国产精品视频免费播放 | 亚洲另类伦春色综合小说 | 欧美日韩综合一区二区三区 | 国产成人人人97超碰超爽8 | 奇米影视888欧美在线观看 | 自拍偷自拍亚洲精品10p | 粉嫩少妇内射浓精videos | 亚洲一区二区观看播放 | 人妻互换免费中文字幕 | 高潮喷水的毛片 | 亚洲精品鲁一鲁一区二区三区 | 亚洲人成无码网www | 人人妻人人澡人人爽精品欧美 | 亚洲 激情 小说 另类 欧美 | 偷窥村妇洗澡毛毛多 | 日韩少妇内射免费播放 | 亚拍精品一区二区三区探花 | 国内精品人妻无码久久久影院蜜桃 | www国产精品内射老师 | 成熟人妻av无码专区 | 7777奇米四色成人眼影 | 奇米影视888欧美在线观看 | 樱花草在线播放免费中文 | 一区二区三区乱码在线 | 欧洲 | 妺妺窝人体色www婷婷 | 成熟人妻av无码专区 | 亚洲精品午夜无码电影网 | 亚洲熟妇色xxxxx亚洲 | 中文字幕无线码免费人妻 | 久久国产精品二国产精品 | 成人免费视频视频在线观看 免费 | 欧洲精品码一区二区三区免费看 | 国产成人综合色在线观看网站 | 激情人妻另类人妻伦 | 最近的中文字幕在线看视频 | 久久国语露脸国产精品电影 | 4hu四虎永久在线观看 | 亚洲色欲色欲欲www在线 | 又大又硬又黄的免费视频 | 欧美35页视频在线观看 | 无码任你躁久久久久久久 | 亚洲精品国偷拍自产在线麻豆 | 日本爽爽爽爽爽爽在线观看免 | 牲交欧美兽交欧美 | 亚洲aⅴ无码成人网站国产app | 男人的天堂2018无码 | 高潮毛片无遮挡高清免费 | 亚洲一区二区三区无码久久 | 午夜福利电影 | 3d动漫精品啪啪一区二区中 | 国产免费久久精品国产传媒 | 亚洲熟女一区二区三区 | 精品国产乱码久久久久乱码 | 999久久久国产精品消防器材 | 沈阳熟女露脸对白视频 | 大肉大捧一进一出好爽视频 | 国产av久久久久精东av | 天天拍夜夜添久久精品 | 99久久亚洲精品无码毛片 | 欧美野外疯狂做受xxxx高潮 | 伊人久久大香线蕉午夜 | 精品亚洲成av人在线观看 | 欧美国产日韩久久mv | 一区二区三区乱码在线 | 欧洲 | 欧美猛少妇色xxxxx | 国产疯狂伦交大片 | 久久无码中文字幕免费影院蜜桃 | 中文字幕 人妻熟女 | 国产绳艺sm调教室论坛 | 丰满人妻精品国产99aⅴ | 免费国产成人高清在线观看网站 | 欧洲熟妇精品视频 | 久久婷婷五月综合色国产香蕉 | 亚洲人成无码网www | 国产成人精品三级麻豆 | 麻豆国产丝袜白领秘书在线观看 | 性欧美疯狂xxxxbbbb | 国产成人综合美国十次 | 蜜桃视频韩日免费播放 | 国产偷国产偷精品高清尤物 | 爽爽影院免费观看 | 精品乱子伦一区二区三区 | 亚洲精品无码国产 | 四十如虎的丰满熟妇啪啪 | 东京热一精品无码av | 国产9 9在线 | 中文 | 无码吃奶揉捏奶头高潮视频 | 亚洲精品一区二区三区在线观看 | 国产热a欧美热a在线视频 | 国产免费无码一区二区视频 | 美女极度色诱视频国产 | 亚洲色欲色欲天天天www | 熟女俱乐部五十路六十路av | 在线成人www免费观看视频 | 熟妇人妻无码xxx视频 | 国产精品理论片在线观看 | 精品久久久中文字幕人妻 | 十八禁真人啪啪免费网站 | 日本精品久久久久中文字幕 | 日本护士毛茸茸高潮 | 两性色午夜视频免费播放 | 免费男性肉肉影院 | 国产性生交xxxxx无码 | 国产乡下妇女做爰 | 性色av无码免费一区二区三区 | 欧美成人高清在线播放 | 色爱情人网站 | 综合人妻久久一区二区精品 | 色婷婷综合激情综在线播放 | 久热国产vs视频在线观看 | 综合网日日天干夜夜久久 | 无套内谢老熟女 | 大乳丰满人妻中文字幕日本 | 国产av一区二区三区最新精品 | 无人区乱码一区二区三区 | 国产精品丝袜黑色高跟鞋 | 成人性做爰aaa片免费看不忠 | 亚洲 激情 小说 另类 欧美 | 全黄性性激高免费视频 | 国产精品久久久久无码av色戒 | 亚洲 高清 成人 动漫 | 夜先锋av资源网站 | 2019nv天堂香蕉在线观看 | 亚洲国产精品毛片av不卡在线 | 国产亚洲人成在线播放 | 亚洲gv猛男gv无码男同 | 中文字幕日产无线码一区 | 我要看www免费看插插视频 | 99久久婷婷国产综合精品青草免费 | 妺妺窝人体色www婷婷 | 婷婷五月综合缴情在线视频 | 国产精品国产自线拍免费软件 | 天天拍夜夜添久久精品大 | 丁香花在线影院观看在线播放 | 18无码粉嫩小泬无套在线观看 | 沈阳熟女露脸对白视频 | 久久亚洲精品中文字幕无男同 | 国产精品久久久午夜夜伦鲁鲁 | 亚洲国产欧美日韩精品一区二区三区 | 国产精品永久免费视频 | 国产精品美女久久久网av | 女人和拘做爰正片视频 | 中文精品久久久久人妻不卡 | 日本免费一区二区三区最新 | 扒开双腿吃奶呻吟做受视频 | 久久久av男人的天堂 | 亚洲 a v无 码免 费 成 人 a v | 人妻天天爽夜夜爽一区二区 | 国产精品香蕉在线观看 | 亚洲成色在线综合网站 | 中文精品无码中文字幕无码专区 | 久久久久se色偷偷亚洲精品av | 在线观看欧美一区二区三区 | 国产成人无码av片在线观看不卡 | 特大黑人娇小亚洲女 | 奇米影视7777久久精品人人爽 | 中文字幕乱码人妻二区三区 | 性欧美牲交在线视频 | 成人欧美一区二区三区 | 亚洲一区二区三区国产精华液 | 偷窥日本少妇撒尿chinese | 无码国产激情在线观看 | 国产av剧情md精品麻豆 | 男女猛烈xx00免费视频试看 | 久久国产精品二国产精品 | 久久综合九色综合欧美狠狠 | 国产精品欧美成人 | 九月婷婷人人澡人人添人人爽 | 欧美丰满熟妇xxxx性ppx人交 | 国产av无码专区亚洲a∨毛片 | 亚洲综合精品香蕉久久网 | 黑人巨大精品欧美一区二区 | 亚洲中文字幕av在天堂 | 国产乱人伦偷精品视频 | 2019午夜福利不卡片在线 | 亚洲春色在线视频 | 日韩 欧美 动漫 国产 制服 | 久久久无码中文字幕久... | 在线播放亚洲第一字幕 | 亚洲日韩av一区二区三区四区 | 欧美自拍另类欧美综合图片区 | 狠狠色噜噜狠狠狠狠7777米奇 | 久久天天躁狠狠躁夜夜免费观看 | 国产精品美女久久久网av | 国产成人精品必看 | 人妻无码久久精品人妻 | 中文字幕无码免费久久9一区9 | 精品无码国产一区二区三区av | 中文毛片无遮挡高清免费 | 麻豆人妻少妇精品无码专区 | 漂亮人妻洗澡被公强 日日躁 | 天堂а√在线中文在线 | 久久久久亚洲精品男人的天堂 | 中国大陆精品视频xxxx | 伊人久久大香线蕉午夜 | 婷婷五月综合激情中文字幕 | 99视频精品全部免费免费观看 | 国产区女主播在线观看 | 欧美精品一区二区精品久久 | 人人妻人人澡人人爽精品欧美 | 亚洲国精产品一二二线 | 天堂一区人妻无码 | 久久人人97超碰a片精品 | 免费观看激色视频网站 | 国产无遮挡又黄又爽又色 | 伊在人天堂亚洲香蕉精品区 | 在线视频网站www色 | 国内精品久久久久久中文字幕 | 国产一区二区三区日韩精品 | 日本精品人妻无码77777 天堂一区人妻无码 | 天下第一社区视频www日本 | 国产精品沙发午睡系列 | 免费中文字幕日韩欧美 | 国产一区二区三区精品视频 | 精品无码av一区二区三区 | 国产精品a成v人在线播放 | 99久久无码一区人妻 | 亚洲精品国产第一综合99久久 | 国产亚洲精品久久久久久大师 | 久久国产精品偷任你爽任你 | 99久久久国产精品无码免费 | 久久成人a毛片免费观看网站 | 伦伦影院午夜理论片 | 亚洲中文字幕在线无码一区二区 | 国产精品-区区久久久狼 | 免费无码肉片在线观看 | 天天拍夜夜添久久精品 | 亚洲欧美日韩综合久久久 | 日日干夜夜干 | 欧美性猛交xxxx富婆 | 国产又爽又猛又粗的视频a片 | 极品嫩模高潮叫床 | 少妇激情av一区二区 | 免费无码肉片在线观看 | 国产精品va在线观看无码 | 中国女人内谢69xxxxxa片 | 国产精品资源一区二区 | 中文字幕无码免费久久99 | 精品国产麻豆免费人成网站 | 久久无码专区国产精品s | 美女毛片一区二区三区四区 | 亚洲男人av香蕉爽爽爽爽 | 国内丰满熟女出轨videos | 日日碰狠狠丁香久燥 | 精品无码一区二区三区的天堂 | 亚洲色偷偷男人的天堂 | 大乳丰满人妻中文字幕日本 | 亚洲日韩av片在线观看 | 成在人线av无码免观看麻豆 | 亚洲熟妇色xxxxx亚洲 | 亚洲乱码日产精品bd | 男人的天堂2018无码 | 亚洲人成网站色7799 | 扒开双腿疯狂进出爽爽爽视频 | 日韩人妻无码一区二区三区久久99 | 领导边摸边吃奶边做爽在线观看 | av无码不卡在线观看免费 | 一本色道婷婷久久欧美 | 欧美亚洲日韩国产人成在线播放 | 国产精品手机免费 | 亚洲无人区午夜福利码高清完整版 | 国产欧美熟妇另类久久久 | 精品国产一区二区三区av 性色 | 国产综合久久久久鬼色 | 日日摸夜夜摸狠狠摸婷婷 | 国产成人久久精品流白浆 | 国产超碰人人爽人人做人人添 | 精品久久综合1区2区3区激情 | 少妇久久久久久人妻无码 | 无遮挡啪啪摇乳动态图 | 国产免费无码一区二区视频 | 欧美精品免费观看二区 | 国产精品久久久久影院嫩草 | 超碰97人人做人人爱少妇 | 欧美日韩视频无码一区二区三 | 男人的天堂2018无码 | 无码人妻久久一区二区三区不卡 | 国产色精品久久人妻 | 妺妺窝人体色www在线小说 | 国产乱人伦偷精品视频 | 巨爆乳无码视频在线观看 | 娇妻被黑人粗大高潮白浆 | 色偷偷人人澡人人爽人人模 | 亚洲gv猛男gv无码男同 | 国产av一区二区精品久久凹凸 | 久精品国产欧美亚洲色aⅴ大片 | 久久无码专区国产精品s | 国产精品99爱免费视频 | 亚洲综合另类小说色区 | 免费人成在线视频无码 | 亚洲精品一区二区三区在线 | 无人区乱码一区二区三区 | 国产口爆吞精在线视频 | 又粗又大又硬毛片免费看 | 最近免费中文字幕中文高清百度 | 精品国产福利一区二区 | 人妻少妇精品久久 | 亚洲伊人久久精品影院 | 久久精品女人的天堂av | 亚洲成av人在线观看网址 | 内射巨臀欧美在线视频 | 亚洲日本一区二区三区在线 | 欧洲欧美人成视频在线 | 午夜精品一区二区三区在线观看 | 日本肉体xxxx裸交 | 久久综合久久自在自线精品自 | 精品日本一区二区三区在线观看 | 女高中生第一次破苞av | 99久久婷婷国产综合精品青草免费 | 日韩人妻少妇一区二区三区 | 精品国偷自产在线 | 67194成是人免费无码 | 粗大的内捧猛烈进出视频 | 男女猛烈xx00免费视频试看 | 亚洲精品午夜国产va久久成人 | 少妇性俱乐部纵欲狂欢电影 | 无码人妻久久一区二区三区不卡 | 真人与拘做受免费视频 | 亚洲日韩乱码中文无码蜜桃臀网站 | 久久99精品久久久久久 | 久久亚洲国产成人精品性色 | 精品 日韩 国产 欧美 视频 | 无码人妻av免费一区二区三区 | 国产成人无码av在线影院 | 国产av一区二区三区最新精品 | 久久久无码中文字幕久... | 无码播放一区二区三区 | 成人动漫在线观看 | 亚洲国产精品无码久久久久高潮 | 老熟女重囗味hdxx69 | 四十如虎的丰满熟妇啪啪 | 少妇被黑人到高潮喷出白浆 | 国产乱人偷精品人妻a片 | 秋霞成人午夜鲁丝一区二区三区 | 嫩b人妻精品一区二区三区 | 国产熟女一区二区三区四区五区 | 成人动漫在线观看 | 日日鲁鲁鲁夜夜爽爽狠狠 | 成熟人妻av无码专区 | 亚洲一区二区三区含羞草 | 国产三级久久久精品麻豆三级 | 丰满少妇高潮惨叫视频 | 国内精品人妻无码久久久影院蜜桃 | 久久久久久av无码免费看大片 | 丝袜 中出 制服 人妻 美腿 | 久久久av男人的天堂 | 婷婷综合久久中文字幕蜜桃三电影 | 国产情侣作爱视频免费观看 | 国产精品香蕉在线观看 | 国产精品第一区揄拍无码 | 精品 日韩 国产 欧美 视频 | 国内精品久久毛片一区二区 | 色五月五月丁香亚洲综合网 | 乌克兰少妇xxxx做受 | 国产在线无码精品电影网 | 宝宝好涨水快流出来免费视频 | 99精品国产综合久久久久五月天 | 精品乱子伦一区二区三区 | 久久久www成人免费毛片 | 午夜精品一区二区三区在线观看 | 亚洲精品综合五月久久小说 | 久久亚洲日韩精品一区二区三区 | 欧美日韩一区二区综合 | 99久久99久久免费精品蜜桃 | 亚洲国产av精品一区二区蜜芽 | 人人妻人人澡人人爽精品欧美 | 人人妻在人人 | 精品成在人线av无码免费看 | 激情内射日本一区二区三区 | 亚洲欧美国产精品久久 | а√天堂www在线天堂小说 | 中文字幕乱码中文乱码51精品 | 久久久久国色av免费观看性色 | 好屌草这里只有精品 | 无码午夜成人1000部免费视频 | 欧美自拍另类欧美综合图片区 | 亚洲国产欧美国产综合一区 | 高潮毛片无遮挡高清免费 | 亚洲精品综合一区二区三区在线 | 日本熟妇乱子伦xxxx | 国产无遮挡又黄又爽免费视频 | 人妻天天爽夜夜爽一区二区 | 国产午夜福利100集发布 | 国产女主播喷水视频在线观看 | 无码毛片视频一区二区本码 | 男人的天堂2018无码 | 97久久国产亚洲精品超碰热 | 又粗又大又硬又长又爽 | 97色伦图片97综合影院 | 亚洲爆乳大丰满无码专区 | 国语自产偷拍精品视频偷 | 俄罗斯老熟妇色xxxx | 久久国内精品自在自线 | 国产精品无码久久av | 亚洲精品鲁一鲁一区二区三区 | 狠狠色色综合网站 | 亚洲爆乳大丰满无码专区 | 国产精品久久久久影院嫩草 | 久久精品国产99久久6动漫 | 国产黄在线观看免费观看不卡 | 玩弄少妇高潮ⅹxxxyw | 色窝窝无码一区二区三区色欲 | 国产av人人夜夜澡人人爽麻豆 | 狠狠色丁香久久婷婷综合五月 | 中文字幕人妻无码一夲道 | 欧美 日韩 亚洲 在线 | 伊人久久大香线蕉亚洲 | 国产97在线 | 亚洲 | 人妻少妇被猛烈进入中文字幕 | 欧美亚洲国产一区二区三区 | 国产精品毛片一区二区 | 精品国产国产综合精品 | 男女作爱免费网站 | 中文字幕无码av激情不卡 | 中文字幕乱码亚洲无线三区 | 内射老妇bbwx0c0ck | 又大又紧又粉嫩18p少妇 | 久久精品无码一区二区三区 | 亚洲啪av永久无码精品放毛片 | 亚洲精品国产精品乱码视色 | 国内少妇偷人精品视频 | 精品国产一区二区三区av 性色 | 亚洲中文字幕无码中文字在线 | 综合人妻久久一区二区精品 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 中文字幕人妻丝袜二区 | 国产精品美女久久久久av爽李琼 | 亚洲精品一区二区三区大桥未久 | 久久久婷婷五月亚洲97号色 | 自拍偷自拍亚洲精品被多人伦好爽 | 国产精品久久久久7777 | 国产真实夫妇视频 | 日本乱人伦片中文三区 | 野外少妇愉情中文字幕 | 内射后入在线观看一区 | 国产精品久免费的黄网站 | 鲁一鲁av2019在线 | 日韩无码专区 | 国产卡一卡二卡三 | 国产做国产爱免费视频 | 精品无码国产一区二区三区av | 国产精品igao视频网 | 无码精品人妻一区二区三区av | 欧美精品免费观看二区 | 欧美乱妇无乱码大黄a片 | 国产在线aaa片一区二区99 | 99在线 | 亚洲 | 国产福利视频一区二区 | 偷窥村妇洗澡毛毛多 | 成人免费无码大片a毛片 | 骚片av蜜桃精品一区 | 色一情一乱一伦一区二区三欧美 | 亚洲综合久久一区二区 | 色狠狠av一区二区三区 | 免费人成在线观看网站 | 久久国内精品自在自线 | 亚洲精品中文字幕乱码 | 成人无码视频在线观看网站 | 天天躁日日躁狠狠躁免费麻豆 | 窝窝午夜理论片影院 | 成人免费视频一区二区 | 欧美人与牲动交xxxx | 青青草原综合久久大伊人精品 | 麻花豆传媒剧国产免费mv在线 | 人妻少妇精品久久 | 欧美国产日韩亚洲中文 | 久久久精品456亚洲影院 | 2020久久香蕉国产线看观看 | 国产肉丝袜在线观看 | 久久天天躁夜夜躁狠狠 | 色五月丁香五月综合五月 | 88国产精品欧美一区二区三区 | 老司机亚洲精品影院 | 国模大胆一区二区三区 | 国产精品无码mv在线观看 | 亚洲精品www久久久 | 全黄性性激高免费视频 | 国产乱人偷精品人妻a片 | 日本免费一区二区三区最新 | 熟女少妇在线视频播放 | 国产精品久久久久7777 | а天堂中文在线官网 | 中文久久乱码一区二区 | 人人妻人人澡人人爽精品欧美 | 丰满护士巨好爽好大乳 | 国产精品永久免费视频 | 久久aⅴ免费观看 | 99久久精品日本一区二区免费 | 伊人久久婷婷五月综合97色 | 国产亚洲精品久久久久久 | 亚洲综合精品香蕉久久网 | 无码人中文字幕 | 亚洲精品久久久久中文第一幕 | 夫妻免费无码v看片 | 国产亚洲人成a在线v网站 | 亚洲 激情 小说 另类 欧美 | 无码人妻精品一区二区三区下载 | 亚洲色大成网站www国产 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 亚洲国产精品一区二区第一页 | 装睡被陌生人摸出水好爽 | 久久久久亚洲精品中文字幕 | 水蜜桃亚洲一二三四在线 | 极品尤物被啪到呻吟喷水 | 亚洲欧美日韩成人高清在线一区 | av无码不卡在线观看免费 | 成熟女人特级毛片www免费 | 欧美老妇交乱视频在线观看 | 亚洲国精产品一二二线 | 国内揄拍国内精品少妇国语 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 激情内射亚州一区二区三区爱妻 | 无套内谢老熟女 | 麻花豆传媒剧国产免费mv在线 | 久久久国产一区二区三区 | 2019nv天堂香蕉在线观看 | 国内少妇偷人精品视频 | 亚洲综合久久一区二区 | av香港经典三级级 在线 | 国产午夜无码视频在线观看 | 97夜夜澡人人双人人人喊 | 5858s亚洲色大成网站www | 黑人粗大猛烈进出高潮视频 | 国产精品人人妻人人爽 | 色老头在线一区二区三区 | 精品无码一区二区三区的天堂 | 亚洲精品久久久久avwww潮水 | 免费无码肉片在线观看 | 亚欧洲精品在线视频免费观看 | v一区无码内射国产 | 亚洲一区二区三区四区 | 国产极品美女高潮无套在线观看 | 香港三级日本三级妇三级 | 日本熟妇浓毛 | 女人被爽到呻吟gif动态图视看 | 对白脏话肉麻粗话av | 在线观看国产一区二区三区 | 98国产精品综合一区二区三区 | 久久亚洲中文字幕无码 | 日日碰狠狠丁香久燥 | 国产香蕉尹人综合在线观看 | 强开小婷嫩苞又嫩又紧视频 | 一本久久伊人热热精品中文字幕 | 国产精品视频免费播放 | 欧美真人作爱免费视频 | 国精产品一品二品国精品69xx | 婷婷综合久久中文字幕蜜桃三电影 | 欧美性色19p | 色老头在线一区二区三区 | 成人精品一区二区三区中文字幕 | 亚洲 激情 小说 另类 欧美 | √天堂中文官网8在线 | 午夜理论片yy44880影院 | 日本在线高清不卡免费播放 | 久久久久久久女国产乱让韩 | 欧美猛少妇色xxxxx | 日本精品人妻无码免费大全 | 亚洲午夜久久久影院 | 亚洲色无码一区二区三区 | 国产av无码专区亚洲awww | 国产精品无码一区二区三区不卡 | 一二三四社区在线中文视频 | 欧美性黑人极品hd | 日韩少妇白浆无码系列 | 少妇性l交大片欧洲热妇乱xxx | 久久精品人妻少妇一区二区三区 | 国产人妻精品一区二区三区不卡 | 久久精品国产精品国产精品污 | 欧美乱妇无乱码大黄a片 | 亚洲天堂2017无码中文 | www成人国产高清内射 | 中文字幕人成乱码熟女app | 国产suv精品一区二区五 | 领导边摸边吃奶边做爽在线观看 | 国产黄在线观看免费观看不卡 | 丝袜人妻一区二区三区 | 国产成人综合在线女婷五月99播放 | 久久97精品久久久久久久不卡 | 国产精华av午夜在线观看 | 精品国产一区av天美传媒 | 国产激情综合五月久久 | 亚洲人成网站在线播放942 | 亚洲综合伊人久久大杳蕉 | 午夜不卡av免费 一本久久a久久精品vr综合 | 亚洲国产精品毛片av不卡在线 | 精品一区二区三区无码免费视频 | 色欲人妻aaaaaaa无码 | 丰满人妻一区二区三区免费视频 | 牛和人交xxxx欧美 | av无码久久久久不卡免费网站 | 狠狠综合久久久久综合网 | 久久久久国色av免费观看性色 | 国产精品久久国产三级国 | 国产真实乱对白精彩久久 | 人人妻人人藻人人爽欧美一区 | 老子影院午夜精品无码 | 日本一区二区三区免费高清 | aⅴ在线视频男人的天堂 | 成人性做爰aaa片免费看 | 成人精品天堂一区二区三区 | 18精品久久久无码午夜福利 | 3d动漫精品啪啪一区二区中 | 樱花草在线播放免费中文 | 2019午夜福利不卡片在线 | 一本久道久久综合狠狠爱 | 国产在线一区二区三区四区五区 | 亚洲精品欧美二区三区中文字幕 | 蜜桃av抽搐高潮一区二区 | 日欧一片内射va在线影院 | 亚洲精品成a人在线观看 | 欧美丰满熟妇xxxx | 无套内谢的新婚少妇国语播放 | 玩弄少妇高潮ⅹxxxyw | 麻豆国产丝袜白领秘书在线观看 | 蜜臀aⅴ国产精品久久久国产老师 | 乱人伦人妻中文字幕无码久久网 | 国产麻豆精品精东影业av网站 | 国产成人无码a区在线观看视频app | 欧美人与禽zoz0性伦交 | 国产午夜亚洲精品不卡 | 亚洲国产一区二区三区在线观看 | 日产国产精品亚洲系列 | 亚洲精品欧美二区三区中文字幕 | 人人妻在人人 | 久久无码中文字幕免费影院蜜桃 | 2020最新国产自产精品 | 国内精品久久久久久中文字幕 | 国产成人无码区免费内射一片色欲 | 给我免费的视频在线观看 | 国产精品久久久一区二区三区 | 色婷婷久久一区二区三区麻豆 | 日产精品99久久久久久 | 水蜜桃色314在线观看 | 美女毛片一区二区三区四区 | 少妇邻居内射在线 | 亚洲人成人无码网www国产 | 少妇久久久久久人妻无码 | 久久人人97超碰a片精品 | 色婷婷av一区二区三区之红樱桃 | 国产免费无码一区二区视频 | 小泽玛莉亚一区二区视频在线 | 老子影院午夜伦不卡 | 国产国语老龄妇女a片 | 午夜福利试看120秒体验区 | 小鲜肉自慰网站xnxx | 精品无码av一区二区三区 | 在线a亚洲视频播放在线观看 | 无套内谢老熟女 | 婷婷六月久久综合丁香 | 国产精品久久久久久无码 | 成人精品视频一区二区三区尤物 | 欧美精品免费观看二区 | 久久99精品国产.久久久久 | 精品国产成人一区二区三区 | 六月丁香婷婷色狠狠久久 | 99精品无人区乱码1区2区3区 | 九一九色国产 | 男女下面进入的视频免费午夜 | 欧美激情综合亚洲一二区 | 色窝窝无码一区二区三区色欲 | 中文字幕亚洲情99在线 | 国产精品高潮呻吟av久久 | 对白脏话肉麻粗话av | 欧美性生交xxxxx久久久 | 久久综合九色综合欧美狠狠 | 亚洲 欧美 激情 小说 另类 | 国产av无码专区亚洲a∨毛片 | 国产成人无码区免费内射一片色欲 | 国产做国产爱免费视频 | 国产区女主播在线观看 | 亚洲春色在线视频 | 天堂久久天堂av色综合 | 丰满人妻一区二区三区免费视频 | 精品国产国产综合精品 | 国产女主播喷水视频在线观看 | 国产黑色丝袜在线播放 | 国产福利视频一区二区 | 2020最新国产自产精品 | 久久zyz资源站无码中文动漫 | 亚洲国产精品美女久久久久 | 久久久久久av无码免费看大片 | 中文字幕无码av激情不卡 | 国产精品久久久久7777 | 激情人妻另类人妻伦 | 性欧美videos高清精品 | 中国女人内谢69xxxx | 高潮毛片无遮挡高清免费 | 午夜理论片yy44880影院 | 97人妻精品一区二区三区 | 国产精品久久久久7777 | 无套内谢老熟女 | 日日橹狠狠爱欧美视频 | 国产亚洲精品久久久久久 | 久久久久久久久蜜桃 | 无码纯肉视频在线观看 | 亚洲色大成网站www国产 | 中国女人内谢69xxxxxa片 | 少妇性l交大片欧洲热妇乱xxx | 台湾无码一区二区 | 国产av久久久久精东av | 狠狠色丁香久久婷婷综合五月 | 亚洲国产精品美女久久久久 | 无遮挡啪啪摇乳动态图 | 亚洲精品国产精品乱码视色 | 国内精品久久久久久中文字幕 | 99久久久无码国产aaa精品 | 无码av岛国片在线播放 | 全黄性性激高免费视频 | 中文字幕无码日韩欧毛 | 久久国产自偷自偷免费一区调 | 丰满人妻翻云覆雨呻吟视频 | 欧美国产日韩亚洲中文 | 亚洲精品一区二区三区大桥未久 | 夜夜夜高潮夜夜爽夜夜爰爰 | 亚洲中文字幕无码中字 | 国产精品久久久 | 国产亚洲精品久久久久久国模美 | 亚洲精品美女久久久久久久 | 久久天天躁狠狠躁夜夜免费观看 | 国产成人精品一区二区在线小狼 | 欧美丰满老熟妇xxxxx性 | 精品国精品国产自在久国产87 | 久久久精品欧美一区二区免费 | 正在播放东北夫妻内射 | 99国产欧美久久久精品 | 日韩av无码一区二区三区 | 国产片av国语在线观看 | 欧美日韩亚洲国产精品 | av在线亚洲欧洲日产一区二区 | 丰满少妇熟乱xxxxx视频 | 一本久道久久综合婷婷五月 | 青青久在线视频免费观看 | 久久精品中文字幕大胸 | 国产真实伦对白全集 | 国产suv精品一区二区五 | 女高中生第一次破苞av | 成人毛片一区二区 | 精品欧美一区二区三区久久久 | 蜜臀aⅴ国产精品久久久国产老师 | 宝宝好涨水快流出来免费视频 | 欧美日韩色另类综合 | 色情久久久av熟女人妻网站 | 欧美激情内射喷水高潮 | 女人被男人躁得好爽免费视频 | 欧美丰满熟妇xxxx性ppx人交 | √天堂中文官网8在线 | 亚洲人成影院在线无码按摩店 | 风流少妇按摩来高潮 | 大地资源网第二页免费观看 | 在线亚洲高清揄拍自拍一品区 | 久久精品丝袜高跟鞋 | 成人亚洲精品久久久久 | 在线欧美精品一区二区三区 | 女高中生第一次破苞av | 久久国内精品自在自线 | 亚洲精品国产a久久久久久 | 久久亚洲精品中文字幕无男同 | 亚洲熟妇自偷自拍另类 | 亚洲精品中文字幕 | 300部国产真实乱 | 人人澡人人妻人人爽人人蜜桃 | √天堂资源地址中文在线 | 岛国片人妻三上悠亚 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 国产亚洲tv在线观看 | 精品日本一区二区三区在线观看 | 综合网日日天干夜夜久久 | 欧美丰满熟妇xxxx性ppx人交 | 人人超人人超碰超国产 | 一本久久a久久精品vr综合 | 国产莉萝无码av在线播放 | 亚洲国产欧美日韩精品一区二区三区 | 老子影院午夜伦不卡 | 蜜臀av在线播放 久久综合激激的五月天 | 久久久久久久女国产乱让韩 | 波多野结衣aⅴ在线 | 国产小呦泬泬99精品 | 日韩无码专区 | 精品 日韩 国产 欧美 视频 | 亚洲中文字幕无码中文字在线 | 99久久亚洲精品无码毛片 | 欧美性生交xxxxx久久久 | 中国女人内谢69xxxxxa片 | 久久久精品欧美一区二区免费 | 亚洲天堂2017无码中文 | ass日本丰满熟妇pics | 欧美日韩人成综合在线播放 | 精品厕所偷拍各类美女tp嘘嘘 | 性史性农村dvd毛片 | 日韩人妻无码中文字幕视频 | 牲欲强的熟妇农村老妇女 | 欧美黑人巨大xxxxx | 东京无码熟妇人妻av在线网址 | √天堂资源地址中文在线 | 日韩人妻无码一区二区三区久久99 | 国产人妻久久精品二区三区老狼 | 亚洲国产成人a精品不卡在线 | 夜夜高潮次次欢爽av女 | 亚洲大尺度无码无码专区 | 精品少妇爆乳无码av无码专区 | 成人精品视频一区二区三区尤物 | 欧美成人免费全部网站 | 欧美阿v高清资源不卡在线播放 | 色婷婷综合激情综在线播放 | 国产成人一区二区三区别 | 人妻互换免费中文字幕 | 美女扒开屁股让男人桶 | 少妇人妻大乳在线视频 | 亚洲国产精品美女久久久久 | 夜先锋av资源网站 | 牲欲强的熟妇农村老妇女 | 欧美 日韩 人妻 高清 中文 | 国产无遮挡吃胸膜奶免费看 | 色欲人妻aaaaaaa无码 | 强奷人妻日本中文字幕 | 亚洲娇小与黑人巨大交 | 精品乱子伦一区二区三区 | 国产成人精品一区二区在线小狼 | 国产精品久久久久久久9999 | 色 综合 欧美 亚洲 国产 | 未满小14洗澡无码视频网站 | 国产精品无码一区二区三区不卡 | 中文字幕无线码 | 精品久久久久香蕉网 | 国产成人综合美国十次 | 麻豆国产人妻欲求不满谁演的 | 99久久人妻精品免费一区 | 国产又粗又硬又大爽黄老大爷视 | 无码人妻少妇伦在线电影 | 2020久久超碰国产精品最新 | 久久久久成人片免费观看蜜芽 | 欧美三级a做爰在线观看 | 久青草影院在线观看国产 | 乱中年女人伦av三区 | 国产精华av午夜在线观看 | 51国偷自产一区二区三区 | 亚洲日韩一区二区 | 性色欲情网站iwww九文堂 | 97无码免费人妻超级碰碰夜夜 | 无码国产激情在线观看 | 国产av久久久久精东av | 窝窝午夜理论片影院 | 中文无码伦av中文字幕 | 少妇邻居内射在线 | 中文字幕无码av波多野吉衣 | 欧美熟妇另类久久久久久不卡 | 岛国片人妻三上悠亚 | 麻豆蜜桃av蜜臀av色欲av | 欧美精品一区二区精品久久 | 色妞www精品免费视频 | 麻花豆传媒剧国产免费mv在线 | 大屁股大乳丰满人妻 | 曰本女人与公拘交酡免费视频 | 久久无码人妻影院 | 国产欧美熟妇另类久久久 | 欧美日韩在线亚洲综合国产人 | 亚洲国产精品久久人人爱 | 亚洲成在人网站无码天堂 | 曰韩少妇内射免费播放 | 少妇愉情理伦片bd | 国内精品一区二区三区不卡 | 国产成人精品一区二区在线小狼 | 亚洲精品国产精品乱码不卡 | 国产麻豆精品精东影业av网站 | 色情久久久av熟女人妻网站 | 国产午夜视频在线观看 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 亚洲精品国偷拍自产在线观看蜜桃 | 精品少妇爆乳无码av无码专区 | 国产亚洲视频中文字幕97精品 | 亚洲成av人片在线观看无码不卡 | 狠狠色噜噜狠狠狠7777奇米 | 国产成人一区二区三区在线观看 | 成年美女黄网站色大免费全看 | 日本免费一区二区三区最新 | 天堂无码人妻精品一区二区三区 | 人妻少妇精品久久 | 亚洲中文字幕在线无码一区二区 | 乌克兰少妇xxxx做受 | 亚洲色欲久久久综合网东京热 | √8天堂资源地址中文在线 | 色诱久久久久综合网ywww | 亚洲成a人片在线观看日本 | 免费人成网站视频在线观看 | 娇妻被黑人粗大高潮白浆 | 最近中文2019字幕第二页 | 久久精品丝袜高跟鞋 | 四虎4hu永久免费 | 天天摸天天透天天添 | av香港经典三级级 在线 | av无码电影一区二区三区 | 亚洲自偷精品视频自拍 | 18黄暴禁片在线观看 | 国产成人无码av一区二区 | 国产午夜亚洲精品不卡下载 | a片免费视频在线观看 | 男女超爽视频免费播放 | 欧美丰满少妇xxxx性 | 激情内射日本一区二区三区 | 亚洲国产精品一区二区第一页 | 免费乱码人妻系列无码专区 | 久久人人爽人人爽人人片av高清 | 波多野结衣高清一区二区三区 | 亚洲综合另类小说色区 | 精品国产一区二区三区四区 | 国产国产精品人在线视 | 无码av中文字幕免费放 | 男女作爱免费网站 | 亚洲中文字幕av在天堂 | 人妻少妇精品视频专区 | 正在播放老肥熟妇露脸 | 牛和人交xxxx欧美 | 俄罗斯老熟妇色xxxx | 人人妻在人人 | 国产精品人人妻人人爽 | 久久综合网欧美色妞网 | 18精品久久久无码午夜福利 | 自拍偷自拍亚洲精品10p | 亚洲成av人影院在线观看 | 日韩精品无码免费一区二区三区 | 东京一本一道一二三区 | 131美女爱做视频 | 蜜桃无码一区二区三区 | 精品午夜福利在线观看 | 久久人人爽人人人人片 | 老熟妇仑乱视频一区二区 | 欧美老熟妇乱xxxxx | 在教室伦流澡到高潮hnp视频 | 亚洲成a人一区二区三区 | 大肉大捧一进一出视频出来呀 | 婷婷六月久久综合丁香 | 亚洲色欲色欲欲www在线 | 国产av一区二区三区最新精品 | 97久久超碰中文字幕 | 99久久人妻精品免费一区 | 日日碰狠狠丁香久燥 | 国产人妻久久精品二区三区老狼 | 日本xxxx色视频在线观看免费 | 国产精品国产自线拍免费软件 | 国产真实乱对白精彩久久 | 无码av岛国片在线播放 | 国产亚洲日韩欧美另类第八页 | 一本久久伊人热热精品中文字幕 | 久久这里只有精品视频9 | 黑人大群体交免费视频 | 久久精品人人做人人综合试看 | 97资源共享在线视频 | 红桃av一区二区三区在线无码av | 欧美丰满熟妇xxxx | 亚洲色在线无码国产精品不卡 | 午夜嘿嘿嘿影院 | 色五月丁香五月综合五月 | 免费视频欧美无人区码 | 亚洲国产综合无码一区 | 国产va免费精品观看 | 亚洲精品中文字幕 | 国产女主播喷水视频在线观看 | 精品国偷自产在线视频 | 性啪啪chinese东北女人 | 中文亚洲成a人片在线观看 | 少妇高潮一区二区三区99 | 国产精品高潮呻吟av久久4虎 | 国产亲子乱弄免费视频 | 性欧美videos高清精品 | 人人超人人超碰超国产 | 国产suv精品一区二区五 | 日本熟妇乱子伦xxxx | 久久久久99精品成人片 | 在线精品国产一区二区三区 | 国产内射爽爽大片视频社区在线 | 人妻尝试又大又粗久久 | 人人澡人人妻人人爽人人蜜桃 | 欧美 丝袜 自拍 制服 另类 | 久久精品成人欧美大片 | 午夜成人1000部免费视频 | 日本在线高清不卡免费播放 | 波多野结衣乳巨码无在线观看 | 中文精品无码中文字幕无码专区 | 两性色午夜视频免费播放 | 亚洲精品国产第一综合99久久 | 狠狠亚洲超碰狼人久久 | 国产精品办公室沙发 | 亚洲乱码中文字幕在线 | 老子影院午夜伦不卡 | 亚洲国产精品一区二区第一页 | 中文字幕无码免费久久9一区9 | 国产成人精品必看 | 国产精品久久精品三级 | 欧美激情综合亚洲一二区 | 乱中年女人伦av三区 | 装睡被陌生人摸出水好爽 | 一区二区三区乱码在线 | 欧洲 | 亚洲va中文字幕无码久久不卡 | 亚洲精品鲁一鲁一区二区三区 | 国内少妇偷人精品视频 | 中文久久乱码一区二区 | 欧洲欧美人成视频在线 | 久久综合网欧美色妞网 | 漂亮人妻洗澡被公强 日日躁 | 精品一二三区久久aaa片 | 亚洲一区av无码专区在线观看 | 国产农村妇女高潮大叫 | yw尤物av无码国产在线观看 | 久久久久久a亚洲欧洲av冫 | 免费中文字幕日韩欧美 | 欧美熟妇另类久久久久久多毛 | 久精品国产欧美亚洲色aⅴ大片 | 久久国产精品_国产精品 | 内射后入在线观看一区 | 狠狠cao日日穞夜夜穞av | 欧美日韩综合一区二区三区 | 国产午夜亚洲精品不卡下载 | 国产麻豆精品一区二区三区v视界 | 风流少妇按摩来高潮 | 极品尤物被啪到呻吟喷水 | yw尤物av无码国产在线观看 | 精品厕所偷拍各类美女tp嘘嘘 | 亚洲日韩av片在线观看 | 亚洲色欲色欲天天天www | www成人国产高清内射 | 77777熟女视频在线观看 а天堂中文在线官网 | 国产精品99久久精品爆乳 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 久久久久99精品成人片 | 成人欧美一区二区三区黑人免费 | 国产人成高清在线视频99最全资源 | 欧美 丝袜 自拍 制服 另类 | 黑人巨大精品欧美一区二区 | 亚洲日韩中文字幕在线播放 | 人人妻在人人 | 亚洲国产精品一区二区美利坚 | 国产人妻久久精品二区三区老狼 | 亚洲日本va中文字幕 | 亚洲国产精品毛片av不卡在线 | 亚洲自偷精品视频自拍 | 精品国产一区二区三区四区在线看 | 亚洲人成影院在线观看 | 色欲久久久天天天综合网精品 | 曰本女人与公拘交酡免费视频 | 中文字幕人成乱码熟女app | 婷婷五月综合缴情在线视频 | 亚洲成a人片在线观看无码 | 亚洲欧美精品aaaaaa片 | 亚洲综合精品香蕉久久网 | av在线亚洲欧洲日产一区二区 | 精品熟女少妇av免费观看 | 高清不卡一区二区三区 | 樱花草在线播放免费中文 | 亚洲精品久久久久久久久久久 | 亚洲午夜无码久久 | 亚洲国产午夜精品理论片 | 奇米影视7777久久精品人人爽 | 成人影院yy111111在线观看 | 国产欧美精品一区二区三区 | 色婷婷综合中文久久一本 | 亚洲欧洲日本综合aⅴ在线 | 亚洲人成网站免费播放 | 国产真人无遮挡作爱免费视频 | 无码人妻久久一区二区三区不卡 | 老司机亚洲精品影院无码 | 免费播放一区二区三区 | 青春草在线视频免费观看 | 性生交大片免费看l | 亚洲热妇无码av在线播放 | 内射欧美老妇wbb | 无码播放一区二区三区 | 精品国产乱码久久久久乱码 | 秋霞特色aa大片 | 久久综合网欧美色妞网 | 成人性做爰aaa片免费看不忠 | 国产特级毛片aaaaaa高潮流水 | 成人无码视频在线观看网站 | 日本成熟视频免费视频 | 在线观看国产一区二区三区 | 国产亚洲tv在线观看 | 乱人伦人妻中文字幕无码久久网 | 丰满少妇女裸体bbw | 老熟妇仑乱视频一区二区 | 国产精品久久久久影院嫩草 | 一本一道久久综合久久 | 风流少妇按摩来高潮 | 帮老师解开蕾丝奶罩吸乳网站 | 国产亚洲精品久久久久久久 | 在教室伦流澡到高潮hnp视频 | 亚洲国精产品一二二线 | 国产特级毛片aaaaaa高潮流水 | 色爱情人网站 | 精品乱子伦一区二区三区 | 乱码午夜-极国产极内射 | 99久久婷婷国产综合精品青草免费 | 亚欧洲精品在线视频免费观看 | 亚洲欧洲中文日韩av乱码 | 国产亚洲人成在线播放 | 在线观看国产午夜福利片 | 亚洲爆乳大丰满无码专区 | 国产精品手机免费 | 国产精品亚洲lv粉色 | 午夜不卡av免费 一本久久a久久精品vr综合 | 欧美xxxxx精品 | 一本久久伊人热热精品中文字幕 | 欧美 日韩 人妻 高清 中文 | 无套内谢的新婚少妇国语播放 | 国产av人人夜夜澡人人爽麻豆 | 一本色道久久综合狠狠躁 | 无码人妻av免费一区二区三区 | 野外少妇愉情中文字幕 | 天天躁日日躁狠狠躁免费麻豆 | 日韩人妻系列无码专区 | 国产人妖乱国产精品人妖 | 午夜熟女插插xx免费视频 | 性史性农村dvd毛片 | 无码av岛国片在线播放 | 久久综合九色综合欧美狠狠 | 日本大乳高潮视频在线观看 | 少妇人妻大乳在线视频 | 中文字幕色婷婷在线视频 | 精品亚洲韩国一区二区三区 | 精品久久久无码中文字幕 | 最近免费中文字幕中文高清百度 | 天天拍夜夜添久久精品大 | 在线播放免费人成毛片乱码 | 日本丰满熟妇videos | 妺妺窝人体色www在线小说 | 黑人巨大精品欧美一区二区 | 荡女精品导航 | 色欲久久久天天天综合网精品 | 色五月五月丁香亚洲综合网 | 色狠狠av一区二区三区 | 国产又粗又硬又大爽黄老大爷视 | 国产激情无码一区二区app | 成 人 网 站国产免费观看 | 国产精品久久久av久久久 | 露脸叫床粗话东北少妇 | 亲嘴扒胸摸屁股激烈网站 | 国语精品一区二区三区 | 成在人线av无码免费 | 精品久久8x国产免费观看 | 国产莉萝无码av在线播放 | 丰满肥臀大屁股熟妇激情视频 | 亚洲自偷自拍另类第1页 | 国产午夜无码精品免费看 | 午夜性刺激在线视频免费 | 亚洲一区二区三区含羞草 | 又大又硬又爽免费视频 | 国产xxx69麻豆国语对白 | 久久久国产一区二区三区 | 亚洲精品鲁一鲁一区二区三区 | 亚洲人亚洲人成电影网站色 | 亚洲国产精品美女久久久久 | 日产精品高潮呻吟av久久 | 久久久久久亚洲精品a片成人 | 国内少妇偷人精品视频免费 | 99久久精品日本一区二区免费 | 97夜夜澡人人双人人人喊 | 免费无码av一区二区 | 色五月五月丁香亚洲综合网 | 国模大胆一区二区三区 | 国产亚洲视频中文字幕97精品 | 国产亚洲欧美日韩亚洲中文色 | 欧洲熟妇色 欧美 | 欧美三级a做爰在线观看 | 在线观看欧美一区二区三区 | 国产成人无码a区在线观看视频app | 国产9 9在线 | 中文 | 中文字幕无线码免费人妻 | 激情爆乳一区二区三区 | 日本精品高清一区二区 | 在线欧美精品一区二区三区 | 又色又爽又黄的美女裸体网站 | 国产激情无码一区二区app | 亚洲人交乣女bbw | 久9re热视频这里只有精品 | 少女韩国电视剧在线观看完整 | 婷婷五月综合激情中文字幕 | 国产成人精品三级麻豆 | 伊人久久大香线蕉av一区二区 | 久久99精品久久久久久动态图 | 日韩无套无码精品 | 久久视频在线观看精品 | 欧美 日韩 亚洲 在线 | 高潮喷水的毛片 | 老熟妇乱子伦牲交视频 | 久久久国产精品无码免费专区 | 熟妇人妻激情偷爽文 | 国产极品美女高潮无套在线观看 | 色妞www精品免费视频 | 成人一区二区免费视频 | 成人综合网亚洲伊人 | 一本久久a久久精品亚洲 | 人人爽人人澡人人人妻 | 99麻豆久久久国产精品免费 | 国产亚洲精品久久久ai换 | 日韩精品成人一区二区三区 | 成人欧美一区二区三区黑人 | 国产亚洲tv在线观看 | 天天拍夜夜添久久精品 | 亚洲男女内射在线播放 | 鲁大师影院在线观看 | 一本久道久久综合婷婷五月 | 鲁一鲁av2019在线 | 午夜福利试看120秒体验区 | 99久久人妻精品免费二区 | 亚洲色www成人永久网址 | 久久国产精品_国产精品 | 台湾无码一区二区 | 亚洲午夜久久久影院 | 精品无人区无码乱码毛片国产 | 久久久精品456亚洲影院 | 成人亚洲精品久久久久软件 | 99riav国产精品视频 | 亚洲欧美日韩成人高清在线一区 | 人妻少妇精品无码专区动漫 | 特大黑人娇小亚洲女 | 久久精品女人天堂av免费观看 | 精品人妻中文字幕有码在线 | 欧美肥老太牲交大战 | 99国产欧美久久久精品 | 亚洲色欲色欲欲www在线 | 波多野结衣 黑人 | 亚洲一区二区三区香蕉 | 国产电影无码午夜在线播放 | 国产精品亚洲lv粉色 | 狠狠色欧美亚洲狠狠色www | 免费无码的av片在线观看 | 少妇久久久久久人妻无码 | 亚洲一区二区观看播放 | 亚洲自偷自偷在线制服 | 亚洲精品中文字幕 | 亚洲精品鲁一鲁一区二区三区 | 日韩精品a片一区二区三区妖精 | 亚洲中文字幕无码中字 | 国产口爆吞精在线视频 | 午夜精品久久久内射近拍高清 | 国产一区二区三区日韩精品 | 免费网站看v片在线18禁无码 | 日韩人妻无码中文字幕视频 | 少妇愉情理伦片bd | 亚洲精品无码人妻无码 | 欧洲熟妇精品视频 | 老子影院午夜伦不卡 | 久久99精品久久久久婷婷 | 99久久人妻精品免费二区 | 精品久久久中文字幕人妻 | 成人精品视频一区二区三区尤物 | 精品国偷自产在线 | 日韩亚洲欧美精品综合 | 国产成人精品无码播放 | 乱人伦人妻中文字幕无码 | 久久久久亚洲精品男人的天堂 | 国产亚洲精品久久久久久久 | 免费无码一区二区三区蜜桃大 | 奇米影视7777久久精品人人爽 | 精品欧美一区二区三区久久久 | 人人妻人人澡人人爽人人精品 | 久久精品国产一区二区三区肥胖 | 午夜性刺激在线视频免费 | 乱码午夜-极国产极内射 | 久久久久亚洲精品中文字幕 | 久久久国产一区二区三区 | 免费人成网站视频在线观看 | 久久婷婷五月综合色国产香蕉 | 亚洲国产av精品一区二区蜜芽 | 国产午夜精品一区二区三区嫩草 | 大色综合色综合网站 | 亚洲欧美中文字幕5发布 | 国产色在线 | 国产 | 亚洲aⅴ无码成人网站国产app | 精品厕所偷拍各类美女tp嘘嘘 | 四十如虎的丰满熟妇啪啪 | 大色综合色综合网站 | 97精品国产97久久久久久免费 | 日日碰狠狠躁久久躁蜜桃 | 久久精品国产一区二区三区肥胖 | 全黄性性激高免费视频 | 国产精品a成v人在线播放 | 夜先锋av资源网站 | 国产绳艺sm调教室论坛 | 熟妇人妻无码xxx视频 | 久久国产精品偷任你爽任你 | 九九综合va免费看 | 国产精品va在线观看无码 | 性做久久久久久久免费看 | 精品国产青草久久久久福利 | 成年女人永久免费看片 | 国产精品亚洲а∨无码播放麻豆 | 国产精品无码永久免费888 | 成人精品一区二区三区中文字幕 | 国产成人av免费观看 | 欧美黑人性暴力猛交喷水 | 亚洲精品久久久久avwww潮水 | 久久亚洲日韩精品一区二区三区 | 无套内谢的新婚少妇国语播放 | 中文字幕无码免费久久99 | 亚洲精品国偷拍自产在线观看蜜桃 | 日韩精品无码免费一区二区三区 | 免费播放一区二区三区 | 秋霞成人午夜鲁丝一区二区三区 | 久久人人爽人人爽人人片av高清 | 中文字幕无线码 | 精品一区二区不卡无码av | 中文亚洲成a人片在线观看 | 狠狠躁日日躁夜夜躁2020 | 巨爆乳无码视频在线观看 | 性生交大片免费看女人按摩摩 | 2019nv天堂香蕉在线观看 | 激情内射日本一区二区三区 | 又大又硬又黄的免费视频 | 国产精品久久久久久亚洲影视内衣 | 少妇愉情理伦片bd | 日本在线高清不卡免费播放 | 极品嫩模高潮叫床 | 国产美女极度色诱视频www | 女人被爽到呻吟gif动态图视看 | 午夜无码区在线观看 | 亚洲国产成人a精品不卡在线 | 男女下面进入的视频免费午夜 | 午夜精品一区二区三区的区别 | 小泽玛莉亚一区二区视频在线 | 无码人妻黑人中文字幕 | 日本乱偷人妻中文字幕 | 女人被男人躁得好爽免费视频 | 99久久婷婷国产综合精品青草免费 | 乱人伦人妻中文字幕无码久久网 | 高潮毛片无遮挡高清免费 | 99久久精品午夜一区二区 | 国产成人无码a区在线观看视频app | 成人无码视频在线观看网站 | 影音先锋中文字幕无码 | 日韩人妻无码一区二区三区久久99 | 在线精品国产一区二区三区 | 亚洲精品国产第一综合99久久 | 日韩精品无码一本二本三本色 | 无码国产色欲xxxxx视频 | 美女张开腿让人桶 | 国语精品一区二区三区 | 永久免费精品精品永久-夜色 | 人妻无码久久精品人妻 | 无人区乱码一区二区三区 | 欧美freesex黑人又粗又大 | 色婷婷av一区二区三区之红樱桃 | 亚洲人成影院在线无码按摩店 | 3d动漫精品啪啪一区二区中 | 亚洲 另类 在线 欧美 制服 | 成在人线av无码免费 | 国产成人无码a区在线观看视频app | 人妻夜夜爽天天爽三区 | 人人爽人人爽人人片av亚洲 | 色狠狠av一区二区三区 | 人人澡人人妻人人爽人人蜜桃 | 国产特级毛片aaaaaa高潮流水 | 亚洲一区av无码专区在线观看 | 荫蒂被男人添的好舒服爽免费视频 | 国产片av国语在线观看 | 亚洲一区二区三区播放 | 玩弄少妇高潮ⅹxxxyw | 久久久精品欧美一区二区免费 | 亚洲国产欧美日韩精品一区二区三区 | 中文字幕无码日韩专区 | 少妇的肉体aa片免费 | 国产亚洲精品久久久久久 | 国产av一区二区精品久久凹凸 | 色狠狠av一区二区三区 | 欧美喷潮久久久xxxxx | 国产精品a成v人在线播放 | 欧美三级不卡在线观看 | 亚洲一区二区三区含羞草 | 亚洲色www成人永久网址 | 国产成人精品无码播放 | 国产成人亚洲综合无码 | 久久亚洲日韩精品一区二区三区 | 色综合视频一区二区三区 | 国产精品毛片一区二区 | 国产黄在线观看免费观看不卡 | 久久亚洲a片com人成 | 亚洲精品鲁一鲁一区二区三区 | 日本欧美一区二区三区乱码 | 无码乱肉视频免费大全合集 | 人妻少妇被猛烈进入中文字幕 | 精品无人区无码乱码毛片国产 | 1000部啪啪未满十八勿入下载 | 无码午夜成人1000部免费视频 | 无码乱肉视频免费大全合集 | 亚洲一区二区三区播放 | 人妻插b视频一区二区三区 | 亚洲精品午夜无码电影网 | 日本在线高清不卡免费播放 | 天天av天天av天天透 | 国产麻豆精品一区二区三区v视界 | 免费人成在线视频无码 | 少妇人妻av毛片在线看 | 狠狠色噜噜狠狠狠7777奇米 | 亚洲 另类 在线 欧美 制服 | 天干天干啦夜天干天2017 | 久久无码专区国产精品s | 内射欧美老妇wbb | 强辱丰满人妻hd中文字幕 | 国产激情艳情在线看视频 | 午夜精品一区二区三区的区别 | 色偷偷人人澡人人爽人人模 | 国产猛烈高潮尖叫视频免费 | 成人毛片一区二区 | 少妇激情av一区二区 | av香港经典三级级 在线 | 欧美日韩一区二区三区自拍 | 亚洲国产精品无码久久久久高潮 | 伊人久久大香线焦av综合影院 | 鲁一鲁av2019在线 | 国内精品人妻无码久久久影院 | 少妇性l交大片欧洲热妇乱xxx | 国产精品嫩草久久久久 | 亚洲熟熟妇xxxx | 麻豆md0077饥渴少妇 | 欧美国产亚洲日韩在线二区 | 亚洲日韩一区二区三区 | 国内精品一区二区三区不卡 | 97人妻精品一区二区三区 | 久久亚洲精品成人无码 | 性欧美牲交在线视频 | 一二三四在线观看免费视频 | 少妇被粗大的猛进出69影院 | 无人区乱码一区二区三区 | 帮老师解开蕾丝奶罩吸乳网站 | 国产午夜福利100集发布 | 无码成人精品区在线观看 | 天天摸天天碰天天添 | 久久精品国产精品国产精品污 | 强奷人妻日本中文字幕 | 色一情一乱一伦 | 亚洲人成网站在线播放942 | 成人无码影片精品久久久 | 亚洲精品成人福利网站 | 欧美阿v高清资源不卡在线播放 | 熟妇女人妻丰满少妇中文字幕 | 精品无码成人片一区二区98 | 99精品视频在线观看免费 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 国产无av码在线观看 | 久久精品人妻少妇一区二区三区 | 国产人妻久久精品二区三区老狼 | 国精产品一品二品国精品69xx | 人人澡人摸人人添 | 久久亚洲精品成人无码 | 久久亚洲a片com人成 | 天天燥日日燥 | 天天av天天av天天透 | 天堂亚洲免费视频 | 美女黄网站人色视频免费国产 | 日韩精品成人一区二区三区 | 精品国产成人一区二区三区 | 人妻插b视频一区二区三区 | 无码人中文字幕 | 国产精品人妻一区二区三区四 | 无套内射视频囯产 | 国产成人无码午夜视频在线观看 | 亚洲精品一区二区三区大桥未久 | 久久久精品人妻久久影视 | 国产日产欧产精品精品app | 亚洲中文字幕成人无码 | 少妇性荡欲午夜性开放视频剧场 | 成人无码视频免费播放 | 亚洲无人区午夜福利码高清完整版 | 一本久久a久久精品亚洲 | 天堂亚洲2017在线观看 | 精品夜夜澡人妻无码av蜜桃 | 精品久久综合1区2区3区激情 | 无码av岛国片在线播放 | 精品无码一区二区三区爱欲 | 精品一区二区三区无码免费视频 | 东京一本一道一二三区 | 国产精品人人爽人人做我的可爱 | 国产香蕉尹人综合在线观看 | 亚洲精品午夜国产va久久成人 | 精品国精品国产自在久国产87 | √8天堂资源地址中文在线 | 丁香花在线影院观看在线播放 | 亚洲一区二区三区香蕉 | 国产成人无码av片在线观看不卡 | 国语自产偷拍精品视频偷 | 999久久久国产精品消防器材 | 2020久久超碰国产精品最新 | 亚洲毛片av日韩av无码 | 亚洲人成影院在线无码按摩店 | 国产精品欧美成人 | 欧洲熟妇色 欧美 | 亚洲国产欧美在线成人 | 免费国产黄网站在线观看 | 高清无码午夜福利视频 | 免费看男女做好爽好硬视频 | 中文字幕人妻无码一区二区三区 | 国产精品高潮呻吟av久久 | 亚洲最大成人网站 | 久久精品国产99久久6动漫 | 国产精品久久久久久久影院 | 国产高清av在线播放 | 中文字幕无码日韩欧毛 | 成人免费无码大片a毛片 | 青青青手机频在线观看 | 一本一道久久综合久久 | 欧美日韩视频无码一区二区三 | 色欲av亚洲一区无码少妇 | 成人无码影片精品久久久 | 欧美猛少妇色xxxxx | 国产熟妇高潮叫床视频播放 | 欧美黑人性暴力猛交喷水 | 在线观看国产午夜福利片 | 中文无码精品a∨在线观看不卡 | 国产亚洲精品久久久ai换 | 麻豆蜜桃av蜜臀av色欲av | 女人高潮内射99精品 | 久久国产精品_国产精品 | 亚洲国产午夜精品理论片 | 精品少妇爆乳无码av无码专区 | 乱人伦中文视频在线观看 | 欧美黑人乱大交 | 俺去俺来也在线www色官网 | 日韩精品久久久肉伦网站 | 国产精品亚洲а∨无码播放麻豆 | 少妇人妻大乳在线视频 | 狠狠色欧美亚洲狠狠色www | 精品水蜜桃久久久久久久 | 99精品无人区乱码1区2区3区 | 伦伦影院午夜理论片 | 97无码免费人妻超级碰碰夜夜 | 性色欲情网站iwww九文堂 | 男人的天堂2018无码 | 大乳丰满人妻中文字幕日本 | 亚洲最大成人网站 | 欧美日本精品一区二区三区 | 日韩人妻无码中文字幕视频 | 强辱丰满人妻hd中文字幕 | 国产精品人人爽人人做我的可爱 | 51国偷自产一区二区三区 | 亚洲国产欧美在线成人 | 中文字幕无码热在线视频 | 久久99精品久久久久久 | 97se亚洲精品一区 | 久久久精品人妻久久影视 | 色婷婷久久一区二区三区麻豆 | 性色欲网站人妻丰满中文久久不卡 | 精品一区二区不卡无码av | 日韩亚洲欧美中文高清在线 | 亚洲 a v无 码免 费 成 人 a v | 丰满人妻一区二区三区免费视频 | 极品尤物被啪到呻吟喷水 | aⅴ亚洲 日韩 色 图网站 播放 | 一本一道久久综合久久 | 日韩视频 中文字幕 视频一区 | 夜夜影院未满十八勿进 | 日产精品高潮呻吟av久久 | 熟妇人妻无乱码中文字幕 | 精品国产av色一区二区深夜久久 | 色情久久久av熟女人妻网站 | 日本精品久久久久中文字幕 | 欧美野外疯狂做受xxxx高潮 | 色婷婷av一区二区三区之红樱桃 | 午夜丰满少妇性开放视频 | 国产精品怡红院永久免费 | 全黄性性激高免费视频 | 2019午夜福利不卡片在线 | 亚洲成av人综合在线观看 | 波多野结衣av一区二区全免费观看 | 欧美三级a做爰在线观看 | 18黄暴禁片在线观看 | 国产精品va在线观看无码 | 好男人社区资源 | 久久99精品久久久久婷婷 | 樱花草在线播放免费中文 | 狠狠色丁香久久婷婷综合五月 | 亚洲性无码av中文字幕 | 无码国产色欲xxxxx视频 | 欧美色就是色 | 麻豆蜜桃av蜜臀av色欲av | 扒开双腿疯狂进出爽爽爽视频 | 亚洲中文字幕在线观看 | 乱码午夜-极国产极内射 | 色综合久久久久综合一本到桃花网 | 美女极度色诱视频国产 | 国产无av码在线观看 | 综合网日日天干夜夜久久 | 18黄暴禁片在线观看 | 国产成人人人97超碰超爽8 | 中文字幕日产无线码一区 | 999久久久国产精品消防器材 | 99久久精品日本一区二区免费 | 日本精品人妻无码免费大全 | 亚洲の无码国产の无码影院 | 亚洲国产欧美日韩精品一区二区三区 | 爽爽影院免费观看 | 极品嫩模高潮叫床 | 国产午夜无码精品免费看 | 中文字幕人妻无码一夲道 | 狠狠色噜噜狠狠狠狠7777米奇 | 思思久久99热只有频精品66 | 福利一区二区三区视频在线观看 | 2019nv天堂香蕉在线观看 | 内射老妇bbwx0c0ck | 日本护士xxxxhd少妇 | 成人女人看片免费视频放人 | 粗大的内捧猛烈进出视频 | 成人无码视频免费播放 | 内射后入在线观看一区 | 欧美日韩在线亚洲综合国产人 | 亚洲精品久久久久久一区二区 | 无码国模国产在线观看 | 人妻夜夜爽天天爽三区 | 成人免费视频视频在线观看 免费 | 久久亚洲日韩精品一区二区三区 | 97久久国产亚洲精品超碰热 | 99久久亚洲精品无码毛片 | 午夜精品一区二区三区在线观看 | 妺妺窝人体色www在线小说 | 国产精品igao视频网 | 国产亚洲精品久久久久久久 |