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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android学习笔记--JNI的使用方法

發(fā)布時(shí)間:2025/3/20 Android 75 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android学习笔记--JNI的使用方法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1、JNI是什么

JNI是Java Native Interface的縮寫,它提供若干的API實(shí)現(xiàn)Java與其他語言之間的通信。而Android Framework由基于Java語言的的Java層與基于C/C++語言的C/C++層組成,每個(gè)層中的功能模塊都是以有相應(yīng)的語言編寫,并且兩層中的大部分模塊有著千絲萬縷的聯(lián)系。而在兩層之間充當(dāng)連接橋梁這一角色的就是JNI,它允許Java代碼和C/C++編寫的應(yīng)用程序與庫之間進(jìn)行交互;通常在以下幾種情況下使用JNI

1、注重處理速度,C/C++的處理速度要優(yōu)于Java語言

2、硬件控制,硬件驅(qū)動(dòng)程序通常使用C語言編寫,而要是Java層能夠控制硬件,需要用到JNI

3、C/C++代碼的復(fù)用,一些好的C/C++模塊可以被多處復(fù)用

2、在Java中調(diào)用C庫函數(shù)

?

下面以一個(gè)例子來說明在Java代碼中調(diào)用C庫函數(shù)的流程

1、編寫Java代碼

class HelloJNI { /*聲明本地方法,該函數(shù)在C庫中實(shí)現(xiàn)*/ native void printHello(); native void printString(String str); /*在靜態(tài)塊中加載C庫,可以保證在main方法前加載完成*/ static { System.loadLibrary("./hellojni"); } public static void main(String args[]) { HelloJNI myJNI = new HelloJNI(); /*調(diào)用C庫中實(shí)現(xiàn)的函數(shù)*/ myJNI.printHello(); myJNI.printString("Hello world from printstring func"); } }

在上述代碼中使用native關(guān)鍵字聲明本地方法,告訴Java編譯器,此函數(shù)由其他語言編寫;在靜態(tài)塊中加載hellojni庫,該庫由C語言實(shí)現(xiàn),

如果是在Linux系統(tǒng)下則會(huì)加載libhellojni.so,如果在Windows系統(tǒng)下則會(huì)加載hellojni.dll;(本文以Linux系統(tǒng)為測試環(huán)境)

2、編譯Java代碼

javac HelloJNI.java

編譯Java代碼很簡單,只要配置好JDK就可以完成編譯,需要注意的是此時(shí)編譯通過,但如果運(yùn)行的話,由于沒有實(shí)現(xiàn)本地函數(shù),所以會(huì)拋出找不到函數(shù)的異常

3、生成C頭文件

當(dāng)Java調(diào)用本地函數(shù)printHello或者printString時(shí)并非直接映射到C語言的printHello或者printString函數(shù),而是有一套自己的映射方法,使用如下命令即可生成C函數(shù)的頭文件 javap HelloJni 執(zhí)行完成后生成HelloJni.h如下 /* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class HelloJNI */ #ifndef _Included_HelloJNI #define _Included_HelloJNI #ifdef __cplusplus extern "C" { #endif /* * Class: HelloJNI * Method: printHello * Signature: ()V */ JNIEXPORT void JNICALL Java_HelloJNI_printHello(JNIEnv *, jobject); /* * Class: HelloJNI * Method: printString * Signature: (Ljava/lang/String;)V */ JNIEXPORT void JNICALL Java_HelloJNI_printString(JNIEnv *, jobject, jstring); #ifdef __cplusplus } #endif #endif

可以看到生成的函數(shù)原型并非與Java代碼調(diào)用的函數(shù)一致,函數(shù)有JNIEXPORT和JNICALL兩個(gè)關(guān)鍵字聲明,這兩個(gè)關(guān)鍵詞是必須的,有了他們JNI才能正常調(diào)用函數(shù);而通過觀察函數(shù)名稱,我們可以知道其命名方式是"Java_類名_本地方法名"; 再看參數(shù),可知JNIEnv*和jobject是本地函數(shù)的共同參數(shù),第一個(gè)參數(shù)是JNI接口的直接,用來調(diào)用JNI提供的基本函數(shù)集;第二個(gè)參數(shù)中保存著調(diào)用本地方法的對(duì)象的一個(gè)引用,上例中的jobject中保存的對(duì)象myJNI的引用,其他的參數(shù)根據(jù)Java代碼的本地方法的調(diào)用生成的

4、編寫C/C++代碼

把上一步驟生成的HelloJni.h頭文件include進(jìn)來,實(shí)現(xiàn)其聲明的函數(shù)即可,編寫hellojni.c如下

#include "HelloJNI.h" #include <stdio.h> /* * Class: HelloJNI * Method: printHello * Signature: ()V */ JNIEXPORT void JNICALL Java_HelloJNI_printHello(JNIEnv *env, jobject obj) { printf("Hello World!\n"); return; } /* * Class: HelloJNI * Method: printString * Signature: (Ljava/lang/String;)V */ JNIEXPORT void JNICALL Java_HelloJNI_printString(JNIEnv *env, jobject obj, jstring string) { /*JNI提供的基本函數(shù)集,將jstring轉(zhuǎn)化成char *類型*/ const char *str = (*env)->GetStringUTFChars(env, string, 0); printf("%s! \n" ,str); return ; }

?

5、生成C動(dòng)態(tài)鏈接庫

gcc -fPIC -shared -o libhellojni.so hellojni.c -I$JAVA_HOME/include

其中JAVA_HOME已經(jīng)配置到環(huán)境變量中,表示JDK安裝的目錄,需要指定其中的include目錄使用jni.h頭文件

6、運(yùn)行Java程序

此時(shí)執(zhí)行java HelloJni會(huì)提供找不到hellojni庫,這是由于在加載C庫的時(shí)候在默認(rèn)目錄中沒有找到libhellojni.so庫,只需將該庫復(fù)制到/usr/lib/下再次執(zhí)行

xlzh@cmos:~/code/jni/simpleJNI$ java HelloJNI Hello World! Hello world from printstring func!

?

3、調(diào)用JNI函數(shù)

上圖來自<Android框架揭秘>

由上圖可知此示例程序有JniFuncMain類、JniTest類和libjnifunc.so(linux系統(tǒng))組成,此示例有Java和C代碼混合而成。

JniFuncMain類:

public class JniFuncMain { private static int staticIntField = 300; /*加載libjnifunc.so庫*/ static { System.loadLibrary("jnifunc"); } /*使用static關(guān)鍵字聲明本地方法,再C庫中實(shí)現(xiàn)*/ public static native JniTest createJniObject(); public static void main(String[] args) { System.out.println("[Java] createJniObject() call native method"); /*調(diào)用C庫的createJniObject,得到JniTest對(duì)象,注意不是用new*/ JniTest jniObj = createJniObject(); /*利用JniTest對(duì)象調(diào)用JniTest中的方法*/ jniObj.callTest(); } }

此例中與上例不同的是本地方法返回了一個(gè)JniTest類的對(duì)象的引用,這樣就可以在JniFuncMain類中調(diào)用JniTest類的方法。

JniTest類

class JniTest { private int intField; public JniTest(int num) { intField = num; System.out.println("[Java] call JniTest: intFiled" + intField); } public int callByNative(int num) { System.out.println("[Java] JniTest 對(duì)象的 callByNative(" + num + ")調(diào)用"); return num; } public void callTest() { System.out.println("[Java] JniTest對(duì)象的callTest() 方法調(diào)用: intField = " + intField); } }

JniTest類提供兩個(gè)方法供JniFuncMain類和C庫函數(shù)調(diào)用

JniFuncMain.h

/* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class JniFuncMain */ #ifndef _Included_JniFuncMain #define _Included_JniFuncMain #ifdef __cplusplus extern "C" { #endif /* * Class: JniFuncMain * Method: createJniObject * Signature: ()LJniTest; */ JNIEXPORT jobject JNICALL Java_JniFuncMain_createJniObject (JNIEnv *, jclass); #ifdef __cplusplus } #endif #endif

使用javah JniFuncMain生成頭文件,需要注意的是第二個(gè)參數(shù)是jclass,而不是jobject,這是由于該本地方法在JniFuncMain類中聲明的是static方法,所以第二個(gè)參數(shù)表示的該類的應(yīng)用,而不需要對(duì)象的引用

jnifunc.cpp

#include "JniFuncMain.h" JNIEXPORT jobject JNICALL Java_JniFuncMain_createJniObject(JNIEnv *env, jclass clazz) { jclass targetClass; jmethodID mid; jobject newObject; jstring hellostr; jfieldID fid; jint staticIntField; jint result; /*獲取JniFuncMain類的staticField變量值*/ fid = env->GetStaticFieldID(clazz, "staticIntField", "I"); staticIntField = env->GetStaticIntField(clazz, fid); printf("[CPP] 獲取 JniFuncMain類的staticIntField 值\n"); printf(" JniFuncMain.staticIntField = %d\n", staticIntField); /*查找生成對(duì)象的類*/ targetClass = env->FindClass("JniTest"); /*查找構(gòu)造方法*/ mid = env->GetMethodID(targetClass, "<init>", "(I)V"); /*生成JniTest對(duì)象*/ printf("[CPP] JniTest 對(duì)象生成 \n"); newObject = env->NewObject(targetClass, mid, 100); /*調(diào)用對(duì)象的方法*/ mid = env->GetMethodID(targetClass, "callByNative", "(I)I"); result = env->CallIntMethod(newObject, mid, 200); /*設(shè)置JniObject對(duì)象的intField值*/ fid = env->GetFieldID(targetClass, "intField", "I"); printf("[CPP] 設(shè)置JniTest對(duì)象的intField值為200\n"); env->SetIntField(newObject, fid, result); /*返回對(duì)象引用*/ return newObject; }

如果想在C代碼中訪問Java中的成員變量,就需要獲取相應(yīng)成員變量的ID值,成員變量的ID值保存在jfieldID類型的變量中;獲取成員變量ID的JNI本地方法有兩個(gè),分別是

/* 獲取Java中的靜態(tài)成員變量ID * env : JNI接口指針 * clazz : 包含成員變量的類的jclass * name : 成員變量名稱 * signature: 成員變量簽名 */ jfield GetStaticFieldID(JNIEnv *env, jclass clazz, const char *name, const char *signature); /*獲取Java中的普通成員變量ID*/ jfield GetFieldID(JNIEnv *env, jclass clazz, const char *name, const char *signature);

上述示例中要訪問Java類中的靜態(tài)成員變量,所以需要使用GetStaticFieldID方法,其他參數(shù)很簡單,直接使用即可,而對(duì)于變量的簽名,則需要借助Java反編譯器javap命令,如下所示

xlzh@cmos:~/code/jni/middleJNI$ javap -s -p JniFuncMain Compiled from "JniFuncMain.java" public class JniFuncMain { private static int staticIntField; Signature: I public JniFuncMain(); Signature: ()V public static native JniTest createJniObject(); Signature: ()LJniTest; public static void main(java.lang.String[]); Signature: ([Ljava/lang/String;)V static {}; Signature: ()V }

可以看到,staticIntField的簽名是I,將I傳入第四個(gè)參數(shù)即可,其他函數(shù)中用到簽名的時(shí)候可用同樣的方法獲取

OK,我們得到了成員變量的ID,那么如何通過成員變量的ID來獲取或者設(shè)置成員變量的值呢?就需要用到以下幾個(gè)JNI函數(shù)

/* * 獲取Java類中靜態(tài)成員變量的值 * <jnitype> jobject,jboolean,jbyte,jchar, jshort, jint, jlong, jfloat, jdouble * <type> Object ,Boolean ,Byte,Char , Short , Int, Long , Float , Double * env: JNI接口指針 * jcalss: 包含成員變量的類 * jfieldID: 成員變量ID */ <jnitype> GetStatic<type>Field(JNIEnv *env, jcalss jclazz, jfieldID fieldID) /* * 獲取Java類的對(duì)象中普通成員變量的值 */ <jnitype> Get<type>Field(JNIEnv *env, jobject obj, jfieldID fieldID) /* * 設(shè)置Java類中靜態(tài)成員變量的值 */ <jnitype> SetStatic<type>Field(JNIEnv *env, jcalss clazz, jfieldID fieldID, <type> value) /* * 設(shè)置Java類的對(duì)象中普通成員變量的值 */ <jnitype> Set<type>Field(JNIEnv *env, jobject obj, jfieldID fieldID, <type> value) ? 與成員變量類似, 獲取和調(diào)用類中方法的JNI函數(shù)原型如下 /*獲取Java類靜態(tài)方法的ID*/ jmethod GetStaticMethodID(JNIEnv *env, jclass clazz, const char *name, const char *signature) /*獲取Java類的對(duì)象中普通方法的ID*/ jmethod GetMethodID(JNIEnv *env, jclass clazz, const char *name, const char *signature) /*調(diào)用Java類中的靜態(tài)方法*/ <jnitype> CallStatic<type>Method(JNIEnv *env, jclass clazz, jmethod methodID, ...) /*調(diào)用Java類的對(duì)象中的普通方法*/ <jnitype> Call<type>Method(JNIEnv *env, jobject obj, jmethod methodID, ...) 如何獲取Java類的對(duì)象呢?以示例中獲取JniTest類的對(duì)象代碼例,分為三步 1、獲取JniTest的類 2、獲取JniTest類的構(gòu)造方法ID 3、通過構(gòu)造方法的ID調(diào)用和JniTest類使用NeoObject方法生成對(duì)象 對(duì)比上例中獲取JniTest的對(duì)象流程,可以很清楚的進(jìn)行對(duì)照

?

4、在C代碼中運(yùn)行Java類

Java類編譯的字節(jié)碼需要在Java虛擬機(jī)上運(yùn)行,那么在C/C++中運(yùn)行Java類自然也需要加載Java虛擬機(jī);JNI為我們提供了一套Invocation API,它允許本地代碼在自身內(nèi)存區(qū)域內(nèi)加載Java虛擬機(jī),同樣我們以實(shí)例的方式進(jìn)行講解

InvocationApiTest.java

public class InvocationApiTest { public static void main(String[] args) { System.out.println(args[]0); } }

invocationApi.c

#include <jni.h> int main(void) { JNIEnv *env; JavaVM *vm; JavaVMInitArgs vm_args; JavaVMOption options[1]; jint res; jclass cls; jmethodID mid; jstring jstr; jclass stringClass; jobjectArray args; /*加載虛擬機(jī)選項(xiàng)*/ options[0].optionString = "-Djava.class.path=."; vm_args.version = JNI_VERSION_1_6; vm_args.options = options; vm_args.nOptions = 1; vm_args.ignoreUnrecognized = JNI_TRUE; /*生成虛擬機(jī)*/ res = JNI_CreateJavaVM(&vm, (void**)&env, &vm_args); /*查找并加載類*/ cls = (*env)->FindClass(env, "InvocationApiTest"); /*獲取main()方法的ID*/ mid = (*env)->GetStaticMethodID(env, cls, "main", "([Ljava/lang/String;)V"); /*生成字符串對(duì)象*/ jstr = (*env)->NewStringUTF(env, "Hello Invocation API!!"); stringClass = (*env)->FindClass(env, "java/lang/String"); args = (*env)->NewObjectArray(env, 1, stringClass, jstr); /*調(diào)用main()方法*/ (*env)->CallStaticVoidMethod(env, cls, mid, args); /*銷毀虛擬機(jī)*/ (*vm)->DestroyJavaVM(vm); } 編譯允許結(jié)果如下 xlzh@cmos:~/code/jni/superJNI$ javac InvocationApiTest.java xlzh@cmos:~/code/jni/superJNI$ sudo echo "/usr/lib/jvm/java-1.7.0-openjdk-amd64/jre/lib/amd64/jamvm" >> /etc/ld.so.conf xlzh@cmos:~/code/jni/superJNI$ sudo ldconfig xlzh@cmos:~/code/jni/superJNI$ gcc -o a.out invocationApi.c -I$JAVA_HOME/include -L$JAVA_HOME/jre/lib/amd64/jamvm/ -ljvm xlzh@cmos:~/code/jni/superJNI$ ./a.out Hello Invocation API!! xlzh@cmos:~/code/jni/superJNI$ ?

轉(zhuǎn)載于:https://www.cnblogs.com/gordon0918/p/5128034.html

總結(jié)

以上是生活随笔為你收集整理的Android学习笔记--JNI的使用方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

亚洲黄网站| 五月激情姐姐 | 亚洲精品伦理在线 | www.黄色| 狠狠干成人综合网 | www久久国产 | 亚洲视频 在线观看 | 在线激情小视频 | 香蕉成人在线视频 | 中文在线字幕免费观看 | 91久久久久久国产精品 | 国产亚洲91| 精品国产理论片 | 亚洲色图激情文学 | 久久人人爽人人爽人人片av软件 | 日韩av片在线 | 国产首页 | 日韩午夜av | 国产传媒中文字幕 | 91精品办公室少妇高潮对白 | 亚洲 综合 专区 | 免费日韩视频 | 日韩av专区| 国产成人亚洲在线观看 | 日韩久久精品 | 亚洲激精日韩激精欧美精品 | 最近免费中文字幕 | 久草在线精品观看 | 欧美精品一区二区蜜臀亚洲 | 亚洲视屏在线播放 | 四虎8848免费高清在线观看 | 亚洲欧洲精品在线 | 最新黄色av网址 | 久久午夜网 | 日本黄色免费播放 | 亚洲精品乱码久久久一二三 | 成人黄色小说网 | 激情在线免费视频 | 精品理论片 | 日韩欧美视频免费观看 | 伊人资源站 | 在线日本v二区不卡 | 精品96久久久久久中文字幕无 | 欧产日产国产69 | 精品一区在线看 | av解说在线观看 | 99精品一区| 免费视频成人 | 国产一区二区精品久久 | 丁香五香天综合情 | 在线电影中文字幕 | 天天操夜夜操 | 精品视频在线视频 | 国产精品一区二区吃奶在线观看 | 成人在线观看免费 | 色亚洲网 | 国产精品美女久久久网av | 91精品国产一区 | 高清久久久 | 久久999精品 | 在线国产专区 | 久草精品电影 | 国产一区二区精品久久91 | 99精品国自产在线 | 中文字幕精品一区二区三区电影 | 欧美日韩免费一区二区三区 | 久久影视网| 国产原创在线观看 | 五月婷亚洲 | 午夜在线资源 | 97超碰精品| 久久色视频 | 最新国产精品久久精品 | 人交video另类hd | 精品一区 精品二区 | 国产视频亚洲精品 | 91高清完整版在线观看 | 国产精品一区二区免费在线观看 | 国产精品999久久久 久产久精国产品 | 色av资源网 | 欧美日韩免费观看一区=区三区 | 日韩精品在线观看av | 亚洲天堂在线观看完整版 | 丁香网婷婷 | 91香蕉久久| 黄色毛片视频免费观看中文 | 中文字幕丝袜 | 亚州欧美精品 | 久久艹综合 | 久久久精品一区二区三区 | 高清色免费 | 亚洲成人黄色av | 在线不卡视频 | 亚洲国产成人久久 | 婷婷精品国产一区二区三区日韩 | 国产精成人品免费观看 | 国产永久免费高清在线观看视频 | 久久伊人八月婷婷综合激情 | 久久伦理电影 | 91精品国产99久久久久久久 | 伊人久操| 伊人影院99 | 中文成人字幕 | 91中文字幕永久在线 | 国产拍揄自揄精品视频麻豆 | 久久免费在线观看视频 | 天天舔夜夜操 | 欧美性生爱| 最近中文字幕mv | 日韩视频1 | 色99导航| 人人爱爱| 成年人在线看片 | 我要色综合天天 | 免费a级黄色毛片 | 福利网址在线观看 | 综合久久网 | 五月天com| 麻豆91精品91久久久 | 日韩精品一区二区免费视频 | 天天色天天操综合网 | 日韩在线观看小视频 | 国产在线精品二区 | 日本久久成人中文字幕电影 | 亚洲第一区精品 | 亚洲综合色婷婷 | 国产婷婷一区二区 | 久9在线| 日日婷婷夜日日天干 | 综合伊人久久 | 久久艹国产 | 国产在线高清视频 | 激情深爱.com | 亚洲va欧美va | 久久ww| 亚洲天堂网在线视频观看 | 国产精品少妇 | 日日躁你夜夜躁你av蜜 | 国产精品久久久久久久久久久久 | 精品欧美一区二区在线观看 | 亚洲欧美日韩在线一区二区 | 在线免费国产视频 | 日韩欧美aaa | 91精品国产九九九久久久亚洲 | 在线观看av网站 | 国产精品久久久久久久久蜜臀 | www.狠狠干 | 涩涩网站在线观看 | 亚洲最大在线视频 | 中日韩三级视频 | 午夜手机电影 | 精品国产免费av | 久久精品人人做人人综合老师 | 精品国产免费av | 欧美日韩国产一二三区 | 蜜桃麻豆www久久囤产精品 | www.狠狠操.com | 免费在线黄色av | 怡红院久久 | 日本高清中文字幕有码在线 | 国产毛片久久久 | 亚洲精品乱码久久久久久按摩 | 亚洲专区在线 | 欧美aa级 | www毛片com| 国产成人精品一区二三区 | 欧美极品一区二区三区 | 天天爽天天做 | 911香蕉视频 | 国产黄色免费 | 精品久久久久久亚洲综合网 | 久久久久亚洲精品 | 国产黄色精品在线 | 久草香蕉在线视频 | 久久免费观看视频 | 经典三级一区 | 久久成人精品电影 | 欧美一区免费观看 | 特级xxxxx欧美 | 不卡的av片 | 青春草国产视频 | 在线观看www. | 久久精品8 | 深爱激情久久 | 99热99热 | 中文字幕中文字幕在线中文字幕三区 | 亚洲国产资源 | 国产精品色婷婷视频 | 国产99久久99热这里精品5 | 成人免费中文字幕 | 在线播放日韩av | 日韩精品久久久久久 | 正在播放久久 | 中文字幕在线看人 | 日日激情| 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 奇米导航 | 超碰在线公开 | 国产精品自拍在线 | 久久久999精品视频 国产美女免费观看 | 五月婷婷激情综合 | 色综合久久久久综合体桃花网 | 九九色在线观看 | 欧美精品v国产精品v日韩精品 | 日韩精品一区不卡 | 丁香影院在线 | 久草在线 | 精品国产伦一区二区三区免费 | 最新av在线播放 | 在线国产91 | 日本黄色免费观看 | 在线看污网站 | 久章草在线 | 久久久www免费电影网 | 五月综合色婷婷 | 久久久精品网站 | 天天干天天干天天干天天干天天干天天干 | 最新国产在线 | 亚洲 欧美变态 另类 综合 | 欧美天天综合网 | 国产日韩精品欧美 | 精品视频网站 | 91香蕉视频在线下载 | 婷婷亚洲最大 | 激情网在线观看 | 在线视频99| 久久 精品一区 | 久久艹免费| 五月香视频在线观看 | 天天操天天摸天天爽 | av中文字幕在线播放 | 看片的网址 | 激情综合色播五月 | 日本午夜在线亚洲.国产 | 中文字幕av在线电影 | 欧美一二三在线 | 久久久久久久免费看 | 国产精品久久久久久久av大片 | 久久综合狠狠综合久久狠狠色综合 | 99在线国产 | 欧美日韩一二三四区 | 午夜色影院 | 99日韩精品 | 亚洲乱码精品久久久 | 一级精品视频在线观看宜春院 | 91福利区一区二区三区 | 911国产精品 | 日本黄色黄网站 | 91精品国产一区 | 蜜臀久久99精品久久久酒店新书 | 午夜久久视频 | 日韩中文在线电影 | 国产高清中文字幕 | 在线播放 日韩专区 | 国产一区二区免费看 | 超级碰碰碰碰 | 毛片美女网站 | 精品视频免费 | 日韩一级成人av | av电影在线免费 | 中文字幕一区二区三区在线视频 | 欧美成年网站 | 天天射天天色天天干 | 亚洲少妇xxxx| 在线精品一区二区 | 天天干天天干天天操 | 国内精品久久久久影院优 | 国产高清区 | 国产字幕在线看 | 欧美日韩在线观看不卡 | 欧美午夜久久 | 高清精品视频 | 日韩免费在线 | 91看片淫黄大片在线播放 | 天天色视频 | 亚洲 成人 欧美 | 亚洲三级性片 | 国产精品久久在线 | 国内毛片毛片 | 99精品国产一区二区三区不卡 | 国产黄在线免费观看 | 四虎成人av| 国语精品免费视频 | 手机看片1042 | 亚洲午夜av久久乱码 | 国产91精品一区二区麻豆亚洲 | 综合久久网站 | 五月天天在线 | 欧美999| av网址最新| 91在线观看欧美日韩 | 国产资源免费 | 国产日韩在线观看一区 | 日本aaa在线观看 | 久久av福利| 99精品视频在线观看免费 | 探花视频在线观看 | 亚洲 中文 在线 精品 | 缴情综合网五月天 | 欧美日韩二三区 | 成人一区在线观看 | 国产视频精品久久 | 久久精彩视频 | 日韩av在线影视 | 久久免费视频精品 | 久久激情片 | 亚洲伊人网在线观看 | 日韩色一区二区三区 | 久久精品男人的天堂 | 蜜臀久久99精品久久久久久网站 | 91x色 | 四虎在线观看精品视频 | 蜜臀av性久久久久av蜜臀妖精 | 欧美日韩91 | 国产a免费| 国产成人三级一区二区在线观看一 | 久久久久国产精品厨房 | 中文字幕国产视频 | 亚洲福利精品 | 天天综合导航 | 66av99精品福利视频在线 | 最新婷婷色| 国产精品一区二区av日韩在线 | 成人国产精品免费观看 | 日日夜精品 | 成人性生交大片免费观看网站 | 在线视频一区观看 | 中文字幕专区高清在线观看 | 中文字幕在线看视频国产中文版 | 日韩啪啪小视频 | 激情五月开心 | aa一级片 | 国产99久久久国产精品免费二区 | 欧美精品乱码久久久久久 | 中文字幕免费 | 精品国产区在线 | 色六月婷婷 | 日韩视频在线观看免费 | 日韩三级.com | 99视频一区二区 | 久久在线观看 | 超碰999 | 欧美一级片在线免费观看 | 国产精品国产三级国产专区53 | 久久久久免费视频 | 天天激情综合 | 久久在现 | 99tvdz@gmail.com| 丁香视频 | www夜夜操| 在线免费观看国产黄色 | 成 人 黄 色 视频免费播放 | 国产精品免费观看久久 | 精品自拍sae8—视频 | 97高清免费视频 | 黄色片免费在线 | 永久免费观看视频 | 美女国产在线 | 久久精品日产第一区二区三区乱码 | 亚洲综合激情小说 | 日韩xxxxxxxxx| 久久久人人人 | 欧美a级在线 | 天天综合天天综合 | 国产一级淫片在线观看 | 91视频一8mav | 精品国模一区二区三区 | 欧美日韩在线播放 | 午夜美女wwww| 国产精品日韩久久久久 | 91av视频在线免费观看 | 91大片网站 | 这里只有精品视频在线 | 六月色婷婷 | 中文字幕在线视频一区二区三区 | 色婷婷六月天 | 国产成人高清在线 | 在线天堂视频 | 久久久久久蜜桃一区二区 | 高清不卡一区二区在线 | 国产精品毛片一区二区 | 男女精品久久 | 91中文字幕在线播放 | 狠狠色狠狠色终合网 | 久久网站av| 久久久久成 | 久久综合色天天久久综合图片 | 亚洲乱码在线 | 久99久精品 | 国产中文字幕在线播放 | 国产日韩视频在线观看 | 欧美一区二区在线刺激视频 | 日韩综合精品 | 最近日本中文字幕 | 中文字幕文字幕一区二区 | 国产不卡精品 | 精品免费在线视频 | 91精选在线观看 | 91成人精品一区在线播放 | 91一区二区在线 | 国产成人中文字幕 | 一区二区三区在线免费观看视频 | 亚洲日本中文字幕在线观看 | 欧美国产一区在线 | 国产一区黄色 | 91免费观看视频网站 | 狠狠久久伊人 | 黄色免费高清视频 | 久久成人毛片 | 丁香婷婷色月天 | 国产精品第一视频 | 欧美男女爱爱视频 | 狠狠躁夜夜躁人人爽超碰91 | 缴情综合网五月天 | 精品久久久久久久久久久久久 | 久久久久影视 | 91视频-88av | 成人在线观看资源 | 91在线播放视频 | 国产精品美女久久久久久免费 | 欧美色综合久久 | 一区二区中文字幕在线 | 激情欧美日韩一区二区 | 亚洲资源片 | 国产成人av片 | 日本视频网 | 日韩国产精品久久 | 久草久草在线 | 国产91精品欧美 | 日本中文字幕电影在线免费观看 | 国产美女免费 | 婷婷丁香狠狠爱 | 91麻豆操 | 色香天天| 国产日韩欧美自拍 | www免费在线观看 | 91漂亮少妇露脸在线播放 | 免费视频区 | 日韩精品中文字幕久久臀 | 国产日本在线观看 | 婷婷久久国产 | www.久久久久 | 97在线视频免费播放 | www国产在线 | 天天干天天干天天射 | 天天操天天操天天操 | 欧美在线99 | 天天爱天天操 | 在线国产高清 | 日韩成人黄色 | 在线免费观看的av网站 | 三日本三级少妇三级99 | 99九九99九九九视频精品 | 国产精品2019| 色综合天天天天做夜夜夜夜做 | 国产精品久久久久久久久久东京 | 久久电影日韩 | 亚洲成人资源在线观看 | 免费人成网 | 国产成人久久av免费高清密臂 | 亚洲日本在线视频观看 | 国产精品久久嫩一区二区免费 | av资源免费在线观看 | 国产精品一区二区三区免费看 | 亚洲国产精品999 | 国产一级精品在线观看 | 国产人成免费视频 | 美女av在线免费 | 免费在线观看av | 国产香蕉97碰碰碰视频在线观看 | 激情黄色一级片 | 国产一级性生活视频 | 日韩欧美在线一区 | 午夜在线免费观看视频 | 日韩二区在线播放 | 玖玖在线看| 亚洲精品一区二区三区在线观看 | 五月天激情综合 | 久久99精品国产麻豆婷婷 | 韩国精品视频在线观看 | 天天躁日日躁狠狠躁av麻豆 | 丁香激情婷婷 | 国产精品一区二区三区观看 | 天天射综合网视频 | 亚洲视频综合在线 | 成人在线视频论坛 | 极品嫩模被强到高潮呻吟91 | 亚洲精品国产精品乱码不99热 | 99精品99 | 一区二区三区在线视频111 | 精品极品在线 | 欧洲精品久久久久毛片完整版 | 国产精品你懂的在线观看 | 九九电影在线 | .国产精品成人自产拍在线观看6 | 成人app在线免费观看 | 一本色道久久精品 | 99精品国产成人一区二区 | 久久久久亚洲精品男人的天堂 | 麻豆精品视频在线观看免费 | 九九视频在线观看视频6 | 亚洲精品观看 | 最新中文字幕在线观看视频 | 超碰官网 | 三上悠亚一区二区在线观看 | 五月开心婷婷 | 丁香综合网 | 免费网址在线播放 | 最近2019年日本中文免费字幕 | 日韩精品在线免费观看 | 在线观看a视频 | 亚洲精品在线视频网站 | 婷婷色影院 | 中文字幕一区二区三区四区在线视频 | www在线观看视频 | 热re99久久精品国产99热 | 婷婷亚洲综合 | 日本中文字幕观看 | 国产日韩精品一区二区在线观看播放 | 1024手机基地在线观看 | 国产黄视频在线观看 | 五月天开心 | 色综合久久综合中文综合网 | 亚洲国产中文字幕 | 午夜黄网 | 四虎成人精品永久免费av | 深爱综合网 | 公与妇乱理三级xxx 在线观看视频在线观看 | 成人免费视频网站 | 国产麻豆视频免费观看 | 色婷婷中文 | 激情五月婷婷网 | 中文亚洲欧美日韩 | 在线看国产一区 | 91精品网站在线观看 | 久久久久欠精品国产毛片国产毛生 | 中文字幕国语官网在线视频 | 性色av香蕉一区二区 | 国产精品二区三区 | 亚洲国产精品激情在线观看 | 久久免费国产视频 | 香蕉视频在线观看免费 | 成人动漫一区二区 | 99久久精品国产欧美主题曲 | 中文字幕一区二区三区久久蜜桃 | 免费在线国产黄色 | 最新av电影网站 | 久久久国产精品久久久 | 亚洲三级国产 | 日韩欧美国产激情在线播放 | 亚洲精品色婷婷 | 色婷婷天天干 | 99精品欧美一区二区蜜桃免费 | 亚洲 欧洲 国产 日本 综合 | 亚洲精品 在线视频 | 亚洲综合在 | 91久草视频| 国产一区二区三区免费在线观看 | 成人宗合网 | 欧美网址在线观看 | 国产天天综合 | 久99久中文字幕在线 | 精品久久网 | a天堂最新版中文在线地址 久久99久久精品国产 | 中文字幕在线第一页 | 欧美激情第一区 | 日韩在线高清免费视频 | 99在线精品视频在线观看 | 精品国产黄色片 | 日韩免费三区 | 免费男女网站 | 亚洲人人射 | 日韩美女一级片 | 99久久精品视频免费 | 国产在线无 | 欧美日韩另类视频 | 成人影片在线免费观看 | 国产资源av | 天天拍天天色 | 国产精品久久久区三区天天噜 | 欧美视频不卡 | 国产白浆视频 | 波多野结依在线观看 | 免费看色视频 | 免费高清在线观看电视网站 | 国产视频观看 | 免费在线中文字幕 | 一区二区三区四区在线 | 国产精品久久久久久久毛片 | 91在线看视频免费 | 狠狠躁日日躁狂躁夜夜躁 | 国产精品免费一区二区 | 麻花天美星空视频 | av电影在线不卡 | 精品在线视频一区 | 黄色aa久久 | 精品久久久成人 | 亚洲精品午夜视频 | av片子在线观看 | 丁香电影小说免费视频观看 | 国产视频二区三区 | 久久欧美综合 | 亚洲精品久久久蜜臀下载官网 | 国产精品精品久久久 | 亚洲男男gaygay无套 | 国产日本在线观看 | 国产精品成人一区二区三区吃奶 | 韩国视频一区二区三区 | 91成人天堂久久成人 | 日韩欧美视频一区二区 | 在线免费观看黄色 | 国产一二区视频 | 亚洲三级av | 亚洲伊人第一页 | 欧洲精品久久久久毛片完整版 | www.天天操.com | 97色免费视频 | 久久久久久久久久福利 | 乱男乱女www7788 | 午夜在线资源 | a午夜在线 | 日韩免费中文字幕 | 在线免费精品视频 | 日韩大片在线看 | 亚洲精品在线看 | 丁香六月中文字幕 | 97超碰在线资源 | 国产精品久久久久9999吃药 | 天天草天天干 | 在线视频第一页 | 国产精品国产三级国产aⅴ9色 | 欧美日韩免费一区二区三区 | 在线亚洲成人 | 888av| 亚洲精品国产综合99久久夜夜嗨 | 美女免费黄网站 | 黄色av免费在线 | 日韩在线视频精品 | 五月天亚洲综合小说网 | 91探花国产综合在线精品 | av日韩av| 国产成人在线免费观看 | 午夜久久久久久久久 | 亚洲精品午夜aaa久久久 | 国产a国产a国产a | 成人av电影在线 | 国产欧美在线一区 | 亚洲丁香久久久 | 中国一级片在线播放 | 久久久免费精品 | 久久久久中文字幕 | 国产精品99精品 | 国产亚洲精品成人av久久ww | 99在线观看精品 | www.夜夜爱 | 色综合久久中文字幕综合网 | 黄在线免费看 | 日日射av | 国产高清免费av | 色老板在线视频 | 国产高清黄 | 一级免费黄色 | 国产精品永久免费在线 | 欧美爽爽爽 | 亚洲aⅴ一区二区三区 | 五月天视频网 | 亚洲精品国产品国语在线 | 日韩欧美在线视频一区二区三区 | 97偷拍在线视频 | 免费一级特黄录像 | 免费观看的黄色 | 狠狠干激情 | www.天天干.com | 国产在线播放一区 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | www.亚洲视频 | 国产中文字幕国产 | 色狠狠综合天天综合综合 | 午夜视频在线观看一区二区 | 国内小视频在线观看 | 国产精品自产拍在线观看中文 | 在线观看韩国av | 日韩免费在线看 | 国产97视频在线 | 久久久久久久久精 | 特级西西444www大胆高清无视频 | 日韩欧美视频免费观看 | 国产区在线 | 成人在线黄色 | 2018亚洲男人天堂 | 亚洲精品乱码久久久久久久久久 | 狠狠躁日日躁狂躁夜夜躁 | 国产999视频在线观看 | 久久精品超碰 | 久久久久久久久久久久av | 欧美国产日韩一区 | 欧美日韩免费观看一区二区三区 | 欧美日韩一区二区久久 | 亚洲免费av电影 | 天天操天天射天天舔 | 深夜国产福利 | 中文字幕在线资源 | 人人爽网站 | 成人免费在线网 | 成年人天堂com | 欧美视频一区二 | 国产亚洲精品久久久久久久久久久久 | 五月开心六月伊人色婷婷 | 天天摸夜夜操 | 欧美一区二区三区激情视频 | 国产精品区免费视频 | 久久一区国产 | 成人在线观看免费视频 | 久久大片| 91中文字幕视频 | 国产福利一区二区三区在线观看 | 91免费观看视频网站 | 最新av电影网址 | 狂野欧美激情性xxxx欧美 | 不卡电影一区二区三区 | 国产一区二区三区免费视频 | 精品福利在线观看 | 91超在线| 日韩狠狠操| 亚洲六月丁香色婷婷综合久久 | 久久久久一区二区三区四区 | 91激情| 奇米网444| a天堂最新版中文在线地址 久久99久久精品国产 | 9在线观看免费高清完整版 玖玖爱免费视频 | www.久久99| 91免费观看国产 | 国产精品大片免费观看 | 国产在线第三页 | 极品嫩模被强到高潮呻吟91 | 91大神电影 | 成年人黄色大片在线 | 国产日本在线播放 | 天天插天天操天天干 | 中文字幕在线观看一区二区 | www黄色av| 国产免费观看久久黄 | 婷婷电影在线观看 | 国产日产精品一区二区三区四区 | 天天草av| 91在线视频播放 | 全黄网站 | 最近日本中文字幕a | 亚洲男模gay裸体gay | 日韩av在线免费看 | 天天艹天天操 | 国产高清久久久久 | 国产精品手机播放 | 99免费在线 | 91精品久久久久久综合乱菊 | a视频在线观看 | 免费精品国产va自在自线 | 久久久综合九色合综国产精品 | 国产精品女人久久久 | 久久中文字幕在线视频 | 亚洲精品玖玖玖av在线看 | 911久久香蕉国产线看观看 | 久久久国产99久久国产一 | 国产高清视频在线免费观看 | 久久国产日韩 | 六月婷色 | 午夜视频久久久 | 中文字幕色综合网 | 国产一区高清在线观看 | 91桃色视频 | 久久久受www免费人成 | 久草热久草视频 | 日韩欧美精品在线视频 | 日韩二区在线 | 婷婷国产在线 | 天天干夜夜想 | 天天看天天干 | 免费观看久久久 | 久久婷亚洲五月一区天天躁 | 日韩有码网站 | 又黄又爽的视频在线观看网站 | 中文字字幕在线 | 五月天久久婷 | 91人人揉日日捏人人看 | 粉嫩av一区二区三区四区 | 久久亚洲综合国产精品99麻豆的功能介绍 | 国产欧美在线一区二区三区 | 亚洲精品福利在线观看 | 国产精品自拍av | 久久综合欧美 | 在线观看国产亚洲 | 日日干天天爽 | 超碰在线中文字幕 | 色吊丝在线永久观看最新版本 | 国产丝袜一区二区三区 | 黄色软件在线观看 | 免费一级日韩欧美性大片 | 亚洲精品网页 | www黄| www.com.日本一级 | 国产原创av片| 色婷婷国产精品一区在线观看 | 成人网页在线免费观看 | 一级黄色免费 | 97成人资源站 | 日韩中文字幕第一页 | 96视频在线 | 国产专区精品 | 中文字幕有码在线 | 午夜精品久久久久久中宇69 | www黄色com| 国产精品国产三级国产不产一地 | 国产一区二区精品久久91 | 91视频亚洲 | 国产精品久久99综合免费观看尤物 | 人人插人人插 | 成年人电影免费在线观看 | 少妇bbb好爽 | 国产理论免费 | 色综合天天狠天天透天天伊人 | 91成人免费看 | 激情久久伊人 | 国产一区91| 国产小视频免费在线观看 | 国产精品久久久久久高潮 | 99精品国产aⅴ | 婷婷网址| 青草视频在线免费 | 欧美日韩在线观看视频 | 中文字幕日本电影 | 欧美九九视频 | 国产区精品在线 | 日日夜夜免费精品 | 国产玖玖在线 | 久久一区二区三区四区 | 最新91在线视频 | 天天拍天天操 | 中文字幕在线播放一区 | 国产一级二级在线观看 | av在线免费观看不卡 | 伊人天天综合 | 精品 激情 | 日韩精品中文字幕在线 | 在线观看日韩 | av高清免费在线 | 精品久久久久久电影 | 久久视频在线免费观看 | www.色婷婷| 一区二区三区日韩在线观看 | 欧洲性视频 | 日本精品在线 | 伊人国产在线播放 | 日韩综合视频在线观看 | 天天射天天操天天 | 丁香五月亚洲综合在线 | 在线看成人| 人人揉人人揉人人揉人人揉97 | 日韩久久一区 | 亚洲免费精品视频 | 在线性视频日韩欧美 | 91精品一区二区三区久久久久久 | 日韩一区正在播放 | 91视频啊啊啊 | 精品国产一区二区三区免费 | av网在线观看 | 午夜精品一区二区三区在线播放 | 久久久国产精品人人片99精片欧美一 | 91精品在线视频观看 | 欧美大jb| 国产精品国产三级在线专区 | 中文字幕123区| 欧美精品你懂的 | 92精品国产成人观看免费 | 99热这里只有精品免费 | 波多野结衣视频在线 | 一级片免费观看视频 | 亚洲天堂精品视频在线观看 | 日本久久精品 | 国产剧情av在线播放 | 国产精品福利在线播放 | 久久超级碰| 人人插人人看 | 六月色丁| 日韩精品中文字幕在线播放 | 午夜久久影视 | 人人看看人人 | 久久久久在线观看 | 日韩a在线看 | 免费v片| 在线成人av | 久久久91精品国产一区二区精品 | 九九九九精品九九九九 | 久久精品在线 | 久久99免费视频 | 国产高清精 | 我要色综合天天 | 精品视频999 | 91伊人影院 | 国产精品免费视频观看 | 国产午夜精品av一区二区 | 久久看片网站 | 开心激情五月婷婷 | 久久99在线观看 | 日韩精品一区二区三区三炮视频 | 91av视频免费在线观看 | 日韩免费在线观看 | 日韩欧美综合视频 | 亚州精品一二三区 | .精品久久久麻豆国产精品 亚洲va欧美 | 激情婷婷亚洲 | 国产精品欧美日韩 | 日韩久久久久久久久 | 国产成人免费 | 亚洲精品网址在线观看 | 天天干天天操天天拍 | 色综合天天| 亚洲免费在线 | 青青河边草免费观看完整版高清 | 欧美淫视频 | 九色福利视频 | 久草在| 欧美日韩裸体免费视频 | 狠狠狠狠狠色综合 | 91av在线视频免费观看 | 成人网大片 | 免费观看av | 一区二区在线影院 | zzijzzij日本成熟少妇 | 久久久免费精品国产一区二区 | 欧美黑人猛交 | 精品国产123| 亚洲欧洲国产视频 | 美女久久久久 | av成人在线观看 | 999久久国产| 成人aⅴ视频 | 欧美日韩亚洲在线观看 | 香蕉久久久久久久 | 久久视| 亚洲精品高清在线 | 久草视频在线免费 | 国产精品情侣视频 | 欧美另类交在线观看 | 麻豆高清免费国产一区 | 中文字幕电影高清在线观看 | 国产中文 | 五月天婷婷免费视频 | 一级特黄aaa大片在线观看 | 亚洲在线网址 | 99精品视频精品精品视频 | 亚洲精品国产精品乱码在线观看 | 天天综合色天天综合 | 国产精品va最新国产精品视频 | 国产精品久久婷婷六月丁香 | 国产精品一区二区三区在线免费观看 | 91在线观看欧美日韩 | 五月天激情综合网 | 国产一区二区三区免费视频 | 成人全视频免费观看在线看 | 亚洲激情在线视频 | 91精品一| 中文字幕高清免费日韩视频在线 | 国产夫妻av在线 | 四虎小视频 | 国产亚洲在 | 中文字幕欧美日韩va免费视频 | 91亚洲激情 | 天天操天天干天天操天天干 | 少妇bbbb搡bbbb桶 | 久久人人爽人人片av | 精品视频免费看 | 久久爱导航 | 精品久久久久久国产偷窥 | 久久精品精品电影网 | 激情网站五月天 | 亚洲精品午夜视频 | 黄色三级久久 | 国产视频69 | 国产成人精品一区二区在线 | 久草在线资源观看 | www.色五月.com | 国产美女视频 | 天天爱天天插 | 看污网站| 超碰在线cao | 在线观看中文字幕av | 五月婷网站| 好看的国产精品视频 | 日韩理论在线播放 | 天天色天天搞 | 欧美精品免费视频 | 国产毛片aaa | 五月婷婷久久丁香 | 麻豆影视网站 | 国产精品一区二区三区在线播放 | 一区二区精品在线视频 | 国产69精品久久久久久久久久 | 国产69精品久久app免费版 |