日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android系统启动-zygote篇

發布時間:2025/3/15 Android 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android系统启动-zygote篇 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

基于Android 6.0的源碼剖析, 分析Android啟動過程的Zygote進程

/frameworks/base/cmds/app_process/App_main.cpp (內含AppRuntime類) /frameworks/base/core/jni/AndroidRuntime.cpp /frameworks/base/core/java/com/android/internal/os/ZygoteInit.java /frameworks/base/core/java/com/android/internal/os/Zygote.java /frameworks/base/core/java/android/net/LocalServerSocket.java

一、啟動調用棧

Zygote啟動函數調用類的棧關系:

App_main.mainAndroidRuntime.startstartVmstartRegZygoteInit.mainregisterZygoteSocketpreloadstartSystemServerrunSelectLoop

二、App_main

Zygote是由init進程通過解析init.zygote.rc文件而創建的,zygote所對應的可執行程序app_process,所對應的源文件是App_main.cpp,進程名為zygote。

傳到main()的參數為?-Xzygote /system/bin --zygote --start-system-server

[–>App_main.cpp]

int main(int argc, char* const argv[]) {AppRuntime runtime(argv[0], computeArgBlockSize(argc, argv));//忽略第一個參數argc--;argv++;int i;for (i = 0; i < argc; i++) {if (argv[i][0] != '-') {break;}if (argv[i][1] == '-' && argv[i][2] == 0) {++i;break;}runtime.addOption(strdup(argv[i]));}//參數解析bool zygote = false;bool startSystemServer = false;bool application = false;String8 niceName;String8 className;++i;while (i < argc) {const char* arg = argv[i++];if (strcmp(arg, "--zygote") == 0) {zygote = true;niceName = ZYGOTE_NICE_NAME; //對于64位系統nice_name為zygote64,32位系統為zygote} else if (strcmp(arg, "--start-system-server") == 0) {startSystemServer = true;} else if (strcmp(arg, "--application") == 0) {application = true;} else if (strncmp(arg, "--nice-name=", 12) == 0) {niceName.setTo(arg + 12);} else if (strncmp(arg, "--", 2) != 0) {className.setTo(arg);break;} else {--i;break;}}Vector<String8> args;if (!className.isEmpty()) {// 運行application或tool程序args.add(application ? String8("application") : String8("tool"));runtime.setClassNameAndArgs(className, argc - i, argv + i);} else {//進入zygote模式,創建 /data/dalvik-cache路徑maybeCreateDalvikCache();if (startSystemServer) {args.add(String8("start-system-server"));}char prop[PROP_VALUE_MAX];if (property_get(ABI_LIST_PROPERTY, prop, NULL) == 0) {return 11;}String8 abiFlag("--abi-list=");abiFlag.append(prop);args.add(abiFlag);for (; i < argc; ++i) {args.add(String8(argv[i]));}}//設置進程名if (!niceName.isEmpty()) {runtime.setArgv0(niceName.string());set_process_name(niceName.string());}if (zygote) {// 啟動AppRuntime 【見小節3】runtime.start("com.android.internal.os.ZygoteInit", args, zygote);} else if (className) {runtime.start("com.android.internal.os.RuntimeInit", args, zygote);} else {//沒有指定類名或zygote,參數錯誤return 10;} }

采用cmd命令,是通過fork進程來執行相應的類:

app_process [可選參數] 命令所在路徑 啟動的類名 [可選參數]

三、AndroidRuntime

AndroidRuntime.cpp

void AndroidRuntime::start(const char* className, const Vector<String8>& options, bool zygote) {static const String8 startSystemServer("start-system-server");for (size_t i = 0; i < options.size(); ++i) {if (options[i] == startSystemServer) {const int LOG_BOOT_PROGRESS_START = 3000;}}const char* rootDir = getenv("ANDROID_ROOT");if (rootDir == NULL) {rootDir = "/system";if (!hasDir("/system")) {return;}setenv("ANDROID_ROOT", rootDir, 1);}JniInvocation jni_invocation;jni_invocation.Init(NULL);JNIEnv* env;// 虛擬機創建【見小節3.1】if (startVm(&mJavaVM, &env, zygote) != 0) {return;}onVmCreated(env);// JNI方法注冊【見小節3.2】if (startReg(env) < 0) {ALOGE("Unable to register all android natives\n");return;}jclass stringClass;jobjectArray strArray;jstring classNameStr;//等價 strArray= new String[options.size() + 1];stringClass = env->FindClass("java/lang/String");strArray = env->NewObjectArray(options.size() + 1, stringClass, NULL);//等價 strArray[0] = "com.android.internal.os.ZygoteInit"classNameStr = env->NewStringUTF(className);env->SetObjectArrayElement(strArray, 0, classNameStr);//等價 strArray[1] = "start-system-server";// strArray[2] = "--abi-list=xxx";其中xxx為系統響應的cpu架構類型,比如arm64-v8a.for (size_t i = 0; i < options.size(); ++i) {jstring optionsStr = env->NewStringUTF(options.itemAt(i).string());env->SetObjectArrayElement(strArray, i + 1, optionsStr);}//將"com.android.internal.os.ZygoteInit"轉換為"com/android/internal/os/ZygoteInit"char* slashClassName = toSlashClassName(className);jclass startClass = env->FindClass(slashClassName);if (startClass == NULL) {ALOGE("JavaVM unable to locate class '%s'\n", slashClassName);} else {jmethodID startMeth = env->GetStaticMethodID(startClass, "main","([Ljava/lang/String;)V");if (startMeth == NULL) {ALOGE("JavaVM unable to find main() in '%s'\n", className);} else {// 調用ZygoteInit.main()方法【見小節4.0】env->CallStaticVoidMethod(startClass, startMeth, strArray);}}free(slashClassName); //釋放相應對象的內存空間if (mJavaVM->DetachCurrentThread() != JNI_OK)ALOGW("Warning: unable to detach main thread\n");if (mJavaVM->DestroyJavaVM() != 0)ALOGW("Warning: VM did not shut down cleanly\n"); }

3.1 虛擬機創建startVm

[–>AndroidRuntime.cpp]

創建Java虛擬機方法的主要篇幅是關于虛擬機參數的設置,下面只列舉部分在調試優化過程中常用參數。

int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv, bool zygote) {// JNI檢測功能,用于native層調用jni函數時進行常規檢測,比較弱字符串格式是否符合要求,資源是否正確釋放。該功能一般用于早期系統調試或手機Eng版,對于User版往往不會開啟,引用該功能比較消耗系統CPU資源,降低系統性能。bool checkJni = false;property_get("dalvik.vm.checkjni", propBuf, "");if (strcmp(propBuf, "true") == 0) {checkJni = true;} else if (strcmp(propBuf, "false") != 0) {property_get("ro.kernel.android.checkjni", propBuf, "");if (propBuf[0] == '1') {checkJni = true;}}if (checkJni) {addOption("-Xcheck:jni");}//虛擬機產生的trace文件,主要用于分析系統問題,路徑默認為/data/anr/traces.txtparseRuntimeOption("dalvik.vm.stack-trace-file", stackTraceFileBuf, "-Xstacktracefile:");//對于不同的軟硬件環境,這些參數往往需要調整、優化,從而使系統達到最佳性能parseRuntimeOption("dalvik.vm.heapstartsize", heapstartsizeOptsBuf, "-Xms", "4m");parseRuntimeOption("dalvik.vm.heapsize", heapsizeOptsBuf, "-Xmx", "16m");parseRuntimeOption("dalvik.vm.heapgrowthlimit", heapgrowthlimitOptsBuf, "-XX:HeapGrowthLimit=");parseRuntimeOption("dalvik.vm.heapminfree", heapminfreeOptsBuf, "-XX:HeapMinFree=");parseRuntimeOption("dalvik.vm.heapmaxfree", heapmaxfreeOptsBuf, "-XX:HeapMaxFree=");parseRuntimeOption("dalvik.vm.heaptargetutilization",heaptargetutilizationOptsBuf, "-XX:HeapTargetUtilization=");//preloaded-classes文件內容是由WritePreloadedClassFile.java生成的,在ZygoteInit類中會預加載工作將其中的classes提前加載到內存,以提高系統性能if (!hasFile("/system/etc/preloaded-classes")) {return -1;}//創建虛擬機if (JNI_CreateJavaVM(pJavaVM, pEnv, &initArgs) < 0) {ALOGE("JNI_CreateJavaVM failed\n");return -1;} }

3.2 JNI函數注冊startReg

[–>AndroidRuntime.cpp]

int AndroidRuntime::startReg(JNIEnv* env) {//設置線程創建方法為javaCreateThreadEtcandroidSetCreateThreadFunc((android_create_thread_fn) javaCreateThreadEtc);env->PushLocalFrame(200);//進程NI方法的注冊if (register_jni_procs(gRegJNI, NELEM(gRegJNI), env) < 0) {env->PopLocalFrame(NULL);return -1;}env->PopLocalFrame(NULL);return 0; }

register_jni_procs

static int register_jni_procs(const RegJNIRec array[], size_t count, JNIEnv* env) {for (size_t i = 0; i < count; i++) {if (array[i].mProc(env) < 0) { 【見下文】return -1;}}return 0; }

gRegJNI

gRegJNI是一個數組,有100多個成員

static const RegJNIRec gRegJNI[] = {REG_JNI(register_com_android_internal_os_RuntimeInit),REG_JNI(register_android_os_Binder),... };

REG_JNI

#define REG_JNI(name) { name } struct RegJNIRec {int (*mProc)(JNIEnv*); };

調用mProc,那么gRegJNI數組的其中之一REG_JNI(register_com_android_internal_os_RuntimeInit),等價于調用下面方法:

int register_com_android_internal_os_RuntimeInit(JNIEnv* env) {return jniRegisterNativeMethods(env, "com/android/internal/os/RuntimeInit",gMethods, NELEM(gMethods)); }//gMethods:java層方法名與jni層的方法的一一映射關系 static JNINativeMethod gMethods[] = {{ "nativeFinishInit", "()V",(void*) com_android_internal_os_RuntimeInit_nativeFinishInit },{ "nativeZygoteInit", "()V",(void*) com_android_internal_os_RuntimeInit_nativeZygoteInit },{ "nativeSetExitWithoutCleanup", "(Z)V",(void*) com_android_internal_os_RuntimeInit_nativeSetExitWithoutCleanup }, };

四 ZygoteInit

[–>ZygoteInit.java]

public static void main(String argv[]) {try {RuntimeInit.enableDdms(); //開啟DDMS功能SamplingProfilerIntegration.start();boolean startSystemServer = false;String socketName = "zygote";String abiList = null;for (int i = 1; i < argv.length; i++) {if ("start-system-server".equals(argv[i])) {startSystemServer = true;} else if (argv[i].startsWith(ABI_LIST_ARG)) {abiList = argv[i].substring(ABI_LIST_ARG.length());} else if (argv[i].startsWith(SOCKET_NAME_ARG)) {socketName = argv[i].substring(SOCKET_NAME_ARG.length());} else {throw new RuntimeException("Unknown command line argument: " + argv[i]);}}if (abiList == null) {throw new RuntimeException("No ABI list supplied.");}registerZygoteSocket(socketName); //為Zygote注冊socket【見小節4.1】preload(); // 預加載類和資源【見小節4.2】SamplingProfilerIntegration.writeZygoteSnapshot();gcAndFinalize(); //GC操作if (startSystemServer) {startSystemServer(abiList, socketName);//啟動system_server【見小節4.3】}runSelectLoop(abiList); //進入循環模式【見小節4.4】closeServerSocket();} catch (MethodAndArgsCaller caller) {caller.run(); //啟動system_server中會講到。} catch (RuntimeException ex) {closeServerSocket();throw ex;} }

在異常捕獲后調用的方法caller.run(),會在后續的system_server文章會講到。

4.1 registerZygoteSocket

private static void registerZygoteSocket(String socketName) {if (sServerSocket == null) {int fileDesc;final String fullSocketName = ANDROID_SOCKET_PREFIX + socketName;try {String env = System.getenv(fullSocketName);fileDesc = Integer.parseInt(env);} catch (RuntimeException ex) {throw new RuntimeException(fullSocketName + " unset or invalid", ex);}try {FileDescriptor fd = new FileDescriptor();fd.setInt$(fileDesc); //設置文件描述符sServerSocket = new LocalServerSocket(fd); //創建Socket的本地服務端} catch (IOException ex) {throw new RuntimeException("Error binding to local socket '" + fileDesc + "'", ex);}} }

4.2 preload

執行Zygote進程的初始化

static void preload() {//預加載位于/system/etc/preloaded-classes文件中的類preloadClasses(); //預加載資源,包含drawable和color資源preloadResources();//預加載OpenGLpreloadOpenGL();//通過System.loadLibrary()方法,//預加載"android","compiler_rt","jnigraphics"這3個共享庫preloadSharedLibraries();//預加載 文本連接符資源preloadTextResources();//僅用于zygote進程,用于內存共享的進程WebViewFactory.prepareWebViewInZygote(); }

對于類加載,采用反射機制Class.forName()方法來加載。對于資源加載,主要是 com.android.internal.R.array.preloaded_drawables和com.android.internal.R.array.preloaded_color_state_lists,在應用程序中以com.android.internal.R.xxx開頭的資源,便是此時由Zygote加載到內存的。

zygote進程內加載了preload()方法中的所有資源,當需要fork新進程時,采用copy on write技術,如下:

4.3 startSystemServer

ZygoteInit.java

private static boolean startSystemServer(String abiList, String socketName)throws MethodAndArgsCaller, RuntimeException {long capabilities = posixCapabilitiesAsBits(OsConstants.CAP_BLOCK_SUSPEND,OsConstants.CAP_KILL,OsConstants.CAP_NET_ADMIN,OsConstants.CAP_NET_BIND_SERVICE,OsConstants.CAP_NET_BROADCAST,OsConstants.CAP_NET_RAW,OsConstants.CAP_SYS_MODULE,OsConstants.CAP_SYS_NICE,OsConstants.CAP_SYS_RESOURCE,OsConstants.CAP_SYS_TIME,OsConstants.CAP_SYS_TTY_CONFIG);//參數準備String args[] = {"--setuid=1000","--setgid=1000","--setgroups=1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1018,1021,1032,3001,3002,3003,3006,3007","--capabilities=" + capabilities + "," + capabilities,"--nice-name=system_server","--runtime-args","com.android.server.SystemServer",};ZygoteConnection.Arguments parsedArgs = null;int pid;try {//用于解析參數,生成目標格式parsedArgs = new ZygoteConnection.Arguments(args);ZygoteConnection.applyDebuggerSystemProperty(parsedArgs);ZygoteConnection.applyInvokeWithSystemProperty(parsedArgs);// fork子進程,用于運行system_serverpid = Zygote.forkSystemServer(parsedArgs.uid, parsedArgs.gid,parsedArgs.gids,parsedArgs.debugFlags,null,parsedArgs.permittedCapabilities,parsedArgs.effectiveCapabilities);} catch (IllegalArgumentException ex) {throw new RuntimeException(ex);}//進入子進程system_serverif (pid == 0) {if (hasSecondZygote(abiList)) {waitForSecondaryZygote(socketName);}// 完成system_server進程剩余的工作handleSystemServerProcess(parsedArgs);}return true; }

準備參數并fork新進程,從上面可以看出system server進程參數信息為uid=1000,gid=1000,進程名為sytem_server,從zygote進程fork新進程后,需要關閉zygote原有的socket。另外,對于有兩個zygote進程情況,需等待第2個zygote創建完成。更多詳情見Android系統啟動-systemServer上篇。

4.4 runSelectLoop

private static void runSelectLoop(String abiList) throws MethodAndArgsCaller {ArrayList<FileDescriptor> fds = new ArrayList<FileDescriptor>();ArrayList<ZygoteConnection> peers = new ArrayList<ZygoteConnection>();//sServerSocket是socket通信中的服務端,即zygote進程fds.add(sServerSocket.getFileDescriptor());peers.add(null);while (true) {StructPollfd[] pollFds = new StructPollfd[fds.size()];for (int i = 0; i < pollFds.length; ++i) {pollFds[i] = new StructPollfd();pollFds[i].fd = fds.get(i);pollFds[i].events = (short) POLLIN;}try {Os.poll(pollFds, -1);} catch (ErrnoException ex) {throw new RuntimeException("poll failed", ex);}for (int i = pollFds.length - 1; i >= 0; --i) {//采用I/O多路復用機制,當客戶端發出連接請求或者數據處理請求時,跳過continue,執行后面的代碼if ((pollFds[i].revents & POLLIN) == 0) {continue;}if (i == 0) {//創建客戶端連接ZygoteConnection newPeer = acceptCommandPeer(abiList);peers.add(newPeer);fds.add(newPeer.getFileDesciptor());} else {//處理客戶端數據事務boolean done = peers.get(i).runOnce();if (done) {peers.remove(i);fds.remove(i);}}}} }

Zygote采用高效的I/O多路復用機制,保證在沒有客戶端連接請求或數據處理時休眠,否則響應客戶端的請求。

五、總結

Zygote啟動過程的調用流程圖:

  • 解析init.zygote.rc中的參數,創建AppRuntime并調用AppRuntime.start()方法;
  • 調用AndroidRuntime的startVM()方法創建虛擬機,再調用startReg()注冊JNI函數;
  • 通過JNI方式調用ZygoteInit.main(),第一次進入Java世界;
  • registerZygoteSocket()建立socket通道,zygote作為通信的服務端,用于響應客戶端請求;
  • preload()預加載通用類、drawable和color資源、openGL以及共享庫以及WebView,用于提高ap啟動效率;
  • zygote完畢大部分工作,接下來再通過startSystemServer(),fork得力幫手system_server進程,也是上層framework的運行載體。
  • zygote功成身退,調用runSelectLoop(),隨時待命,當接收到請求創建新進程請求時立即喚醒并執行相應工作。

  • 原文地址:http://gityuan.com/2016/02/05/android-init/

    總結

    以上是生活随笔為你收集整理的Android系统启动-zygote篇的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    韩国av电影在线观看 | 欧美日韩国产精品一区 | 9999亚洲| 色久网| 美腿丝袜一区二区三区 | 日本三级国产 | 新版资源中文在线观看 | 九九免费在线观看视频 | 日韩欧美精品在线 | av看片在线观看 | 欧美不卡视频在线 | 亚洲免费一级电影 | 97超碰精品 | 日韩精品欧美专区 | 国产精品成久久久久 | 国产18精品乱码免费看 | 999久久久国产精品 高清av免费观看 | 欧美久久久久久久久久久久久 | 国产精品成人a免费观看 | 中文字幕av免费在线观看 | 一区二区免费不卡在线 | 天天狠狠 | 久久久精品一区二区三区 | 国产精品国产三级国产aⅴ无密码 | 永久免费精品视频网站 | 亚洲97在线 | 五月天婷亚洲天综合网精品偷 | 黄色影院在线免费观看 | 97超碰人人网 | 国产精品久久久久久久久久久久午 | 亚洲精品一区二区在线观看 | 美女又爽又黄 | 欧美色图一区 | 国产成人在线播放 | 97av.com| 日韩中文字幕免费视频 | 波多野结衣视频一区二区 | 国产区精品在线观看 | 久久av伊人 | 国产一区二区在线观看免费 | 一级免费片 | 2024国产在线 | 99久久精品久久久久久动态片 | 麻豆播放 | 在线播放亚洲激情 | 婷婷丁香激情综合 | 国产精品爽爽久久久久久蜜臀 | 深夜免费网站 | 国产日韩欧美在线观看视频 | 成人性生交大片免费看中文网站 | 超碰97在线资源站 | 日韩av免费在线电影 | 四季av综合网站 | 欧美日一级片 | 99久久精品费精品 | 2019中文在线观看 | 一二三区av| 91污在线| 久久99网站 | 在线小视频国产 | 毛片a级片 | av再线观看 | 日本高清中文字幕有码在线 | 久久不卡国产精品一区二区 | 1000部国产精品成人观看 | 视频成人永久免费视频 | 国产午夜精品久久 | 不卡中文字幕在线 | 在线观看视频免费大全 | 国产自在线 | 91福利视频免费 | 一区二区不卡高清 | 成人 国产 在线 | 97在线视 | 亚洲九九影院 | 国产成人精品在线观看 | 国产一在线精品一区在线观看 | 一区二区三区在线视频观看58 | 最近高清中文字幕 | 日韩高清免费无专码区 | 日韩欧美视频在线观看免费 | 欧美精品亚洲二区 | 91超碰在线播放 | 国产一级不卡毛片 | 国产精品久久久久久一区二区 | 国产一区二区精品在线 | 97操碰 | 国产一区国产精品 | 黄污在线观看 | 国产91在线免费视频 | 亚洲欧美观看 | 亚洲理论影院 | 日日夜夜天天干 | 日韩中文字幕在线观看 | 欧美精品一区二区免费 | 毛片精品免费在线观看 | 一本到视频在线观看 | 999国内精品永久免费视频 | 亚洲美女精品区人人人人 | 天天天射 | 青青河边草免费视频 | av电影在线免费 | 免费在线播放黄色 | 国内外激情视频 | 婷婷av网站| 欧美日韩一区二区视频在线观看 | 久久一精品 | 国产97色在线 | 国内视频1区 | 在线欧美小视频 | 国产高清视频在线观看 | 99色视频| 顶级bbw搡bbbb搡bbbb | 天天色草 | 在线观看91网站 | 999ZYZ玖玖资源站永久 | 91久久影院 | 狠狠激情中文字幕 | 天天激情综合网 | 欧洲激情在线 | 欧美一区二区在线刺激视频 | 久久久香蕉视频 | 亚州国产精品视频 | 91精品入口 | 日日干天天射 | 玖玖爱免费视频 | 成 人 黄 色 片 在线播放 | 免费男女羞羞的视频网站中文字幕 | 在线看日韩av | 欧美成年人在线视频 | 婷婷在线免费 | 日日夜操 | 久久综合狠狠综合久久激情 | 成人中心免费视频 | 日韩一级电影网站 | 国产生活一级片 | 999久久久欧美日韩黑人 | 久久国产精品免费看 | 成人免费在线视频观看 | 三级性生活视频 | 国产中文伊人 | av中文国产 | 91成人精品国产刺激国语对白 | 波多野结衣视频一区 | 91精品国产91久久久久 | 久草在线在线精品观看 | 久久视频二区 | 日韩大片在线免费观看 | 欧美极品少妇xbxb性爽爽视频 | 久久婷婷亚洲 | 97视频久久久 | 久久99国产精品免费 | 九九热中文字幕 | 人人干狠狠干 | 久草爱视频 | 黄色小视频在线观看免费 | 国产爽妇网 | 国产无区一区二区三麻豆 | 国产成视频在线观看 | 午夜影院在线观看18 | 久久久久久久久久久久久久av | 探花视频在线观看 | 91精品在线免费观看视频 | 日本最新高清不卡中文字幕 | 天天爱天天射天天干天天 | 久草在线视频免赞 | 一区二区三区四区不卡 | 日韩电影一区二区在线观看 | 91高清在线 | 国产剧情一区二区在线观看 | 日韩中文字幕亚洲一区二区va在线 | 久久精品视频在线观看免费 | 97视频免费在线观看 | 91日韩免费 | 992tv人人草 黄色国产区 | 亚洲九九| 97精品一区二区三区 | 国产一区二区三区免费在线观看 | 亚洲国产小视频在线观看 | 亚欧洲精品视频在线观看 | 成人午夜电影在线 | 日韩午夜在线播放 | 黄色动态图xx | 在线观看黄污 | 国产精品成人免费一区久久羞羞 | 中文字幕在线播出 | 日韩高清在线一区二区三区 | 国产免费精彩视频 | 高清不卡免费视频 | 亚洲成av人影片在线观看 | 亚洲综合视频网 | 91免费版在线观看 | 亚洲资源一区 | 欧美久久久久久久久久久久 | 国产精品久久久久一区二区三区 | 9在线观看免费高清完整版在线观看明 | 美女天天操| 最近中文字幕久久 | 在线观看视频三级 | 国产91精品在线播放 | 91影视成人 | 韩国一区二区在线观看 | 91精品在线播放 | 国内精品在线观看视频 | 久久99国产精品久久99 | 欧美一级黄色视屏 | 一区二区三区免费在线观看 | 欧美一级欧美一级 | 天天综合网国产 | 久久九九影视网 | 久久久精品国产一区二区电影四季 | 欧美精品一区二区蜜臀亚洲 | 啪啪激情网 | 99久久夜色精品国产亚洲 | 国产高清免费在线观看 | 在线免费黄色毛片 | 国产aa精品| 成人国产电影在线观看 | 日本中文在线播放 | 99精品国产一区二区三区不卡 | 国产福利午夜 | www.黄色网.com | 激情丁香在线 | 激情网色 | 中文字幕在线免费观看 | 色狠狠综合天天综合综合 | 亚洲精品资源 | 伊人影院99| 国产精品一区二区无线 | av久久久久久 | 亚欧洲精品视频在线观看 | 午夜视频在线观看一区二区三区 | 国产精品免费一区二区三区在线观看 | 中文字幕电影一区 | 日韩成年视频 | 日韩电影一区二区三区在线观看 | 国产精品久久婷婷六月丁香 | 亚洲国产精品成人av | 在线导航av | 欧美中文字幕久久 | 欧美性色综合网站 | 超碰最新网址 | 久草久草在线观看 | 中文在线a√在线 | 国产群p | 日韩特黄一级欧美毛片特黄 | 91福利视频久久久久 | 天天弄天天操 | 色七七亚洲影院 | 成人国产网址 | 久久久综合香蕉尹人综合网 | 97超碰免费 | 五月婷视频 | 激情综合色综合久久综合 | 天海翼一区二区三区免费 | 99热精品久久 | 亚洲区另类春色综合小说 | 久草在线资源免费 | 亚洲国产日韩欧美在线 | 日日夜夜爱 | 久久久久成 | 草久久av | 九九视频热| 国产欧美久久久精品影院 | 最近中文字幕视频网 | 1000部18岁以下禁看视频 | 亚洲欧美日韩不卡 | 色吊丝在线永久观看最新版本 | 亚洲成人网av | 国产高清99 | 亚洲精品av在线 | 亚洲永久精品在线 | 国精产品999国精产品岳 | 在线观看蜜桃视频 | 欧美日韩免费在线视频 | 韩国av免费在线 | 天天射网 | 激情影音先锋 | 精品国产美女在线 | 99久久婷婷国产 | 中文字幕亚洲精品日韩 | 久久久婷 | 免费看黄在线网站 | 欧美久久精品 | 五月婷婷综合网 | 日韩成人高清在线 | 在线 你懂 | 亚洲国产免费 | av在线收看 | 丁香五月网久久综合 | 极品中文字幕 | 久久精品99国产国产 | 色视频成人在线观看免 | 男女精品久久 | 91久久人澡人人添人人爽欧美 | 免费高清在线观看成人 | 激情五月综合网 | av中文字幕网 | 最近免费中文字幕大全高清10 | 成人av影视| 久久经典视频 | 波多野结衣在线视频免费观看 | 日日爽天天爽 | 一二区电影| 亚洲一区二区三区在线看 | 国产成人福利片 | 日日夜夜草 | 美女免费视频一区 | 高清不卡一区二区在线 | 在线a亚洲视频播放在线观看 | 亚洲一区精品二人人爽久久 | 日韩精品一区不卡 | 国产无套一区二区三区久久 | 国产高清无线码2021 | 丁香久久五月 | 日本久久久久 | 99精彩视频在线观看免费 | 国内精品二区 | 国产午夜精品一区二区三区欧美 | 最近免费中文字幕 | 国产在线高清 | 国产日产精品一区二区三区四区 | 欧美精品在线一区二区 | 中文字幕乱码亚洲精品一区 | 免费视频区 | av成人免费在线看 | 香蕉久草在线 | 欧美一级大片在线观看 | 久久a v视频| 久色 网| 99视频在线 | 精品久久久久免费极品大片 | 日韩电影一区二区三区 | 国产中文欧美日韩在线 | 91av超碰 | av电影av在线 | 久久色在线播放 | 激情五月婷婷综合 | 四虎最新域名 | 99精品国产在热久久下载 | 97国产情侣爱久久免费观看 | 超碰在线官网 | 国产成人精品午夜在线播放 | 亚洲深爱激情 | 国产视频在 | 在线日韩视频 | 国产精品一区二区 91 | a级片在线播放 | 国产一区二区三区在线免费观看 | 亚洲国产精品电影 | 在线播放国产一区二区三区 | 五月天天av | 中文在线免费视频 | 香蕉91视频 | 国产美女免费视频 | 九九视频在线播放 | 国产精品成人免费一区久久羞羞 | 中文字幕在线免费看线人 | 久久久精品视频网站 | 精品国产成人av在线免 | 亚洲性少妇性猛交wwww乱大交 | 最近中文字幕完整视频高清1 | 久久精品国产一区 | 欧美日韩精品电影 | 亚洲欧洲精品视频 | 久久激情影院 | 奇米影视8888在线观看大全免费 | 国产精品一区二区av影院萌芽 | 国产免费不卡av | 国产免费久久精品 | 日韩国产欧美视频 | 亚洲mv大片欧洲mv大片免费 | 又黄又刺激又爽的视频 | 国产精品99久久久久久大便 | 丝袜美腿在线 | 日本黄色一级电影 | 国产精品美女久久久久久网站 | 91久久精品一区二区三区 | 亚洲干 | 99久国产| 欧美少妇bbwhd | 欧美激情视频一二区 | 六月丁香六月婷婷 | 在线免费看黄色 | 日日干天天爽 | 97成人超碰 | 精品一二三四五区 | 久久精品激情 | 蜜桃av久久久亚洲精品 | 成人午夜电影免费在线观看 | 日韩欧美一二三 | 正在播放国产一区二区 | 久久成人国产精品一区二区 | 日本系列中文字幕 | 久久久久久久久影院 | 丁香九月激情综合 | 亚州精品国产 | 中文字幕在线观看一区二区 | 九九在线视频 | 热久久影视 | 一区二区av | 色小说在线 | 黄色成人影院 | 亚洲精品国产综合久久 | 亚洲国产精品999 | 国产婷婷视频在线 | 97国产人人| www.香蕉视频在线观看 | 亚洲丁香久久久 | 激情婷婷av | 欧美伦理一区 | 狠狠伊人| 午夜国产一区 | 96精品视频 | 亚洲综合视频在线观看 | 国产精品自产拍在线观看桃花 | 日韩丝袜视频 | 免费在线观看不卡av | 日本午夜在线亚洲.国产 | 国产亚洲精品成人av久久ww | 久久精品专区 | 麻豆成人在线观看 | 99理论片| 奇米网8888| 久久免费一 | 国产99久久九九精品免费 | 免费观看一级视频 | 亚洲精品在线看 | 成人av一区二区三区 | www.黄色 | 精品国产一区二区三区在线观看 | 精品一区 精品二区 | 91片黄在线观| av大全免费在线观看 | 超碰97在线人人 | 一本一道久久a久久精品 | 亚洲精品xx| 日本少妇高清做爰视频 | 一区二区三区日韩视频在线观看 | 日韩一区二区免费视频 | 欧美成年人在线视频 | 国产精品午夜av | 中文字幕国语官网在线视频 | 一区二区三区韩国免费中文网站 | 男女全黄一级一级高潮免费看 | 国产精品国产三级国产不产一地 | 久久在线 | 久久8精品 | 婷婷综合五月天 | 国产视频观看 | 久久调教视频 | 国产精品视频在线看 | 久久黄色免费 | 精品国产色| 99在线精品视频在线观看 | 99久久夜色精品国产亚洲96 | 91在线视频导航 | 日韩欧美高清一区二区 | 日韩欧美国产精品 | 99人成在线观看视频 | 久草在线免费资源 | 国产精品久久久久久久久大全 | 中文字幕在线第一页 | 九九热re| 国产性天天综合网 | 日本3级在线观看 | 亚洲精品久久久久中文字幕m男 | 日韩一级片大全 | 久久久久久黄色 | 日韩欧美在线观看一区二区 | 久久久一本精品99久久精品 | 国产精品一区一区三区 | 黄色视屏免费在线观看 | 天天射天天干 | 亚洲精品在线观看中文字幕 | 国产精品美女久久久久久网站 | 九九色视频 | 亚洲精品在线观看av | 日韩黄色免费 | 免费成人在线电影 | 婷婷激情小说网 | 国产99一区 | 欧美另类亚洲 | 久久这里有精品 | 日韩毛片在线一区二区毛片 | 国产97色在线 | 黄色的片子| 深爱激情久久 | 国产精品你懂的在线观看 | 日本福利视频在线 | 最近中文字幕视频完整版 | 狠狠gao | 成人精品久久久 | 国产精品中文字幕在线播放 | 91精品天码美女少妇 | 午夜精品一二三区 | 伊人导航| 91麻豆高清视频 | 亚洲美女免费精品视频在线观看 | 在线观看成人一级片 | 色婷婷成人网 | 国产精品手机播放 | 国产高清在线一区 | 四虎影视久久久 | 国产一区精品在线观看 | 国产69久久 | 国产不卡在线视频 | 日韩在线高清免费视频 | av片中文字幕 | 精品久久久久久综合日本 | 日韩免费看视频 | 99这里只有精品99 | 国产不卡片 | 欧美精品在线一区二区 | 亚洲国产天堂av | 色综合久久久久久中文网 | 国产在线专区 | 一区二区三区日韩在线观看 | 天天插天天狠 | 深夜福利视频在线观看 | 国产中文字幕91 | 亚洲精选视频在线 | 国产三级午夜理伦三级 | 亚洲国产日韩在线 | 奇米影音四色 | 亚洲精品久久久久999中文字幕 | 天天干,夜夜操 | 91麻豆网站 | 国产精品久久久久三级 | 狠狠干网址 | 国产亚洲成人精品 | 天堂av免费看 | 视频福利在线观看 | 一区二区三区在线视频111 | 久久国产精品影片 | 亚洲另类交 | 久久久久综合 | 国产精品爽爽久久久久久蜜臀 | 亚洲欧美经典 | 亚洲欧美日韩国产精品一区午夜 | 欧美激精品 | 欧美精品被 | 97网| wwxxx日本| 久爱综合 | 天天色影院 | 亚洲精品a区 | 精品久久久久一区二区国产 | 久久66热这里只有精品 | 成人在线视频免费观看 | 奇米网网址 | 久久国产精品99国产精 | 天天干夜夜想 | 97成人免费视频 | 国产精品自拍av | 亚洲久草在线 | 免费在线国产黄色 | 国产a级片免费观看 | 伊人伊成久久人综合网站 | 久久高清| 成人免费一级 | 日韩视频在线观看免费 | 免费三级黄色片 | 国产一级三级 | 色干综合 | 精品女同一区二区三区在线观看 | av中文字幕在线观看网站 | 免费高清看电视网站 | 97香蕉久久超级碰碰高清版 | 激情五月婷婷综合 | 国产精品视频免费观看 | 亚洲电影黄色 | 亚洲黄色软件 | 日日夜夜精品视频天天综合网 | www国产亚洲 | 在线国产一区二区三区 | 91亚洲在线观看 | 久久久久久久久久网 | 国产网红在线观看 | 欧美日韩免费一区二区 | 就要干b | 精品久久久久久久久久久久久久久久 | 最近日本中文字幕a | 国产精品av久久久久久无 | 激情久久小说 | 国内精品视频在线 | 国产精品一区二区在线免费观看 | 中文字幕国产视频 | 91精品爽啪蜜夜国产在线播放 | 国产一区二区视频在线 | 中文字幕在线播出 | a视频在线播放 | 久久久久免费精品 | 成年人在线免费看视频 | 久久久久9999亚洲精品 | 波多野结衣在线中文字幕 | 成 人 黄 色视频免费播放 | 久久伦理影院 | 亚洲精品成人av在线 | 国产精品不卡av | 96国产精品视频 | 亚洲国产中文在线观看 | 国产精品电影一区二区 | 国产精品日韩欧美 | 久久成视频 | 日韩在线视频在线观看 | 激情五月亚洲 | 久久精品视频免费观看 | 国产成人精品免费在线观看 | 精品视频在线视频 | 黄色小说网站在线 | 一区二区三区高清 | 人人精久 | 欧美在线91 | 精品成人a区在线观看 | 黄色在线观看www | 免费成人在线电影 | 三级性生活视频 | 亚洲成人精品久久 | 欧美精彩视频在线观看 | 特黄一级毛片 | 免费男女羞羞的视频网站中文字幕 | 欧美亚洲国产一卡 | 黄色网址国产 | 国产不卡精品视频 | 亚洲国产精品一区二区久久hs | 亚洲国产日韩欧美在线 | 91在线国内视频 | 99久久精品国产欧美主题曲 | 伊人资源视频在线 | 成在人线av | 一区二区三区日韩在线观看 | 免费网站v | 91九色蝌蚪国产 | 国产亚洲精品久久久久5区 成人h电影在线观看 | 最近中文字幕mv | 国产免费观看久久 | 久久成人一区 | 中文字幕在线观看免费 | 欧美在线1| 亚洲午夜久久久综合37日本 | 成人黄色小视频 | 99超碰在线观看 | 久久久久综合 | 精品在线99 | 国产精品欧美一区二区 | 欧美极品xxx | 国产在线2020 | a级国产片| 久久亚洲美女 | 五月婷婷激情 | 久久久综合九色合综国产精品 | 一区二区三区在线影院 | 婷婷综合视频 | 久久国产精品一区二区三区 | 日韩精品久久久久久久电影99爱 | 亚洲欧美日本A∨在线观看 青青河边草观看完整版高清 | 国产 视频 高清 免费 | 国产精品福利在线播放 | 久久综合九色综合97_ 久久久 | 久久亚洲精品国产亚洲老地址 | 丁香六月中文字幕 | 午夜私人影院久久久久 | 色网站在线 | 亚州精品天堂中文字幕 | 国产一二三区在线观看 | 91福利视频一区 | 国产原创在线 | 免费的国产精品 | 精品欧美一区二区精品久久 | 欧美一区视频 | 鲁一鲁影院| adn—256中文在线观看 | 91在线一区 | 国产91精品看黄网站 | 天天撸夜夜操 | 青青河边草免费观看 | 国模精品一区二区三区 | 鲁一鲁影院 | 一区二区三区免费在线播放 | 久久婷婷一区二区三区 | 免费男女羞羞的视频网站中文字幕 | 99久久精品一区二区成人 | 九九色视频| 久久久久久久免费观看 | 久久久久福利视频 | 国产精品久久久久久久婷婷 | 成人在线播放视频 | 91豆麻精品91久久久久久 | 久久99精品视频 | 日韩免费三区 | 大型av综合网站 | 成+人+色综合 | 五月婷婷在线观看视频 | 人人干狠狠干 | 日韩欧美在线观看一区二区 | 午夜婷婷在线播放 | 亚洲不卡av一区二区三区 | 国产精品99在线播放 | 视频二区在线 | 欧美日韩精品电影 | 欧美精品国产综合久久 | 亚洲天堂激情 | 免费看黄视频 | 免费视频二区 | 国内精品久久久精品电影院 | 中文字幕在线影院 | 久久dvd | 91伊人久久大香线蕉蜜芽人口 | 又黄又爽又无遮挡免费的网站 | 最近最新中文字幕视频 | 国产精品九九九 | 国产精品精品国产色婷婷 | 97免费视频在线 | www.操.com| 亚洲精品永久免费视频 | 免费亚洲片 | 日韩二区三区在线观看 | 色婷婷综合激情 | 99精品久久99久久久久 | 欧美一区二区三区四区夜夜大片 | 六月丁香色婷婷 | 91九色蝌蚪视频网站 | 黄色影院在线免费观看 | 久久久色 | 国产精品亚洲人在线观看 | 国产精品久久久久久久久久久免费看 | 国产亚洲激情视频在线 | 在线免费高清一区二区三区 | 最近2019年日本中文免费字幕 | 美女网站在线看 | 男女激情免费网站 | 96视频免费在线观看 | 国产精品免费久久久久久 | 黄色h在线观看 | 大胆欧美gogo免费视频一二区 | 亚洲精品午夜久久久久久久 | 91在线视频在线 | 成人精品亚洲 | 亚洲精品中文字幕在线 | 黄色在线看网站 | 草久草久| 国产精品一区二区精品视频免费看 | www.黄色在线| 日韩中文字幕免费在线播放 | 亚洲精品在线免费观看视频 | 欧美激情综合五月 | 91九色自拍 | 中文字幕在线看人 | 欧美日韩国产网站 | 国产精品美女在线 | 免费在线观看午夜视频 | 亚洲国产成人精品电影在线观看 | 久久久亚洲精华液 | 麻豆传媒精品 | 色吧av色av | 成人一区二区在线观看 | 日韩免费电影一区二区三区 | 综合在线亚洲 | 精品在线观看视频 | 911在线| 久久久久久久久久久福利 | 亚洲天堂网在线观看视频 | 亚洲国产精久久久久久久 | 99久久激情视频 | 久久久久久久久久久精 | 亚洲尺码电影av久久 | 性色av一区二区三区在线观看 | 久久久久看片 | 久久国产精品电影 | 久久色视频 | 国产黄色一级大片 | 久久99精品一区二区三区三区 | 国精产品999国精产品视频 | 国产你懂的在线 | 爱爱av在线 | 在线a人片免费观看视频 | 在线 国产 日韩 | 成人久久18免费网站麻豆 | av电影亚洲| 国内精品久久久久影院优 | 久久久久人人 | 日一日干一干 | 日本丰满少妇免费一区 | 欧美一区二区三区在线看 | 最新真实国产在线视频 | 久久久精品一区二区 | 丁香网五月天 | 男女视频久久久 | 偷拍视频一区 | 亚洲91网站| 国产精品婷婷午夜在线观看 | 中文字幕一区二区三 | 丁香 久久 综合 | 91男人影院 | 中文字幕亚洲高清 | 天天射天天干天天爽 | 免费观看不卡av | 国产又粗又猛又色又黄网站 | 国产91精品高清一区二区三区 | 黄色电影在线免费观看 | 国产成人一区二区三区久久精品 | 亚洲精品视频一二三 | 最近日本韩国中文字幕 | 人人插人人爱 | 久久久免费av | 狠狠插天天干 | 九九综合久久 | 中文字幕日韩伦理 | 激情开心站 | 亚洲国产69 | 欧洲激情综合 | 国产精品美女久久久 | 色偷偷人人澡久久超碰69 | 国产精品久久久久久久7电影 | 天天综合网在线观看 | 国产免费人人看 | 国产精品12| 在线免费观看成人 | 国产涩涩在线观看 | 精品久久久久久久久久 | 国产青草视频在线观看 | 综合av在线 | 色精品视频 | 黄污在线观看 | 夜夜看av | 天天艹天天| 国产在线视频不卡 | 国产精品免费在线视频 | 成av人电影 | 激情综合五月 | 日韩欧美高清一区二区三区 | 国产精品福利久久久 | 五月婷婷黄色网 | 不卡的av在线播放 | 国产福利精品在线观看 | www免费 | 正在播放国产91 | 久久中文欧美 | 国产资源 | 国产精品综合久久久久久 | 欧美三级高清 | 久草在线观 | 亚洲精品在线视频网站 | 99福利影院 | 国产 欧美 日本 | 国产成人亚洲精品自产在线 | 九九久久久久久久久激情 | 免费观看黄色av | 国内毛片毛片 | 久久久久免费精品视频 | 久久一级电影 | 久久精品视频在线观看 | 91成人精品一区在线播放69 | 久久久久久久久久亚洲精品 | 伊人丁香| 狠狠狠狠狠操 | 在线99热| 久久精品中文 | 在线观看va | www.五月婷婷 | 久久夜色精品国产欧美一区麻豆 | 成人免费视频在线观看 | 国产精品久久9 | 婷婷九月丁香 | 三级a视频| www.香蕉视频在线观看 | 日韩精品一区二区在线观看视频 | 亚洲人成影院在线 | 99高清视频有精品视频 | 亚洲免费在线看 | 最近中文字幕在线中文高清版 | 人人干网站 | 中文字幕av免费观看 | 亚洲精品网站在线 | 国产黄色片一级三级 | 欧美韩国日本在线观看 | 又紧又大又爽精品一区二区 | 五月婷婷激情六月 | 色av婷婷 | 国语久久 | 欧美在线观看小视频 | 国产成人精品一区二区三区在线观看 | 四虎影视成人精品国库在线观看 | 五月天激情综合 | 亚洲国产成人高清精品 | 欧美91精品久久久久国产性生爱 | 天天做天天爱天天爽综合网 | 色先锋资源网 | 精品成人久久 | 97爱爱爱 | 欧美成年黄网站色视频 | 麻豆91网站 | 日韩精品中文字幕一区二区 | .国产精品成人自产拍在线观看6 | 亚洲精品99久久久久中文字幕 | 精品国内自产拍在线观看视频 | 精壮的侍卫呻吟h | 亚洲精品在线一区二区三区 | 成 人 黄 色 免费播放 | 一级成人在线 | 免费看三级网站 | 国产区欧美 | 精品国产美女在线 | 天天操天天吃 | 天天干,天天射,天天操,天天摸 | 精品中文字幕在线 | 色香蕉在线 | 美女精品 | 911精品美国片911久久久 | 插久久| 中文字幕国语官网在线视频 | 黄色小网站免费看 | 玖玖在线视频观看 | 亚洲精品小视频在线观看 | 日本韩国精品一区二区在线观看 | 能在线看的av | 9999毛片 | 国产精品一区在线观看你懂的 | 搡bbbb搡bbb视频 | 国产99久久久国产精品免费二区 | 91福利区一区二区三区 | 国产精品资源网 | 午夜免费福利片 | 美女视频黄免费的 | 国产精品k频道 | 夜夜操狠狠干 | 新版资源中文在线观看 | 国产视频一级 | 狠狠干天天干 | 成人亚洲精品久久久久 | 日日爽天天操 | 久久av一区二区三区亚洲 | 51久久成人国产精品麻豆 | 亚州日韩中文字幕 | 久久都是精品 | 色天天久久 | 成人黄色免费在线观看 | 久久久麻豆精品一区二区 | 麻豆久久久久久久 | 免费在线观看黄 | 黄色免费网站下载 | 亚洲人成免费 | 日韩精品不卡在线 | 久久久视屏 | 色99网| 看片的网址 | 三级a毛片 | 天天操天天干天天摸 | 国产精品3| 91在线91拍拍在线91 | 毛片永久免费 | 国产精品一区二区三区在线 | 国产精品一区二区三区在线看 | 91精品啪在线观看国产81旧版 | 日本中文字幕视频 | www国产亚洲精品久久网站 | 天天摸天天操天天舔 | 欧美日韩3p | 国内外成人在线视频 | 色偷偷888欧美精品久久久 | 狠狠色丁香婷婷综合最新地址 | 在线国产黄色 | 丁香婷婷激情国产高清秒播 | 二区三区中文字幕 | 天天插夜夜操 | 性色av一区二区三区在线观看 | 中文电影网 | 色婷婷狠狠| 97爱 | 国产亚洲精品久久久久久移动网络 | 国产精品久久影院 | 亚洲三级在线免费观看 | 天天综合视频在线观看 | 天天爱天天操天天射 | 日韩av播放在线 | 免费一级片观看 | 久久精品韩国 | 四虎成人精品永久免费av | 91看片看淫黄大片 | 在线看一级片 | 亚洲天堂网站 | 91视频 - 114av| 国产涩图| 天天射夜夜爽 | 天天操天天摸天天射 | 久久久久亚洲国产精品 | 国产精品女同一区二区三区久久夜 | 日韩精品久久久久久中文字幕8 | 亚洲精品中文在线观看 | 色婷婷六月天 | 久久国产色 | 国产一区二区影院 | 国产高清亚洲 | 在线观看久 | 欧美超碰在线 | 欧美一级xxxx | 国产黄网在线 |