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

系統(tǒng)中的大管家—SystemServer進(jìn)程

移動(dòng)開發(fā) Android
這個(gè)進(jìn)程負(fù)責(zé)啟動(dòng)和管理JavaFramework層,也就是提供了框架層的很多服務(wù),比如我們熟知的AMS,PMS,WMS,還有DisplayManagerService、CameraService等等,也就是說它掌握了Android系統(tǒng)中的命脈,是Android系統(tǒng)中的大管家。

[[374543]]

 

本文轉(zhuǎn)載自微信公眾號(hào)「碼上積木」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系碼上積木公眾號(hào)。

前言

上篇說到Android系統(tǒng)的啟動(dòng)流程,Zygote進(jìn)程fork的第一個(gè)進(jìn)程就是SystemServer進(jìn)程。

這個(gè)進(jìn)程負(fù)責(zé)啟動(dòng)和管理JavaFramework層,也就是提供了框架層的很多服務(wù),比如我們熟知的AMS,PMS,WMS,還有DisplayManagerService、CameraService等等,也就是說它掌握了Android系統(tǒng)中的命脈,是Android系統(tǒng)中的大管家。

一起瞅瞅吧~

(本文源碼基于Android9.0)

誕生

之前在Android系統(tǒng)的啟動(dòng)過程中???說到,SystemServer進(jìn)程是由Zygote進(jìn)程fork而來。

fork()函數(shù)通過系統(tǒng)調(diào)用創(chuàng)建一個(gè)與原來進(jìn)程幾乎完全相同的進(jìn)程,可以理解為COPY了一個(gè)進(jìn)程出來,而這個(gè)新進(jìn)程就是它的子進(jìn)程。

而關(guān)于SystemServer的誕生,還要從ZygoteInit的forkSystemServer方法說起...(只保留主要代碼)

  1. private static Runnable forkSystemServer(String abiList, String socketName, 
  2.            ZygoteServer zygoteServer) { 
  3.        //...  
  4.  
  5.        // 1 
  6.        int pid; 
  7.        pid = Zygote.forkSystemServer( 
  8.                    parsedArgs.uid, parsedArgs.gid, 
  9.                    parsedArgs.gids, 
  10.                    parsedArgs.runtimeFlags, 
  11.                    null
  12.                    parsedArgs.permittedCapabilities, 
  13.                    parsedArgs.effectiveCapabilities); 
  14.  
  15.        /* For child process */ 
  16.        if (pid == 0) { 
  17.            //2 
  18.            zygoteServer.closeServerSocket(); 
  19.            //3 
  20.            return handleSystemServerProcess(parsedArgs); 
  21.        } 
  22.  
  23.        return true
  24.    } 
  25.  
  26.    /** 
  27.     * Finish remaining work for the newly forked system server process. 
  28.     */ 
  29.    private static Runnable handleSystemServerProcess(ZygoteConnection.Arguments parsedArgs) { 
  30.  
  31.            //...  
  32.  
  33.            /* 
  34.             * Pass the remaining arguments to SystemServer. 
  35.             */ 
  36.            ZygoteInit.zygoteInit(parsedArgs.targetSdkVersion, parsedArgs.remainingArgs, cl); 
  37.    } 
  38.  
  39.  
  40.    public static final Runnable zygoteInit(int targetSdkVersion, String[] argv, ClassLoader classLoader) { 
  41.        //... 
  42.  
  43.     //4  
  44.        RuntimeInit.commonInit(); 
  45.        //5 
  46.        ZygoteInit.nativeZygoteInit(); 
  47.        //6 
  48.        return RuntimeInit.applicationInit(targetSdkVersion, argv, classLoader); 
  49.    } 

startSystemServer方法中:

  • 1、調(diào)用forkSystemServer方法創(chuàng)建了子進(jìn)程——SystemServer進(jìn)程。
  • 2、fork之后,這里判斷了fork的返回值pid是否等于0,如果等于0,就代表fork成功,就處在SystemServer進(jìn)程中了。然后關(guān)閉了從Zygote進(jìn)程fork帶來的Socket對象。
  • 3、然后調(diào)用了handleSystemServerProcess方法,并最終走到zygoteInit,做了一些新進(jìn)程的初始化工作。

zygoteInit方法中:

  • 4、commonInit方法就是做了一些進(jìn)程通用的初始化工作,比如設(shè)置時(shí)區(qū),重置log配置。
  • 5、nativeZygoteInit方法通過JNI會(huì)走到native層,主要的工作就是創(chuàng)建了新的Binder線程池,這樣SystemServer才能和各大app進(jìn)程進(jìn)行通信。
  • 6、applicationInit方法,最終會(huì)走到findStaticMain方法中,通過反射調(diào)用SystemServer類的main方法,簡單貼下代碼:
  1. protected static Runnable findStaticMain(String className, String[] argv, 
  2.            ClassLoader classLoader) { 
  3.        Class<?> cl; 
  4.  
  5.        try { 
  6.            cl = Class.forName(className, true, classLoader); 
  7.        }  
  8.        //... 
  9.  
  10.        Method m; 
  11.        try { 
  12.            m = cl.getMethod("main", new Class[] { String[].class }); 
  13.        }  
  14.        //... 
  15.       
  16.        return new MethodAndArgsCaller(m, argv); 
  17.    } 

工作

SystemServer進(jìn)程創(chuàng)建出來了,并且做了一些初始化工作,接下來就來到了main方法了,顧名思義,肯定要開始正經(jīng)主要的工作了。

  1. public static void main(String[] args) { 
  2.         new SystemServer().run(); 
  3.     } 
  4.  
  5.  
  6.     private void run() { 
  7.         try { 
  8.             //... 
  9.  
  10.             // 1 
  11.             android.os.Process.setThreadPriority( 
  12.                 android.os.Process.THREAD_PRIORITY_FOREGROUND); 
  13.             android.os.Process.setCanSelfBackground(false); 
  14.  
  15.             Looper.prepareMainLooper(); 
  16.             Looper.getMainLooper().setSlowLogThresholdMs( 
  17.                     SLOW_DISPATCH_THRESHOLD_MS, SLOW_DELIVERY_THRESHOLD_MS); 
  18.  
  19.             // 2 
  20.             System.loadLibrary("android_servers"); 
  21.  
  22.             // 3 
  23.             performPendingShutdown(); 
  24.  
  25.             // 4 
  26.             createSystemContext(); 
  27.  
  28.             // 5 
  29.             mSystemServiceManager = new SystemServiceManager(mSystemContext); 
  30.             mSystemServiceManager.setStartInfo(mRuntimeRestart, 
  31.                     mRuntimeStartElapsedTime, mRuntimeStartUptime); 
  32.             LocalServices.addService(SystemServiceManager.class, mSystemServiceManager); 
  33.             // Prepare the thread pool for init tasks that can be parallelized 
  34.             SystemServerInitThreadPool.get(); 
  35.         } finally { 
  36.             traceEnd();  
  37.         } 
  38.  
  39.         //... 
  40.  
  41.         // Start services. 
  42.         try { 
  43.             //6 
  44.             startBootstrapServices(); 
  45.             //7 
  46.             startCoreServices(); 
  47.             //8 
  48.             startOtherServices(); 
  49.             SystemServerInitThreadPool.shutdown(); 
  50.         }  
  51.  
  52.         //... 
  53.  
  54.         // Loop forever. 
  55.         Looper.loop(); 
  56.         throw new RuntimeException("Main thread loop unexpectedly exited"); 
  57.     }     
  • 1、準(zhǔn)備主線程,Looper。
  • 2、加載動(dòng)態(tài)庫。
  • 3、檢測上次關(guān)機(jī)過程是否失敗。
  • 4、初始化系統(tǒng)上下文。
  1. private void createSystemContext() { 
  2.         ActivityThread activityThread = ActivityThread.systemMain(); 
  3.         mSystemContext = activityThread.getSystemContext(); 
  4.         mSystemContext.setTheme(DEFAULT_SYSTEM_THEME); 
  5.  
  6.         final Context systemUiContext = activityThread.getSystemUiContext(); 
  7.         systemUiContext.setTheme(DEFAULT_SYSTEM_THEME); 
  8.     } 

在這個(gè)方法中,創(chuàng)建了ActivityThread類,獲取了上下文,并設(shè)置了一些系統(tǒng)主題。

  • 5、創(chuàng)建SystemServiceManager,用于后續(xù)的系統(tǒng)服務(wù)管理創(chuàng)建等工作。

run方法最后的工作就是啟動(dòng)三個(gè)服務(wù)類型的服務(wù),也是我們重點(diǎn)關(guān)注的,分別是引導(dǎo)服務(wù),核心服務(wù),其他服務(wù)。

這些服務(wù)一共有100多個(gè),關(guān)系著Android整個(gè)應(yīng)用生態(tài),下面我們具體說下。

  • 6、啟動(dòng)引導(dǎo)服務(wù)
  1. private void startBootstrapServices() { 
  2.  
  3.         //安裝APK服務(wù) 
  4.         traceBeginAndSlog("StartInstaller"); 
  5.         Installer installer = mSystemServiceManager.startService(Installer.class); 
  6.         traceEnd(); 
  7.  
  8.         //AMS,負(fù)責(zé)四大組件的啟動(dòng)調(diào)度等工作 
  9.         mActivityManagerService = mSystemServiceManager.startService( 
  10.                 ActivityManagerService.Lifecycle.class).getService(); 
  11.         mActivityManagerService.setSystemServiceManager(mSystemServiceManager); 
  12.         mActivityManagerService.setInstaller(installer); 
  13.         traceEnd(); 
  14.  
  15.  
  16.         // 管理和顯示背光LED等服務(wù) 
  17.         traceBeginAndSlog("StartLightsService"); 
  18.         mSystemServiceManager.startService(LightsService.class); 
  19.         traceEnd(); 
  20.  
  21.         //PMS,負(fù)責(zé)APK安裝,解析卸載等工作 
  22.         traceBeginAndSlog("StartPackageManagerService"); 
  23.         mPackageManagerService = PackageManagerService.main(mSystemContext, installer, 
  24.                 mFactoryTestMode != FactoryTest.FACTORY_TEST_OFF, mOnlyCore); 
  25.         mFirstBoot = mPackageManagerService.isFirstBoot(); 
  26.         mPackageManager = mSystemContext.getPackageManager(); 
  27.         traceEnd(); 
  28.  
  29.         //... 
  30.  
  31.     } 

引導(dǎo)服務(wù)中,有幾個(gè)我們畢竟熟悉的,比如AMS、PMS。

  • 7、啟動(dòng)核心服務(wù)
  1. private void startCoreServices() { 
  2.         traceBeginAndSlog("StartBatteryService"); 
  3.         // 管理電池相關(guān)服務(wù) 
  4.         mSystemServiceManager.startService(BatteryService.class); 
  5.         traceEnd(); 
  6.  
  7.         // 收集用戶使用時(shí)長服務(wù) 
  8.         traceBeginAndSlog("StartUsageService"); 
  9.         mSystemServiceManager.startService(UsageStatsService.class); 
  10.         mActivityManagerService.setUsageStatsManager( 
  11.                 LocalServices.getService(UsageStatsManagerInternal.class)); 
  12.         traceEnd(); 
  13.  
  14.         // Webview更新服務(wù) 
  15.         if (mPackageManager.hasSystemFeature(PackageManager.FEATURE_WEBVIEW)) { 
  16.             traceBeginAndSlog("StartWebViewUpdateService"); 
  17.             mWebViewUpdateService = mSystemServiceManager.startService(WebViewUpdateService.class); 
  18.             traceEnd(); 
  19.         } 
  20.  
  21.         //... 
  22.     } 
  • 8、啟動(dòng)其他服務(wù)
  1. private void startOtherServices() { 
  2.    //... 
  3.   
  4.             //電話管理服務(wù) 
  5.             traceBeginAndSlog("StartTelephonyRegistry"); 
  6.             telephonyRegistry = new TelephonyRegistry(context); 
  7.             ServiceManager.addService("telephony.registry", telephonyRegistry); 
  8.             traceEnd();     
  9.  
  10.  
  11.             //WMS,窗口管理服務(wù),也是打交道比較多的 
  12.             traceBeginAndSlog("StartWindowManagerService"); 
  13.             ConcurrentUtils.waitForFutureNoInterrupt(mSensorServiceStart, START_SENSOR_SERVICE); 
  14.             mSensorServiceStart = null
  15.             wm = WindowManagerService.main(context, inputManager, 
  16.                     mFactoryTestMode != FactoryTest.FACTORY_TEST_LOW_LEVEL, 
  17.                     !mFirstBoot, mOnlyCore, new PhoneWindowManager()); 
  18.             ServiceManager.addService(Context.WINDOW_SERVICE, wm, /* allowIsolated= */ false
  19.                     DUMP_FLAG_PRIORITY_CRITICAL | DUMP_FLAG_PROTO); 
  20.             ServiceManager.addService(Context.INPUT_SERVICE, inputManager, 
  21.                     /* allowIsolated= */ false, DUMP_FLAG_PRIORITY_CRITICAL); 
  22.             traceEnd(); 
  23.  
  24.  
  25.             //輸入事件管理服務(wù) 
  26.             traceBeginAndSlog("StartInputManager"); 
  27.             inputManager.setWindowManagerCallbacks(wm.getInputMonitor()); 
  28.             inputManager.start(); 
  29.             traceEnd();      
  30.  
  31.             //...      

啟動(dòng)了這么多服務(wù),我們再看一下服務(wù)都是怎么具體啟動(dòng)的:

  1. public <T extends SystemService> T startService(Class<T> serviceClass) { 
  2.        try { 
  3.            final String name = serviceClass.getName(); 
  4.  
  5.            // Create the service. 
  6.            final T service; 
  7.            try { 
  8.                Constructor<T> constructor = serviceClass.getConstructor(Context.class); 
  9.                service = constructor.newInstance(mContext); 
  10.            } //... 
  11.            startService(service); 
  12.            return service; 
  13.        } finally { 
  14.            Trace.traceEnd(Trace.TRACE_TAG_SYSTEM_SERVER); 
  15.        } 
  16.    } 
  17.  
  18.    // 所有系統(tǒng)服務(wù)的集合 
  19.    private final ArrayList<SystemService> mServices = new ArrayList<SystemService>();     
  20.  
  21.    public void startService(@NonNull final SystemService service) { 
  22.        // Register it. 
  23.        mServices.add(service); 
  24.        // Start it. 
  25.        long time = SystemClock.elapsedRealtime(); 
  26.        try { 
  27.            service.onStart(); 
  28.        } catch (RuntimeException ex) { 
  29.            throw new RuntimeException("Failed to start service " + service.getClass().getName() 
  30.                    + ": onStart threw an exception", ex); 
  31.        } 
  32.        warnIfTooLong(SystemClock.elapsedRealtime() - time, service, "onStart"); 
  33.    } 

可以看到,首先通過反射創(chuàng)建了對應(yīng)的Service類,然后把對應(yīng)的Service加入到mServices集合中,完成注冊。然后調(diào)用onStart方法啟動(dòng)對應(yīng)的Service,完成初始化工作。

到這里,SystemServer的啟動(dòng)工作就完成了,再來回顧下,這個(gè)過程,到底干了些啥?

  • 首先,Zygote fork了SystemServer這個(gè)子進(jìn)程,然后關(guān)閉了原有的socket,創(chuàng)建了新的Binder線程池。
  • 其次,做了一些初始化工作,創(chuàng)建了Context對象,創(chuàng)建了SystemServiceManager類,用于管理所有的系統(tǒng)服務(wù)。
  • 最后,啟動(dòng)了三類系統(tǒng)服務(wù),分別是引導(dǎo)服務(wù),核心服務(wù)和其他服務(wù)。

體系知識(shí)延伸

Socket和Binder

我們注意到,在SystemServer被fork出來之后,做了一個(gè)操作就是關(guān)閉了Sokcet,啟動(dòng)了Binder線程池用于進(jìn)程間通信。問題來了,為啥Zygote進(jìn)程是用Socket通信,而SystemServer進(jìn)程是用Binder進(jìn)行通信呢?

其實(shí)這是兩個(gè)問題,第一個(gè)問題是問為什么Android獲取系統(tǒng)服務(wù)是用的Binder進(jìn)程通信呢?

這就涉及到Binder的知識(shí)點(diǎn)了,Binder之所以被設(shè)計(jì)出來,就是因?yàn)樗袇^(qū)別于其他IPC方式的兩大優(yōu)點(diǎn):

  • 性能高,效率高:傳統(tǒng)的IPC(套接字、管道、消息隊(duì)列)需要拷貝兩次內(nèi)存、Binder只需要拷貝一次內(nèi)存、共享內(nèi)存不需要拷貝內(nèi)存。
  • 安全性好:接收方可以從數(shù)據(jù)包中獲取發(fā)送發(fā)的進(jìn)程Id和用戶Id,方便驗(yàn)證發(fā)送方的身份,其他IPC想要實(shí)驗(yàn)只能夠主動(dòng)存入,但是這有可能在發(fā)送的過程中被修改。

第二個(gè)問題就是,為什么Zygote進(jìn)程不用Binder而用Socket通信呢?這也是wanAndroid中的一個(gè)問題:

每日一問 | Activity啟動(dòng)流程中,大部分都是用Binder通訊,為啥跟Zygote通信的時(shí)候要用socket呢?(https://www.wanandroid.com/wenda/show/10482)

評論區(qū)主要有以下觀點(diǎn):

  • ServiceManager不能保證在zygote起來的時(shí)候已經(jīng)初始化好,所以無法使用Binder。
  • Socket 的所有者是 root,只有系統(tǒng)權(quán)限用戶才能讀寫,多了安全保障。
  • Binder工作依賴于多線程,但是fork的時(shí)候是不允許存在多線程的,多線程情況下進(jìn)程fork容易造成死鎖,所以就不用Binder了。

Binder線程池

Binder線程池到底是什么?之前有讀者也問過類似的問題。

Binder線程池位于服務(wù)端,它的主要作用就是將每個(gè)業(yè)務(wù)模塊的Binder請求統(tǒng)一轉(zhuǎn)發(fā)到遠(yuǎn)程Servie中去執(zhí)行,從而避免了重復(fù)創(chuàng)建Service的過程。也就是服務(wù)端只有一個(gè),但是可以處理多個(gè)不同客戶端的Binder請求。

AMS,PMS,WMS

在SystemServer進(jìn)程啟動(dòng)的過程中,也啟動(dòng)了很多系統(tǒng)服務(wù),其中就包括和應(yīng)用交互比較多的三個(gè)服務(wù):

  • AMS,ActivityManagerService,負(fù)責(zé)四大組件的啟動(dòng),切換,調(diào)度工作。
  • PMS,PackageManagerService,負(fù)責(zé)APK的安裝,解析,卸載工作。
  • WMS,WindowManagerService,負(fù)責(zé)窗口啟動(dòng),添加,刪除等工作。

參考

《Android進(jìn)階解密》 https://www.wanandroid.com/wenda/show/10482 https://blog.csdn.net/yiranfeng/article/details/103550262

 

責(zé)任編輯:武曉燕 來源: 碼上積木
相關(guān)推薦

2011-07-01 14:55:54

saasvmware

2011-11-10 10:15:34

System Cent企業(yè)IT

2022-06-10 09:00:53

前端項(xiàng)目個(gè)JSON

2012-05-08 15:50:00

2014-12-17 10:32:51

Node.js開源項(xiàng)目

2025-09-01 01:45:00

2018-03-28 14:58:42

虛擬機(jī)內(nèi)核系統(tǒng)

2024-05-15 08:23:21

服務(wù)模塊Android

2022-01-06 15:21:32

pipPython技巧

2024-12-09 06:00:00

朱嘯虎張予彤運(yùn)營

2018-06-19 15:39:21

HeapJava虛擬機(jī)

2022-06-13 08:18:02

操作系統(tǒng)CPU保護(hù)模式

2015-12-08 10:50:46

戴爾云計(jì)算

2024-05-08 16:26:07

2016-10-28 21:30:00

AndroidJava進(jìn)程

2023-09-18 10:11:25

前端工具

2010-04-06 17:52:09

Oracle SMON

2012-05-04 09:49:34

進(jìn)程

2018-05-30 13:42:39

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

免费拍拍拍网站| http;//www.99re视频| 日韩一级av毛片| 91麻豆精品国产91久久久更新资源速度超快 | 精品国产一区二区三区| 91精品国产综合久久小美女| 3d动漫一区二区三区| 调教视频免费在线观看| 国产高清在线精品| 国产成+人+综合+亚洲欧洲| 91麻豆免费视频网站| 日本欧美高清| 欧美一区二区三区日韩视频| 久久网站免费视频| 粗大黑人巨茎大战欧美成人| 久久综合给合久久狠狠狠97色69| 91夜夜未满十八勿入爽爽影院 | 99久久久无码国产精品衣服| jizz18欧美18| 91麻豆精品91久久久久同性| 国产精品沙发午睡系列| 成人video亚洲精品| 久久久亚洲欧洲日产国码αv| 亚洲自拍小视频| 成人午夜精品视频| 在线亚洲成人| 久久久久久久久国产精品| 国产aaaaaaaaa| 亚洲免费观看高清完整版在线观| 精品蜜桃在线看| 在线播放av中文字幕| 日韩在线影院| 精品美女国产在线| 欧美乱大交xxxxx潮喷l头像| 中文字幕有码在线观看| 中文字幕亚洲综合久久菠萝蜜| 欧美久久久久久久| 国产综合无码一区二区色蜜蜜| 国产呦精品一区二区三区网站| 国产福利视频一区二区| 国产精品视频123| 在线精品亚洲| 欧美国产亚洲精品久久久8v| 性生交大片免费全黄| 欧美成人精品一区二区三区在线看| 亚洲欧美日韩综合| 黄色正能量网站| 亚洲精华一区二区三区| 日韩精品欧美激情| 色噜噜在线观看| 一道在线中文一区二区三区| 日韩毛片在线观看| 国产制服丝袜在线| 国产一区二区三区日韩精品 | 8x福利精品第一导航| 五月婷婷激情久久| 91精品店在线| 777a∨成人精品桃花网| 一级黄色片在线免费观看| 高清一区二区中文字幕| 91麻豆精品国产无毒不卡在线观看| 伊人色在线观看| www欧美在线观看| 91精品国产免费久久综合| 手机看片国产精品| 99国产精品免费网站| 亚洲精品国精品久久99热| 国产传媒第一页| 青青草综合网| 久久国产精品99国产精| 久一视频在线观看| 亚洲日韩视频| 国产精品成人播放| 国产欧美久久久精品免费| 国产精品1区二区.| 精品欧美国产一区二区三区不卡| 欧洲天堂在线观看| 一区二区中文视频| 免费特级黄色片| 欧美电影免费看| 欧美美女bb生活片| 欧美xxxxx精品| 精品视频亚洲| 久久6免费高清热精品| 欧美a∨亚洲欧美亚洲| 麻豆精品一区二区综合av| 97超级碰碰| 亚洲av成人无码网天堂| 日本一区二区三区免费乱视频| 一区二区在线观看网站| 91超碰在线| 欧美亚洲一区三区| 中文字幕1区2区| 国产精品午夜一区二区三区| 欧美精品在线第一页| 中文在线第一页| 国产九九视频一区二区三区| 九九九九九九精品| 免费在线视频欧美| 五月婷婷激情综合网| 欧美美女一级片| 成人线上播放| 日韩在线播放av| 韩国av中文字幕| 国产伦精一区二区三区| 欧美日韩国产不卡在线看| 国产成人高清精品| 91福利国产精品| chinese麻豆新拍video| 国产精品久久观看| 国产成人精品在线视频| 国产综合无码一区二区色蜜蜜| 中文一区二区在线观看| 欧美一级视频免费看| 国产午夜精品一区在线观看| 亚洲欧美综合v| 圆产精品久久久久久久久久久| 国内一区二区视频| 日韩精品一线二线三线| а√在线天堂官网| 欧美大片国产精品| 国产精品夜夜夜爽阿娇| 日韩不卡一区二区| 女同一区二区| 国产美女高潮在线观看| 欧美r级在线观看| 中国一级片在线观看| 日韩电影一二三区| 欧美日本亚洲| 欧美黄色网页| 亚洲欧美日韩国产中文| 国产成人无码精品久久久久| 国产精品自拍网站| 日韩理论片在线观看| 中文字幕 在线观看| 亚洲成人久久网| 日本三级中文字幕| 盗摄精品av一区二区三区| 天天做天天爱天天高潮| 日韩一级特黄| 久久久99久久精品女同性| 亚洲精品一区二区二区| 国产亚洲精品精华液| 久草资源站在线观看| 日本精品影院| 国产91色在线免费| 黄色在线小视频| 在线国产亚洲欧美| 手机毛片在线观看| 免费一级欧美片在线观看| 亚洲aⅴ天堂av在线电影软件| 日韩免费小视频| 一区二区欧美在线| 中文在线最新版天堂| 中文无字幕一区二区三区| 杨幂毛片午夜性生毛片| 水蜜桃精品av一区二区| 成人深夜直播免费观看| 性欧美ⅴideo另类hd| 欧美哺乳videos| 日产欧产va高清| www亚洲一区| 91极品尤物在线播放国产| 99tv成人| 国产精品入口免费| 色戒汤唯在线观看| 中文字幕精品网| 成人福利小视频| 精品久久久中文| 久久久免费看片| 国产传媒日韩欧美成人| 精品视频免费在线播放| 欧美精品一区二区久久| 成人免费看黄网站| av电影在线地址| 这里只有精品在线观看| 精品国自产在线观看| 午夜精品一区在线观看| 国产午夜福利一区| 国产精品一二三| 久久无码高潮喷水| 国产精品久久天天影视| 国产精品伊人日日| 国产亚洲一区二区手机在线观看| 久久国产精品免费视频| 手机福利小视频在线播放| 欧美色综合久久| 精品无码一区二区三区电影桃花| 91蝌蚪porny成人天涯| 九九九九九国产| 一本色道久久综合亚洲精品高清| 三区精品视频| 风间由美一区二区av101| 国产精品对白刺激| 黑人另类精品××××性爽| 亚洲日本欧美中文幕| 国产哺乳奶水91在线播放| 黑丝美女久久久| 老湿机69福利| 国产日韩欧美不卡在线| 亚洲精品一区二区18漫画| 日韩精品三区四区| 91.com在线| 91久久高清国语自产拍| 欧美日韩综合网| 国产 日韩 欧美 综合 一区| 国产精品丝袜久久久久久高清| 国产精品电影| 欧美肥婆姓交大片| 色综合久久久久综合一本到桃花网| 亚洲精品国产精品国产自| 国产美女www爽爽爽视频| 欧美亚洲国产一区二区三区va| 国产一级大片在线观看| 亚洲视频一区二区在线| 免费看污片的网站| 91网页版在线| 污污污www精品国产网站| 国产一区二区三区免费播放| 性刺激的欧美三级视频| 久久婷婷一区| 国产aaa一级片| 国产一区导航| 丰满的少妇愉情hd高清果冻传媒| 国产精品久久天天影视| 亚洲欧美日韩国产yyy| 国产免费久久| 农村寡妇一区二区三区| 日本天堂一区| 精品高清视频| 西野翔中文久久精品国产| 国产精品一区视频| 久本草在线中文字幕亚洲| 成人欧美一区二区| 亚洲国产中文在线| 91在线网站视频| 国产精品成人**免费视频| 国产女人精品视频| 欧美成a人片免费观看久久五月天| 日韩美女视频中文字幕| 一根才成人网| 日本亚洲欧美三级| 日本久久免费| 国产精品999999| 日韩精品一区二区三区av| 国产大片精品免费永久看nba| 欧美一区 二区 三区| 国产成人鲁鲁免费视频a| 成人在线免费av| 国产在线日韩在线| 国产免费av国片精品草莓男男| 91免费国产网站| 日本亚洲视频| 国产视频在线观看一区| 欧洲亚洲成人| 日本一区二区三区www| 成人在线免费观看网站| 宅男一区二区三区| 综合久久综合| 欧美视频在线观看网站| 噜噜噜躁狠狠躁狠狠精品视频| 欧美 日韩精品| 日本va欧美va欧美va精品| 9l视频白拍9色9l视频| 精品在线观看免费| 伊人av在线播放| 91麻豆成人久久精品二区三区| 久久久亚洲av波多野结衣| 国产精品丝袜一区| 乱h高h女3p含苞待放| 亚洲国产sm捆绑调教视频| 欧美激情黑白配| 欧美日韩一区二区欧美激情| www.亚洲黄色| 亚洲美女久久久| 老司机免费在线视频| 欧美激情亚洲视频| 高潮一区二区| 亚洲在线观看视频网站| 亚洲老女人视频免费| 夜夜爽99久久国产综合精品女不卡| 亚洲情侣在线| 欧美日韩在线视频一区二区三区| 久久99久久久欧美国产| 国产国语老龄妇女a片| 久久久一区二区| 欧美精品一区二区蜜桃| 91国模大尺度私拍在线视频| 99热这里只有精品1| 日韩激情视频在线播放| 日本电影在线观看网站| 97色在线视频观看| 欧美激情啪啪| 久久手机视频| 真实国产乱子伦精品一区二区三区| 日本一区二区黄色| 国产成人在线免费观看| 中文字幕人妻一区二区三区在线视频| 亚洲精选一二三| 国产精品成人久久久| 亚洲激情自拍图| 2024最新电影在线免费观看| 欧美专区在线观看| 人人爱人人干婷婷丁香亚洲| 欧美重口乱码一区二区| 在线不卡视频| 日韩精品视频网址| 国产欧美一区二区精品性| 日韩精品无码一区二区| 欧美一区二区免费| 99reav在线| 欧洲一区二区视频| 看全色黄大色大片免费久久久| 二级片在线观看| 奇米影视一区二区三区小说| 国产一级二级在线观看| 亚洲一区二区在线观看视频 | 狠狠色丁香婷婷综合| 人妻丰满熟妇aⅴ无码| 亚洲国产sm捆绑调教视频| h片在线免费看| 久久亚洲电影天堂| 欧美高清免费| 四虎永久国产精品| 老司机精品福利视频| 人妻丰满熟妇av无码久久洗澡 | 国产精品少妇在线视频| 91蜜桃传媒精品久久久一区二区| 免费在线观看黄视频| 日韩一区二区三区四区五区六区| 日本成a人片在线观看| 国产精品丝袜一区二区三区| 精品久久久久中文字幕小说| 成年人免费在线播放| 97se亚洲国产综合自在线不卡 | 在线观看免费小视频| 色综合视频在线观看| 日本私人网站在线观看| 欧美最近摘花xxxx摘花| 亚洲v天堂v手机在线| 成人免费毛片网| 久久亚洲一区二区三区明星换脸 | 国产jizz18女人高潮| 欧美三级三级三级爽爽爽| 春暖花开成人亚洲区| 国产精品美女999| 日韩免费视频| 17c国产在线| 999久久久亚洲| 国产精品一区二区久久精品| 精品久久久久久久久久久aⅴ| 99草草国产熟女视频在线| 久久九九99视频| 特级西西444www大胆免费看| 最近更新的2019中文字幕| 久久国产三级| 视频一区二区视频| 国产999精品久久久久久绿帽| 亚洲国产精一区二区三区性色| 亚洲国内精品在线| 欧美艳星kaydenkross| 日韩精品电影网站| 久草中文综合在线| 麻豆疯狂做受xxxx高潮视频| 亚洲电影中文字幕| 精品国产第一福利网站| 亚洲资源在线网| 国产精品18久久久久久久久| 国产在线视频在线观看| 精品一区二区三区电影| 成人免费在线观看视频| 蜜桃视频成人在线观看| av一本久道久久综合久久鬼色| 免费观看成人毛片| 日韩中文理论片| 国产精品巨作av| 欧美日韩在线免费播放| 国产精品久久久久7777按摩| 亚洲精品无码专区| 欧美主播福利视频| 999国产精品永久免费视频app| 人妻av一区二区三区| 色美美综合视频| 69xxx在线| 欧美一区二区三区四区五区六区| 国产一区美女在线| 久久一区二区三区视频| 久久亚洲精品中文字幕冲田杏梨| 国产精品香蕉| 爱爱爱爱免费视频| 午夜精品久久久久| 香蕉视频在线看| 久久婷婷开心| 激情小说亚洲一区| 一级成人黄色片| 久久91亚洲精品中文字幕| 欧美男同视频网| 成人做爰www看视频软件| 欧美在线免费观看亚洲| 91九色在线播放|