久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術文章
文章詳情頁

全面解析Android系統指紋啟動流程

瀏覽:100日期:2022-09-19 15:37:50

本章主要整理Android 指紋啟動流程,側重于hal和framework部分。

一.從Android系統啟動流程看指紋啟動流程

下圖圖片出處 →

全面解析Android系統指紋啟動流程

第一階段

Boot ROM,Android設備上電后,首先會從處理器片上ROM的啟動引導代碼開始執行,片上ROM會尋找Bootloader代碼,并加載到內存。主要就是上電讓系統啟動。

第二階段

Bootloader開始執行,首先負責完成硬件的初始化,然后找到Linux內核代碼,并加載到內存。

啟動過程中,bootloader(默認是bootable/bootloader/lk)會根據機器硬件信息選擇合適的devicetree(dts)裝入內存,如果采用pin id兼容,那么在此時就可以通過讀取ID pin的值(這個是硬件拉的,跟硬件工程師確認是怎么對應IC的即可)判斷指紋的IC了。

第三階段

Kernel,Linux內核開始啟動,初始化各種軟硬件環境,加載驅動程序,掛載根文件系統,在系統文件中尋找init.rc文件,并啟動init進程。Kernel中,加載指紋驅動,根據傳入的dts信息創建設備節點,注冊設備。

第四階段

Init,初始化和啟動屬性服務,并且啟動Zygote進程。

找到android.hardware.biometrics.fingerprint@2.1-service.rc,啟動android.hardware.biometrics.fingerprint@2.1-service,會去open fingerprint.deault.so,等待與上層通信。

第五階段

Zygote進程啟動,創建java虛擬機并為java虛擬機注冊JNI方法,創建服務器端Socket,啟動SystemServer進程。

第六階段

SystemServer進程啟動,啟動Binder線程池和SystemServiceManager,并且啟動各種系統服務。會啟動Fingerprintservice

以上是從Android啟動流程看每個階段指紋的啟動流程 ,下面依次詳細展開介紹。

二.驅動層

主要就是設備節點驅動的注冊,在此不再詳細說了,重點關注probe函數。

三.hal層

首先,hardware/interfaces/biometrics/fingerprint/2.1/default/android.hardware.biometrics.fingerprint@2.1-service.rc(以下簡稱2.1 rc)

service vendor.fps_hal /vendor/bin/hw/android.hardware.biometrics.fingerprint@2.1-service # 'class hal' causes a race condition on some devices due to files created # in /data. As a workaround, postpone startup until later in boot once # /data is mounted. class late_start user system group system input writepid /dev/cpuset/system-background/tasks

會使位于系統vendor/bin/hw下的android.hardware.biometrics.fingerprint@2.1-service(以下簡稱2.1 bin)開機自啟動,啟動后會注冊2.1 service

該bin服務對應的代碼在:hardware/interfaces/biometrics/fingerprint/2.1/default/service.cpp,整個注冊過程只有兩步,首先實例化傳入的 IBiometricsFingerprint 接口對象,然后通過 registerAsService 將服務注冊到 hwservicemanager。

int main() { android::sp<IBiometricsFingerprint> bio = BiometricsFingerprint::getInstance(); configureRpcThreadpool(1, true /*callerWillJoin*/); if (bio != nullptr) {if (::android::OK != bio->registerAsService()) { //*****注冊服務***** return 1;} } else {ALOGE('Can’t create instance of BiometricsFingerprint, nullptr'); } joinRpcThreadpool(); return 0; // should never get here}

hardware/interfaces/biometrics/fingerprint/2.1/default/BiometricsFingerprint.cpp,重點關注openHal函數,會去打開fingerprint.default.so

fingerprint_device_t* BiometricsFingerprint::openHal() { int err; const hw_module_t *hw_mdl = nullptr; ALOGD('Opening fingerprint hal library...'); //*******打開fingerprint.default.so******** if (0 != (err = hw_get_module(FINGERPRINT_HARDWARE_MODULE_ID, &hw_mdl))) {ALOGE('Can’t open fingerprint HW Module, error: %d', err);return nullptr; } if (hw_mdl == nullptr) {ALOGE('No valid fingerprint module');return nullptr; } fingerprint_module_t const *module =reinterpret_cast<const fingerprint_module_t*>(hw_mdl); if (module->common.methods->open == nullptr) {ALOGE('No valid open method');return nullptr; } hw_device_t *device = nullptr; if (0 != (err = module->common.methods->open(hw_mdl, nullptr, &device))) {ALOGE('Can’t open fingerprint methods, error: %d', err);return nullptr; } if (kVersion != device->version) {// enforce version on new devices because of HIDL@2.1 translation layerALOGE('Wrong fp version. Expected %d, got %d', kVersion, device->version);return nullptr; } fingerprint_device_t* fp_device =reinterpret_cast<fingerprint_device_t*>(device); if (0 != (err = fp_device->set_notify(fp_device, BiometricsFingerprint::notify))) {ALOGE('Can’t register fingerprint module callback, error: %d', err);return nullptr; } return fp_device;}

關于fingerprint.default.so這個都是供應商提供的,一般都不開源,不過Android原生也是有這部分代碼的(當然只是看看,并不能使用)

hardware/libhardware/include/hardware/fingerprint.h

hardware/libhardware/modules/fingerprint/fingerprint.c

這部分代碼不再展開貼在這里了,大家可以自行去看看,主要就是fingerprint_open打開設備(設備節點),然后定義了一系列函數。

dev->common.tag = HARDWARE_DEVICE_TAG;dev->common.version = FINGERPRINT_MODULE_API_VERSION_2_0;dev->common.module = (struct hw_module_t*) module;dev->common.close = fingerprint_close;dev->pre_enroll = fingerprint_pre_enroll;dev->enroll = fingerprint_enroll;dev->get_authenticator_id = fingerprint_get_auth_id;dev->cancel = fingerprint_cancel;dev->remove = fingerprint_remove;dev->set_active_group = fingerprint_set_active_group;dev->authenticate = fingerprint_authenticate;dev->set_notify = set_notify_callback;四.framework層

首先是SystemServer啟動后,會去判斷設備是否支持指紋,如果有start FingerprintService

frameworks/base/services/java/com/android/server/SystemServer.java

if (mPackageManager.hasSystemFeature(PackageManager.FEATURE_FINGERPRINT)) { traceBeginAndSlog('StartFingerprintSensor'); mSystemServiceManager.startService(FingerprintService.class); traceEnd();}

此處mPackageManager.hasSystemFeature(PackageManager.FEATURE_FINGERPRINT)的判斷,大家可以去frameworks/base/core/java/android/content/pm/PackageManager.java中追代碼看看,邏輯很簡單。

就是判斷系統內vendor/etc/permissions目錄下是否有:android.hardware.fingerprint.xml 文件

調試的那篇說過這個配置是setting里有沒有指紋選項的關鍵:

PRODUCT_COPY_FILES := frameworks/native/data/etc/android.hardware.fingerprint.xml:vendor/etc/permissions/android.hardware.fingerprint.xml

下面轉到,frameworks/base/services/core/java/com/android/server/fingerprint/FingerprintService.java,以下代碼前半部分是與hal 2.1 service通信的部分,通過mDaemon = IBiometricsFingerprint.getService(),獲取2.1 service

后半部分可以看出其繼承IFingerprintService.aidl,這個aidl類就是實現Manager和Service通信的橋梁。

public synchronized IBiometricsFingerprint getFingerprintDaemon() {if (mDaemon == null) { Slog.v(TAG, 'mDaemon was null, reconnect to fingerprint'); try {mDaemon = IBiometricsFingerprint.getService(); } catch (java.util.NoSuchElementException e) {// Service doesn’t exist or cannot be opened. Logged below. } catch (RemoteException e) {Slog.e(TAG, 'Failed to get biometric interface', e); } if (mDaemon == null) {Slog.w(TAG, 'fingerprint HIDL not available');return null; } mDaemon.asBinder().linkToDeath(this, 0); try {mHalDeviceId = mDaemon.setNotify(mDaemonCallback); } catch (RemoteException e) {Slog.e(TAG, 'Failed to open fingerprint HAL', e);mDaemon = null; // try again later! } if (DEBUG) Slog.v(TAG, 'Fingerprint HAL id: ' + mHalDeviceId); if (mHalDeviceId != 0) {loadAuthenticatorIds();updateActiveGroup(ActivityManager.getCurrentUser(), null);doFingerprintCleanupForUser(ActivityManager.getCurrentUser()); } else {Slog.w(TAG, 'Failed to open Fingerprint HAL!');MetricsLogger.count(mContext, 'fingerprintd_openhal_error', 1);mDaemon = null; } //************************************************************************************// private final class FingerprintServiceWrapper extends IFingerprintService.Stub {@Override // Binder callpublic long preEnroll(IBinder token) { checkPermission(MANAGE_FINGERPRINT); return startPreEnroll(token);} @Override // Binder callpublic int postEnroll(IBinder token) { checkPermission(MANAGE_FINGERPRINT); return startPostEnroll(token);} @Override // Binder callpublic void enroll(final IBinder token, final byte[] cryptoToken, final int userId,final IFingerprintServiceReceiver receiver, final int flags,final String opPackageName) { checkPermission(MANAGE_FINGERPRINT); final int limit = mContext.getResources().getInteger( com.android.internal.R.integer.config_fingerprintMaxTemplatesPerUser); final int enrolled = FingerprintService.this.getEnrolledFingerprints(userId).size(); if (enrolled >= limit) {Slog.w(TAG, 'Too many fingerprints registered');return; }}return mDaemon; }

對FingerprintService再往上一層的封裝是FingerprintManager,應用app可以直接和它通信

frameworks/base/core/java/android/hardware/fingerprint/FingerprintManager.java (以下為搜索mService的代碼,大家可以自己去看看)

private IFingerprintService mService;if (mService != null) try { mService.authenticate(mToken, sessionId, userId, mServiceReceiver, flags, if (mService != null) {mService.authenticate(mToken, sessionId, userId, mServiceReceiver, if (mService != null) try { mService.enroll(mToken, token, userId, mServiceReceiver, flags, if (mService != null) try { result = mService.preEnroll(mToken);if (mService != null) try { result = mService.postEnroll(mToken);if (mService != null) try { mService.setActiveUser(userId);if (mService != null) try { mService.remove(mToken, fp.getFingerId(), fp.getGroupId(), userId, mServiceReceiver); mService.remove(mToken, fp.getFingerId(), fp.getGroupId(), userId, mServiceReceiver);if (mService != null) try { mService.enumerate(mToken, userId, mServiceReceiver); if (mService != null) {mService.rename(fpId, userId, newName);if (mService != null) try { return mService.getEnrolledFingerprints(userId, mContext.getOpPackageName());if (mService != null) try { return mService.hasEnrolledFingerprints(if (mService != null) try { return mService.hasEnrolledFingerprints(userId, mContext.getOpPackageName());if (mService != null) {return mService.isHardwareDetected(deviceId, mContext.getOpPackageName());if (mService != null) {return mService.getAuthenticatorId(mContext.getOpPackageName());if (mService != null) {mService.resetTimeout(token);if (mService == null) {if (mService != null) try { mService.cancelEnrollment(mToken);if (mService != null) try { mService.cancelAuthentication(mToken, mContext.getOpPackageName());

以上代碼大家可以發現FingerprintManager其實并沒有真正實現什么接口,都是調用的IFingerprintService,這里就用到aidl了,FingerprintManager通過aidl的Stub獲取了Fingerprintservice,然后在這里去調用這個service的方法,以操作service,這就是aidl的作用。

frameworks/base/core/java/android/hardware/fingerprint/IFingerprintService.aidl (大家如果去看完整的代碼,這里的接口是和FingerprintManager中調用的完全一致的)

interface IFingerprintService { // Authenticate the given sessionId with a fingerprint void authenticate(IBinder token, long sessionId, int userId, IFingerprintServiceReceiver receiver, int flags, String opPackageName, in Bundle bundle, IBiometricPromptReceiver dialogReceiver); // Cancel authentication for the given sessionId void cancelAuthentication(IBinder token, String opPackageName); // Start fingerprint enrollment void enroll(IBinder token, in byte [] cryptoToken, int groupId, IFingerprintServiceReceiver receiver, int flags, String opPackageName); // Cancel enrollment in progress void cancelEnrollment(IBinder token); // Any errors resulting from this call will be returned to the listener void remove(IBinder token, int fingerId, int groupId, int userId, IFingerprintServiceReceiver receiver); // Rename the fingerprint specified by fingerId and groupId to the given name void rename(int fingerId, int groupId, String name); // Get a list of enrolled fingerprints in the given group. List<Fingerprint> getEnrolledFingerprints(int groupId, String opPackageName); // Determine if HAL is loaded and ready boolean isHardwareDetected(long deviceId, String opPackageName); // Get a pre-enrollment authentication token long preEnroll(IBinder token); // Finish an enrollment sequence and invalidate the authentication token int postEnroll(IBinder token); 五.總結

根據以上可以畫出這樣一張流程圖(以下以匯頂指紋為例,流程上都是一樣的)

System APP下發注冊命令->FingerprintManager收到命令->FingerprintService收到命令->(2.1 service)BiometricsFingerprint收到命令->(fingerprint.default.so)Fingerprint.cpp收到命令->指紋CA收到命令->指紋TA收到命令->SPI采集數據算法進行注冊等

全面解析Android系統指紋啟動流程

以上就是全面解析Android系統指紋啟動流程的詳細內容,更多關于Android啟動流程的資料請關注好吧啦網其它相關文章!

標簽: Android
相關文章:
主站蜘蛛池模板: a免费在线观看 | 国产亚洲一区二区在线 | 日韩欧美在线观看一区二区 | 麻豆自拍偷拍 | av一区二区在线观看 | 亚洲日本国产 | 国产一区免费视频 | 国产精品视频入口 | 免费午夜电影 | 蜜桃视频一区 | 日韩中文不卡 | 国产99久久精品 | 嫩草影院在线观看91麻豆 | 国产偷自视频区视频 | 国产98色在线 | 日韩 | 国产乱码精品一区二区三区中文 | 国产精品一码二码三码在线 | 国产伦精品一区二区三区照片91 | 精品久久久久久国产三级 | 一区二区三区成人 | 亚洲视频精品在线 | 狠狠躁夜夜躁人人爽天天高潮 | 日本久久二区 | 国产 一区| 欧美激情欧美激情在线五月 | 91传媒在线播放 | 日韩有码电影 | 久久久精| 国产一级纯肉体一级毛片 | 依人成人网 | 成人免费淫片aa视频免费 | 日韩欧美精品 | 国产美女在线观看 | 中文字幕免费在线 | 自拍偷拍精品 | 亚洲综合欧美日韩 | 日韩一区欧美 | 久久久精品影院 | 日本成人中文字幕 | 久久国产一区 | 欧美日韩电影一区二区三区 | 亚洲视频在线观看免费 | 精品美女久久久 | 五月婷综合 | 亚洲高清视频一区 | 男人天堂网av | h视频免费观看 | 欧美视频在线免费 | 国产成人免费视频 | 蜜臀网 | 亚洲深深色噜噜狠狠网站 | 91一区 | 天天插天天 | 99热在线免费观看 | 日日干夜夜干 | 久久精品一区二区三区四区 | 国产一区二区免费 | 亚洲精品粉嫩美女一区 | 91在线视频在线 | 国产精品久久久久久久久久久免费看 | 在线播放91| 99re热精品视频国产免费 | 精品日韩一区 | 欧美亚洲性视频 | 中文字幕免费视频观看 | 狠狠躁日日躁夜夜躁东南亚 | 国产高清精品一区二区三区 | 亚洲精品字幕 | 一区二区中文字幕 | 日日操视频 | 久久女人网 | 国产一级片在线 | 欧洲成人午夜免费大片 | 成人妇女免费播放久久久 | 天天爽夜夜春 | 一区二区久久 | 欧美在线观看一区 | 久久久久久这里只有精品 | 国产精品高潮呻吟久久av黑人 | 黄色小视频在线观看 | 国产高清亚洲 | 超级碰在线 | 国产成人一区二区三区 | 国产一区二区视频精品 | 午夜视频在线观看网站 | 久久国产精品久久久久久电车 | 欧美日韩一区二区在线观看 | 精品久久久久香蕉网 | 久久九九| 成人高清在线 | 久久精品免费观看视频 | 国产一区二区三区在线 | 国产成人免费 | 久草 在线 | 国产精品视频专区 | 国产精品视频免费播放 | 国产精品一区二区三区四区 | 色黄网站| 欧美日韩一区二区视频在线观看 | 精品国产乱码一区二区三 | 91污在线 | 蜜桃免费一区二区三区 | 久久久久久婷婷 | 精品视频一区二区在线 | 日韩免费观看视频 | 999国产一区二区三区四区 | 天天干天天搞天天射 | 久久国产精品无码网站 | 久久精品久久久久电影 | 中文字幕 亚洲一区 | 国产欧美精品一区二区三区 | 婷婷五综合 | 亚洲视频在线播放 | 成人在线免费网站 | 激情综合久久 | 亚洲一区二区三区免费观看 | 两性午夜视频 | 亚洲国产欧美在线 | 日本激情视频一区二区三区 | 欧美天堂在线观看 | 国产精品久久久久久久久久免费 | 97成人在线 | 亚洲综合在线一区 | 亚洲一区二区在线播放 | 成人精品一区二区三区中文字幕 | 视频二区 | k8久久久一区二区三区 | 中文 日韩 欧美 | 另类免费视频 | 亚洲深深色噜噜狠狠网站 | 黄色三级视频 | 久久亚洲欧美日韩精品专区 | 国产精品视频久久 | 日韩欧美国产一区二区三区 | 色黄网站| 午夜爽爽爽 | 色呦呦日韩| 中文字幕在线第二页 | 午夜免费| 国产三级在线播放 | 午夜久久| 91视频在线观看 | 精品一二三区在线观看 | 亚洲精选国产 | 亚洲欧洲综合av | 一区二区三区国产亚洲网站 | 亚洲视频三区 | 欧美日韩国产高清 | av一区二区三区 | 成人久久久久久久久 | 久久久久久久国产 | 欧美成人精品在线视频 | 国产精品欧美一区二区三区 | 日韩免费在线观看视频 | 人人爱超碰 | 少妇精品久久久久久久久久 | 2021最新热播中文字幕-第1页-看片视频 青青青久草 | 一区二区三区 在线 | 国产情侣在线视频 | 亚洲成人久久久 | 欧美视频一区二区三区在线观看 | 免费亚洲网站 | 狠狠久久伊人中文字幕 | 成人av免费在线观看 | 色鲁97精品国产亚洲 | 国产欧美日韩精品一区 | 日韩免费一区 | 国产a视频| 日韩中文字幕av | 国产美女高潮一区二区三区 | 麻豆精品久久久 | 国产精品人人做人人爽 | av三级在线免费观看 | 一区二区三区精品 | 中文在线a在线 | 日韩中文字幕电影在线观看 | 一区二区三区久久 | 中文字幕第56页 | 久久免费精品 | 国产精品一区二 | 欧美亚洲免费 | 波多野结衣 一区二区三区 精品精品久久 | 欧美精品一区自拍a毛片在线视频 | 一级二级黄色大片 | 色婷婷av久久久久久久 | 成人在线网址 | 久久爱电影| 综合五月 | 欧美精品一区在线 | 欧美在线视频一区 | 久久人人爽人人爽人人片亚洲 | 午夜剧 | 九色porny国模私拍av | 亚洲精品成人av | 黄色片地址 | 亚洲一区视频在线 | 国产福利视频在线观看 | 国产精品高潮呻吟久久av黑人 | 成av在线| 久久精品毛片 | 欧美大成色www永久网站婷 | 日韩中文字幕免费视频 | 欧美黄色一区二区 | 国产精品网站在线看 | 国产又粗又长又硬又猛电影 | 夜夜操com | 欧美日韩精品一区二区三区在线观看 | 日本免费电影一区 | 精品国产乱码久久久久久88av | 91亚洲国产成人久久精品网站 | 日韩大片播放器 | 免费一级在线观看 | 国产91福利视频 | 欧美高清成人 | 99久久久久久久久 | 一区二区日韩在线观看 | 成人精品视频在线观看 | 免费毛片在线播放 | 欧美日韩精品在线 | 欧美一级淫片免费看 | 久久99精品国产91久久来源 | 一区日韩 | 亚洲精品免费在线观看 | 亚洲成人在线观看视频 | 亚洲免费视频大全 | 久热免费在线观看 | 这里有精品在线视频 | 国产精品高潮呻吟av久久4虎 | 午夜精品久久久 | 免费一级在线观看 | 亚洲精品一区二区三区蜜桃久 | 91视频免费观看 | 韩国三级中文字幕hd久久精品 | 亚洲天堂久 | 一区二区三区福利视频 | 久久九九精品久久 | 久久99精品国产自在现线 | 欧美在线亚洲 | 亚洲国产天堂久久综合 | 国产欧美精品一区二区三区 | 美女一区二区三区四区 | 精品久久久久一区二区国产 | 91麻豆精品国产91久久久久久 | 伊人网站 | 亚洲午夜在线 | a免费观看 | 国产精品一区二区三区免费 | 高清日韩av | 成人亚洲一区二区 | 亚洲黄色av网站 | 一区二区三区久久 | 久久成人在线 | 午夜在线影院 | 久久久精品综合 | 欧美一区二区三 | 99久久精品免费看国产免费粉嫩 | 久久精品欧美一区二区三区不卡 | 午夜寂寞少妇aaa片毛片 | 91精品国产一区二区 | 国产视频一区二区在线观看 | 不卡一区二区三区四区 | 亚洲 成人 av | 色av一区| 日夜夜精品视频 | 久久久久久久91 | 伊人网伊人 | 亚洲视频一区二区三区 | 久久av一区二区三区 | 久久精品麻豆 | 日韩一区二区三区在线视频 | 91视频免费观看网址 | 国产日韩欧美一区二区 | 超碰在线91| 91精品国产一区二区 | 日韩精品视频免费在线观看 | 日韩视频中文字幕 | 国产91对白叫床清晰播放 | www.av在线| 精品成人一区 | 国产精品一二三区 | www国产一区 | 国产一区二区三区四区五区加勒比 | 操操网站| 亚洲精品专区 | a欧美| 日本女人高潮视频 | 成人网久久 | 精品欧美一区二区三区久久久 | 成人亚洲精品久久久久软件 | 91精品欧美久久久久久动漫 | 91精品福利 | 日韩久久久久久久久久久 | 欧美一区二区三区视频 | 精品久久久久一区二区国产 | 精品视频在线观看 | 自拍偷拍小视频 | 成人福利视频 | 中文字幕一区二区三区在线视频 | 亚洲一区精品在线 | www.久久久.com | 亚洲免费av片 | 亚洲一区二区在线播放 | 国产午夜视频 | 久产久精品 | 美女视频黄色 | 99re视频在线观看 | 国产亚洲一区二区三区 | 欧美性猛交一区二区三区精品 | 精品久久久久av | 国产精品一区二区三区在线 | 亚洲一区二区中文字幕 | 中文字幕av亚洲精品一部二部 | 天天色天天看 | 黄色a视频 | 色在线免费视频 | 色婷婷导航 | 国产一区二区资源 | 久久资源av| 日韩精品一区二区三区中文在线 | 一级毛片在线播放 | 成人亚洲电影 | 中文字幕亚洲精品 | 久久精品久久久久久久久久16 | 性色视频在线 | 国产 欧美 日韩 一区 | 亚洲91精品 | 欧美日韩一区二区电影 | 精品国产一区二区三区久久影院 | xnxx 美女19 | 日韩精品视频在线播放 | 在线视频亚洲 | 日韩www视频 | 午夜寂寞少妇aaa片毛片 | 一区二区免费视频观看 | 亚洲精选久久久 | 国产中文一区 | 日本私人网站在线观看 | 日韩一级免费观看 | 久久亚洲一区二区 | 亚洲一区二区在线电影 | 亚洲一区二区三区四区在线观看 | 在线观看91| 日本在线观看一区 | 粉嫩高清一区二区三区精品视频 | 一区二区在线视频 | a级片网站 | 精品免费视频 | 久久精品久久久久久 | 亚洲精选久久久 | 国产精品午夜电影 | 久久亚洲综合 | 亚洲综合二 | 日日干日日操 | 亚洲视频区 | 欧美一二三四成人免费视频 | 国产一区二区三区在线免费观看 | 不卡二区 | 色5月婷婷丁香六月 | 久久久久久国产免费 | 大陆一级毛片免费视频观看 | 国产精品久久久久久久7电影 | 91视频入口| 在线欧美日韩 | 欧美日韩一区二区视频在线观看 | 日韩av片在线免费观看 | 国产精品美女视频免费观看软件 | 久久精品成人一区二区三区蜜臀 | 欧美一区二区三区四区五区 | 欧美一区在线视频 | 一区二区三区在线免费播放 | 99精品99 | 九九热在线免费视频 | 国产精品成人免费视频 | 一区二区三区高清不卡 | 夜夜精品视频 | 99re6在线视频精品免费 | 欧美激情精品久久久久久免费 | 亚洲成人一区二区 | 国产小视频在线播放 | 日韩免费av网站 | 亚洲一区二区福利 | 欧美一区二区在线播放 | 天天视频成人 | 国产精品成人国产乱一区 | 欧美成人一区二区三区片免费 | 午夜影院免费体验区 | 精品久久久久久久久久久久久久 | 精品国产不卡一区二区三区 | 欧美午夜精品一区二区三区电影 | 国产小视频在线 | 日韩视频一区二区三区 | 91免费看片 | 日本一区二区三区中文字幕 | 91精品国产综合久久国产大片 | 国产91久久精品一区二区 | 黄色成人在线 | 国产激情久久久久久 | 精品91| 国产成人精品一区二区三区视频 | 91豆花视频 | 久久久久久久久久久久91 | 欧日韩不卡在线视频 | 欧美极品视频 | 午夜视频在线 | 色久在线 | 狠狠伊人| 国产精品久久久久久久久久久久久久 | 成人在线观 | 在线成人一区 | 国产欧美久久久久久 | 日韩在线观看中文字幕 | 91久久久www播放日本观看 | 日韩一区二区三区在线播放 | 久草免费在线 | 少妇久久久久 | 久久久精品免费观看 | 国产精品亚洲精品久久 | av大片网| cao视频| 免费一区 | 小草av| 国产精品久久国产精品 | 91精品国产综合久久香蕉922 | 久久久www成人免费无遮挡大片 | 亚洲cb精品一区二区三区 | h视频免费观看 | 美女视频一区二区三区 | 中文字幕一区二区三区日韩精品 | 国产aaa毛片| 爱爱视频网站 | 久久久精品免费观看 | 99视频在线看 | 久久国产精品无码网站 | 国产精品18久久久久久首页狼 | 夜夜操com | www.日韩精品.com | 亚洲成人精品在线观看 | 国产欧美一区二区精品忘忧草 | 久久国产精品久久久久久久久久 | 亚洲国产精品久久久久秋霞蜜臀 | 精品国产一级毛片 | 狠狠干av | 中国黄色在线视频 | 亚洲男人天堂2024 | 欧美午夜精品久久久 | 日本一区二区三区视频免费看 | 色就是色网站 | 欧美日韩精品一区二区三区 | 亚洲精品久久久久久一区二区 | 国产久 | 999这里只有精品 | 亚洲精品一区在线观看 | 精品福利在线 | 亚洲一区久久 | 龙珠z国语291集普通话 | 巴西性猛交xxxx免费看久久久 | 成人自拍视频 | 久久久久亚洲精品 | 久久男人天堂 | 欧美精品一区二区在线观看 | 欧美电影一区二区三区 | 中文一区| 在线视频91 | 青青草av| 精品亚洲永久免费精品 | 色av综合在线 | 精品国产一区二区三区久久影院 | 国产精品久久久久久吹潮 | 999精品视频| 日本不卡视频 | 欧洲一级黄 | 午夜视频| 激情欧美一区二区三区中文字幕 | 日韩成人国产 | 国产小视频在线播放 | 人人澡人人射 | 欧美国产视频 | 久久精品99 | 国产精品国产精品国产专区不卡 | 在线播放黄色片网站 | 在线观看一区二区三区四区 | 成年免费观看视频 | 亚洲国产精品久久久男人的天堂 | 亚洲成人av片 | 欧美性一区二区三区 | 欧美一级黄色片 | 美女久久久久 | 玖玖色资源 | 欧洲美女7788成人免费视频 | www.男人天堂| 亚洲一级黄色 | 日韩一区二区免费视频 | 欧美午夜精品久久久久久人妖 | 成人在线免费网站 | 国产中文字幕一区 | 午夜精品视频 | 日韩精品成人 | 欧美国产日韩在线观看 | 精久久 | 精品一区二区av | 亚洲成人精品在线观看 | 成人午夜性a一级毛片免费看 | 国产欧美精品一区二区三区 | 精品国产一区二区三区高潮视 | 国产精品网站在线看 | 国产午夜精品美女视频明星a级 | 久久久久久久久久久网站 | 日韩欧美一区二区三区视频 | 久久久久久久久综合 | 日韩成人影院在线观看 | 久久伊人操 | 天天操天天拍 | 日韩不卡一区二区三区 | 91精品国产综合久久久久久丝袜 | 综合久久99| 中文字幕亚洲一区 | 成人国产| 亚洲欧美在线免费 | 国产久| 久久麻豆| 天堂一区二区三区 | 91精品国产91久久久久久不卡 | 欧洲黄色 级黄色99片 | 久久久久国产精品免费免费搜索 | 国产精品一区二区三区在线 | 日韩免费 | 久久精品国产99国产 | 亚洲a网| 狠狠爱www人成狠狠爱综合网 | 免费在线黄色电影 | 四虎永久网址 | av一级久久 | 色综合天天综合网国产成人网 | 日韩专区中文字幕 | 日韩在线不卡 | 久久久久久久一区二区三区 | 色爱区综合| 一级欧美一级日韩片 | 午夜在线小视频 | 日韩在线观看一区 | 高清视频一区 | 国产午夜精品久久 | 欧美视频一区 | 蜜桃视频成人m3u8 | av在线精品 | 久久久久久艹 | 久草视频在线观 | av在线一区二区三区 | 欧美二区在线 | 五月婷婷丁香 | 久久99亚洲精品 | 国产精品一区二区三区免费 | 日韩一区二区在线播放 | www中文字幕 | 成人免费高清视频 | 交视频在线观看国产 | 国产午夜精品一区二区三区 | 亚洲国产伊人 | 91精品国产91久久久久久不卡 | av超碰| 亚洲黄色免费观看 | 中文字幕自拍偷拍 | 久久窝 | 97国产超碰 | www.99精品 | 亚洲国产精品麻豆 | 色婷婷一区二区三区四区 | 黄色骚片| 国产剧情一区二区三区 | 粉嫩高清一区二区三区精品视频 | 成人亚洲视频 | 国产精品爱久久久久久久 | 亚洲美女精品视频 | 日韩亚洲精品在线观看 | 亚洲精选免费视频 | 91精品久久久久久久久久入口 | 久久久999精品视频 五月天婷婷在线视频 | 国产精品中文字幕在线观看 | 久久一区| 日日操天天操 | 久久久久国产精品一区二区 | 国产成在线观看免费视频 | 一级欧美一级日韩 | 国产欧美一区二区精品性色 | 91精品国产色综合久久不卡98口 | 69久久99精品久久久久婷婷 | 欧美精品福利视频 | 不卡久久 | 麻豆av电影在线观看 | 亚洲香蕉视频 | 精品国产精品 | 国产色视频在线观看免费 | 精品国产一区二区三区免费 | 欧美日韩精品免费观看视频 | 看一级毛片视频 | 精品自拍视频 | 能在线观看的黄色网址 | 国产成人精品午夜视频' | 伊人伊人 | 第一色视频 | 在线精品自拍 | 亚洲精品美女视频 | 九九视频这里只有精品 | 久久久999成人 | 美女久久久久 | 成人精品一区二区三区中文字幕 | 亚洲精品一区二区另类图片 | 狠狠草视频 | 精品国产一区二区三区久久久 | 国产精品自产av一区二区三区 | 国产欧美精品一区 | 神马久久久久久久久 | 欧美日韩综合精品 | 中文字幕精品三区 | 精品久久久久久久久久 |