青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

唐吉訶德

  C++博客 :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
  5 Posts :: 75 Stories :: 3 Comments :: 0 Trackbacks

常用鏈接

留言簿(2)

我參與的團(tuán)隊(duì)

搜索

  •  

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

Android.mk文件語(yǔ)法規(guī)范

根據(jù)eoeandroid上的的連載,進(jìn)行一些更新、修改和加亮。

今天翻譯ANDROID-MK.TXT文件(英文原文件在/development/Ndk/Docs/android-mk.txt

Android.mk文件語(yǔ)法規(guī)范

 

Introduction:

Android.mk編譯文件是用來(lái)向Android NDK描述你的C,C++源代碼文件的, 這篇文檔描述了它的語(yǔ)法。在閱讀下面的內(nèi)容之前,假定你已經(jīng)閱讀了docs/OVERVIEW.TXT文件,了解了它們的腳色和用途。

 

概述:

一個(gè)Android.mk file用來(lái)向編譯系統(tǒng)描述你的源代碼。具體來(lái)說(shuō):-該文件是GNU Makefile的一小部分,會(huì)被編譯系統(tǒng)解析一次或更多次的build系統(tǒng)。因此,您應(yīng)盡量減少您聲明的變量,不要認(rèn)為某些變量在解析過(guò)程中不會(huì)被定義。-這個(gè)文件的語(yǔ)法允許把你的源代碼組織成模塊,一個(gè)模塊屬下列類型之一:

靜態(tài)庫(kù)

共享庫(kù)

只有共享庫(kù)將被安裝/復(fù)制到您的應(yīng)用軟件包。雖然靜態(tài)庫(kù)能被用于生成共享庫(kù)。

你可以在每一個(gè)Android.mk file中定義一個(gè)或多個(gè)模塊,你也可以在幾個(gè)模塊中使用同一個(gè)源代碼文件。

/*****************************************************************************/

-編譯系統(tǒng)為你處理許多細(xì)節(jié)問(wèn)題。例如,你不需要在你的Android.mk中列出頭文件和依賴文件。NDK編譯系統(tǒng)將會(huì)為你自動(dòng)處理這些問(wèn)題。這也意味著,在升級(jí)NDK后,你應(yīng)該得到新的toolchain/platform支持,而且不需要改變你的Android.mk文件。

注意,這個(gè)語(yǔ)法同公開(kāi)發(fā)布的Android平臺(tái)的開(kāi)源代碼很接近,然而編譯系統(tǒng)實(shí)現(xiàn)他們的方式卻是不同的,這是故意這樣設(shè)計(jì)的,可以讓程序開(kāi)發(fā)人員重用外部庫(kù)的源代碼更容易。

 

簡(jiǎn)單的例子:

---------------

在描述語(yǔ)法細(xì)節(jié)之前,咱們來(lái)看一個(gè)簡(jiǎn)單的"hello world"的例子,比如,下面的文件:

sources/helloworld/helloworld.c

sources/helloworld/Android.mk

'helloworld.c'是一個(gè)JNI共享庫(kù),實(shí)現(xiàn)返回"hello world"字符串的原生方法。

相應(yīng)的Android.mk文件會(huì)象下面這樣:

---------- cut here ------------------

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE:= helloworld

LOCAL_SRC_FILES := helloworld.c

include $(BUILD_SHARED_LIBRARY)

---------- cut here ------------------

好,我們來(lái)解釋一下這幾行代碼:

LOCAL_PATH := $(call my-dir)

一個(gè)Android.mk file首先必須定義好LOCAL_PATH變量。它用于在開(kāi)發(fā)樹(shù)中查找源文件。在這個(gè)例子中,宏函數(shù)’my-dir, 由編譯系統(tǒng)提供,用于返回當(dāng)前路徑(即包含Android.mk file文件的目錄)。

include $( CLEAR_VARS)

CLEAR_VARS由編譯系統(tǒng)提供,指定讓GNU MAKEFILE為你清除許多LOCAL_XXX變量(例如 LOCAL_MODULE, LOCAL_SRC_FILES, LOCAL_STATIC_LIBRARIES, 等等...),

LOCAL_PATH 。這是必要的,因?yàn)樗械木幾g控制文件都在同一個(gè)GNU MAKE執(zhí)行環(huán)境中,所有的變量都是全局的。

LOCAL_MODULE := helloworld

LOCAL_MODULE變量必須定義,以標(biāo)識(shí)你在Android.mk文件中描述的每個(gè)模塊。名稱必須是唯一的,而且不包含任何空格。注意編譯系統(tǒng)會(huì)自動(dòng)產(chǎn)生合適的前綴和后綴,換句話說(shuō),一個(gè)被命名為'foo'的共享庫(kù)模塊,將會(huì)生成'libfoo.so'文件。

重要注意事項(xiàng)

如果你把庫(kù)命名為‘libhelloworld’,編譯系統(tǒng)將不會(huì)添加任何的lib前綴,也會(huì)生成libhelloworld.so,這是為了支持來(lái)源于Android平臺(tái)的源代碼的Android.mk文件,如果你確實(shí)需要這么做的話。

LOCAL_SRC_FILES := helloworld.c

LOCAL_SRC_FILES變量必須包含將要編譯打包進(jìn)模塊中的CC++源代碼文件。注意,你不用在這里列出頭文件和包含文件,因?yàn)榫幾g系統(tǒng)將會(huì)自動(dòng)為你找出依賴型的文件;僅僅列出直接傳遞給編譯器的源代碼文件就好?!咀⒁猓J(rèn)的C++源碼文件的擴(kuò)展名是’.cpp. 指定一個(gè)不同的擴(kuò)展名也是可能的,只要定義LOCAL_DEFAULT_CPP_EXTENSION變量,不要忘記開(kāi)始的小圓點(diǎn)(也就是定義為‘.cxx,而不是‘cxx’)(當(dāng)然這一步我們一般不會(huì)去改它)】

include $(BUILD_SHARED_LIBRARY)

BUILD_SHARED_LIBRARY是編譯系統(tǒng)提供的變量,指向一個(gè)GNU Makefile腳本(應(yīng)該就是在build/core目錄下的shared_library.mk),負(fù)責(zé)收集自從上次調(diào)用'include $(CLEAR_VARS)'以來(lái),定義在LOCAL_XXX變量中的所有信息,并且決定編譯什么,如何正確地去做。并根據(jù)其規(guī)則生成靜態(tài)庫(kù)。同理對(duì)于靜態(tài)庫(kù)。

 

 

 

/****************************************************************************/

sources/samples目錄下有更復(fù)雜一點(diǎn)的例子,寫有注釋的Android.mk文件,你可以看看。

參考:

這是一份你應(yīng)該在Android.mk中依賴或定義的變量列表,您可以定義其他變量為自己使用,

但是NDK編譯系統(tǒng)保留下列變量名:

-LOCAL_開(kāi)頭的名字(例如 LOCAL_MODULE

-PRIVATE_, NDK_ or APP_開(kāi)頭的名字(內(nèi)部使用)

-小寫名字(內(nèi)部使用,例如’my-dir’)

如果您為了方便在Android.mk中定義自己的變量,我們建議使用MY_前綴,一個(gè)小例子:

---------- cut here ------------------

MY_SOURCES := foo.c

ifneq ($(MY_CONFIG_BAR),)

MY_SOURCES += bar.c

endif

LOCAL_SRC_FILES += $(MY_SOURCES)

---------- cut here ------------------

- - - - - - - - - - -

這些GNU Make 變量在你的Android.mk文件解析之前,就由編譯系統(tǒng)定義好了。

注意在某些情況下,NDK可能分析Android.mk幾次,每一次某些變量的定義會(huì)有不同。

CLEAR_VARS

指向一個(gè)編譯腳本,幾乎所有未定義的LOCAL_XXX變量都在"Module-description"節(jié)中列出。

你必須在開(kāi)始一個(gè)新模塊之前包含這個(gè)腳本。include $(CLEAR_VARS)

 

BUILD_SHARED_LIBRARY

指向編譯腳本,收集所有的你在LOCAL_XXX變量中提供的信息,并且決定如何把你列出的源代碼文件編譯成一個(gè)共享庫(kù)。注意,你必須至少在包含這個(gè)文件之前定義LOCAL_MODULELOCAL_SRC_FILES,使用例子:

include $(BUILD_SHARED_LIBRARY)

注意這將生成一個(gè)名為lib$(LOCAL_MODULE).so的文件。

 

BUILD_STATIC_LIBRARY

一個(gè)BUILD_SHARED_LIBRARY變量用于編譯一個(gè)靜態(tài)庫(kù)。靜態(tài)庫(kù)不會(huì)復(fù)制到你的project/packages中,誕生能夠用于編譯共享庫(kù),(看下面描述的LOCAL_STATIC_LIBRARIES and LOCAL_STATIC_WHOLE_LIBRARIES

使用例子:

include $(BUILD_STATIC_LIBRARY)

注意,這將會(huì)生成一個(gè)名為lib$(LOCAL_MODULE).a的文件。

 

TARGET_ARCH

目標(biāo)CPU平臺(tái)的名字,如同在android開(kāi)放源碼中指定的那樣。如果是’arm’,表示要生成ARM兼容的指令,與CPU架構(gòu)的修訂版無(wú)關(guān)。

 

TARGET_PLATFORM

Android.mk解析的時(shí)候,目標(biāo)Android平臺(tái)的名字.詳情可參考/development/ndk/docs/stable-apis.txt.

    android-3      -> Official Android 1.5 system images

    android-4      -> Official Android 1.6 system images

    android-5      -> Official Android 2.0 system images

 

TARGET_ARCH_ABI

暫時(shí)只支持兩個(gè)value,armeabiarmeabi-v7a。在現(xiàn)在的版本中一般把這兩個(gè)值簡(jiǎn)單的定義為arm,通過(guò)android 平臺(tái)內(nèi)部對(duì)它重定義來(lái)獲得更好的匹配。

其他的ABI將在以后的NDK版本中介紹,它們會(huì)有不同的名字。注意所有基于ARM的ABI都會(huì)把'TARGET_ARCH'定義成‘arm’,但是會(huì)有不同的‘TARGET_ARCH_ABI

 

TARGET_ABI

  目標(biāo)平臺(tái)和ABI的組合,它事實(shí)上被定義成$(TARGET_PLATFORM)-$(TARGET_ARCH_ABI) 在你想要在真實(shí)的設(shè)備中針對(duì)一個(gè)特別的目標(biāo)系統(tǒng)進(jìn)行測(cè)試時(shí),會(huì)有用。在默認(rèn)的情況下,它會(huì)是'android-3-arm'。

 

 

/*****************************************************************************/

下面是GNU Make ‘功能’宏,必須通過(guò)使用'$(call <function>)'來(lái)求值,他們返回文本化的信息。

my-dir

返回當(dāng)前Android.mk所在的目錄路徑,相對(duì)于NDK編譯系統(tǒng)的頂層。這是有用的,在Android.mk文件的開(kāi)頭如此定義:

LOCAL_PATH := $(call my-dir)

 

all-subdir-makefiles

   返回一個(gè)位于當(dāng)前'my-dir'路徑的子目錄列表。例如,看下面的目錄層次:

sources/foo/Android.mk

sources/foo/lib1/Android.mk

sources/foo/lib2/Android.mk

如果sources/foo/Android.mk包含一行

include $(call all-subdir-makefiles)

那么它就會(huì)自動(dòng)包含sources/foo/lib1/Android.mk sources/foo/lib2/Android.mk

這項(xiàng)功能用于向編譯系統(tǒng)提供深層次嵌套的代碼目錄層次。注意,在默認(rèn)情況下,NDK將會(huì)只搜索在sources/*/Android.mk中的文件。

 

this-makefile

返回當(dāng)前Makefile的路徑(即這個(gè)函數(shù)調(diào)用的地方)

 

parent-makefile

  返回調(diào)用樹(shù)中父Makefile路徑。即包含當(dāng)前MakefileMakefile路徑。

 

grand-parent-makefile

猜猜看...

 

 

/*****************************************************************************/

模塊描述變量:

下面的變量用于向編譯系統(tǒng)描述你的模塊。你應(yīng)該定義在'include $(CLEAR_VARS)''include $(BUILD_XXXXX)'之間定義。正如前面描寫的那樣,$(CLEAR_VARS是一個(gè)腳本,清除所有這些變量,除非在描述中顯式注明。

 

LOCAL_PATH

  這個(gè)變量用于給出當(dāng)前文件的路徑。你必須在Android.mk的開(kāi)頭定義,可以這樣使用:

 

LOCAL_PATH := $(call my-dir)

這個(gè)變量不會(huì)被$(CLEAR_VARS)清除,因此每個(gè)Android.mk只需要定義一次(即使你在一個(gè)文件中定義了幾個(gè)模塊的情況下)。

 

LOCAL_MODULE

這是你模塊的名字,它必須是唯一的,而且不能包含空格。你必須在包含任一的$(BUILD_XXXX)腳本之前定義它。模塊的名字決定了生成文件的名字,例如,如果一個(gè)一個(gè)共享庫(kù)模塊的名字是<foo>,那么生成文件的名字就是lib<foo>.so。但是,在你的NDK生成文件中(或者Android.mk或者Application.mk),你應(yīng)該只涉及(引用)有正常名字的其他模塊。

 

LOCAL_SRC_FILES

這是要編譯的源代碼文件列表。只要列出要傳遞給編譯器的文件,因?yàn)榫幾g系統(tǒng)自動(dòng)為你計(jì)算依賴。

注意源代碼文件名稱都是相對(duì)于LOCAL_PATH的,你可以使用路徑部分,例如:

LOCAL_SRC_FILES := foo.c \

toto/bar.c

注意:在生成文件中都要使用UNIX風(fēng)格的斜杠(/).windows風(fēng)格的反斜杠不會(huì)被正確的處理。

 

LOCAL_CPP_EXTENSION

這是一個(gè)可選變量,用來(lái)指定C++代碼文件的擴(kuò)展名,默認(rèn)是'.cpp',但是你可以改變它,比如:

LOCAL_CPP_EXTENSION := .cxx

 

LOCAL_C_INCLUDES

       路徑的可選配置,是從根目錄開(kāi)始的,

    all sources (C, C++ and Assembly). For example:

        LOCAL_C_INCLUDES := sources/foo

    Or even:

        LOCAL_C_INCLUDES := $(LOCAL_PATH)/../foo

       需要在任何包含LOCAL_CFLAGS / LOCAL_CPPFLAGS標(biāo)志之前。

 

LOCAL_CFLAGS

可選的編譯器選項(xiàng),在編譯C代碼文件的時(shí)候使用。

這可能是有用的,指定一個(gè)附加的包含路徑(相對(duì)于NDK的頂層目錄),宏定義,或者編譯選項(xiàng)。

 重要信息:不要在Android.mk中改變optimization/debugging級(jí)別,只要在Application.mk中指定合適的信息,就會(huì)自動(dòng)地為你處理這個(gè)問(wèn)題,在調(diào)試期間,會(huì)讓NDK自動(dòng)生成有用的數(shù)據(jù)文件。

 

LOCAL_CXXFLAGS

Same as LOCAL_CFLAGS for C++ source files

 

LOCAL_CPPFLAGS

LOCAL_CFLAGS相同,但是對(duì)C 和 C++ source files都適用。

 

LOCAL_STATIC_LIBRARIES

應(yīng)該鏈接到這個(gè)模塊的靜態(tài)庫(kù)列表(使用BUILD_STATIC_LIBRARY生成),這僅僅對(duì)共享庫(kù)模塊才有意義。

 

LOCAL_SHARED_LIBRARIES

這個(gè)模塊在運(yùn)行時(shí)要依賴的共享庫(kù)模塊列表,在鏈接時(shí)需要,在生成文件時(shí)嵌入的相應(yīng)的信息。注意:這不會(huì)附加列出的模塊到編譯圖,也就是,你仍然需要在Application.mk中把它們添加到程序要求的模塊中。

 

LOCAL_LDLIBS

編譯你的模塊要使用的附加的鏈接器選項(xiàng)。這對(duì)于使用”-l”前綴傳遞指定庫(kù)的名字是有用的。例如,下面將告訴鏈接器生成的模塊要在加載時(shí)刻鏈接到/system/lib/libz.so

LOCAL_LDLIBS := -lz

docs/STABLE-APIS.TXT獲取你使用NDK發(fā)行版能鏈接到的開(kāi)放的系統(tǒng)庫(kù)列表。

 

LOCAL_ALLOW_UNDEFINED_SYMBOLS

  默認(rèn)情況下,在試圖編譯一個(gè)共享庫(kù)時(shí),任何未定義的引用將導(dǎo)致一個(gè)“未定義的符號(hào)”錯(cuò)誤。這對(duì)于在你的源代碼文件中捕捉錯(cuò)誤會(huì)有很大的幫助。

然而,如果你因?yàn)槟承┰?,需要不啟?dòng)這項(xiàng)檢查,把這個(gè)變量設(shè)為‘true’。注意相應(yīng)的共享庫(kù)可能在運(yùn)行時(shí)加載失敗。(這個(gè)一般盡量不要去設(shè)為true

 

LOCAL_ARM_MODE

       默認(rèn)情況下,arm目標(biāo)二進(jìn)制會(huì)以thumb的形式生成(16位),你可以通過(guò)設(shè)置這個(gè)變量為arm如果你希望你的module是以32位指令的形式。

    'arm' (32-bit instructions) mode. E.g.:

      LOCAL_ARM_MODE := arm

注意你同樣可以在編譯的時(shí)候告訴系統(tǒng)編譯特定的類型,比如

       LOCAL_SRC_FILES := foo.c bar.c.arm

這樣就告訴系統(tǒng)總是將bar.carm的模式編譯,

 

 

Android.mk使用模板

在一個(gè)Android.mk中可以生成多個(gè)可執(zhí)行程序、動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù)。

1,編譯應(yīng)用程序的模板:

     #Test Exe

     LOCAL_PATH := $(call my-dir)

     #include $(CLEAR_VARS)

     LOCAL_SRC_FILES:= main.c

     LOCAL_MODULE:= test_exe

     #LOCAL_C_INCLUDES :=

     #LOCAL_STATIC_LIBRARIES :=

     #LOCAL_SHARED_LIBRARIES :=

     include $(BUILD_EXECUTABLE)

(菜鳥(niǎo)級(jí)別解釋::=是賦值的意思,$是引用某變量的值)LOCAL_SRC_FILES中加入源文件路徑,LOCAL_C_INCLUDES 中加入所需要包含的頭文件路徑,LOCAL_STATIC_LIBRARIES加入所需要鏈接的靜態(tài)庫(kù)(*.a)的名稱,LOCAL_SHARED_LIBRARIES中加入所需要鏈接的動(dòng)態(tài)庫(kù)(*.so)的名稱,LOCAL_MODULE表示模塊最終的名稱,BUILD_EXECUTABLE表示以一個(gè)可執(zhí)行程序的方式進(jìn)行編譯。

2,編譯靜態(tài)庫(kù)的模板:

     #Test Static Lib

     LOCAL_PATH := $(call my-dir)

     include $(CLEAR_VARS)

     LOCAL_SRC_FILES:= \

               helloworld.c

     LOCAL_MODULE:= libtest_static

     #LOCAL_C_INCLUDES :=

     #LOCAL_STATIC_LIBRARIES :=

     #LOCAL_SHARED_LIBRARIES :=

     include $(BUILD_STATIC_LIBRARY)

一般的和上面相似,BUILD_STATIC_LIBRARY表示編譯一個(gè)靜態(tài)庫(kù)。

3,編譯動(dòng)態(tài)庫(kù)的模板:

     #Test Shared Lib

     LOCAL_PATH := $(call my-dir)

     include $(CLEAR_VARS)

     LOCAL_SRC_FILES:= \

               helloworld.c

     LOCAL_MODULE:= libtest_shared

     TARGET_PRELINK_MODULES := false

     #LOCAL_C_INCLUDES :=

     #LOCAL_STATIC_LIBRARIES :=

     #LOCAL_SHARED_LIBRARIES :=

      include $(BUILD_SHARED_LIBRARY)

一般的和上面相似,BUILD_SHARED_LIBRARY表示編譯一個(gè)共享庫(kù)。

 

以上三者的生成結(jié)果分別在如下,generic依具體target會(huì)變:

out/target/product/generic/obj/EXECUTABLE

out/target/product/generic/obj/STATIC_LIBRARY

out/target/product/generic/obj/SHARED_LIBRARY

      每個(gè)模塊的目標(biāo)文件夾分別為:

可執(zhí)行程序:XXX_intermediates

靜態(tài)庫(kù):      XXX_static_intermediates

動(dòng)態(tài)庫(kù):      XXX_shared_intermediates

      另外,在Android.mk文件中,還可以指定最后的目標(biāo)安裝路徑,用LOCAL_MODULE_PATHLOCAL_UNSTRIPPED_PATH來(lái)指定。不同的文件系統(tǒng)路徑用以下的宏進(jìn)行選擇:

TARGET_ROOT_OUT:表示根文件系統(tǒng)。

TARGET_OUT:表示system文件系統(tǒng)。

TARGET_OUT_DATA:表示data文件系統(tǒng)。

用法如:

 LOCAL_MODULE_PATH:=$(TARGET_ROOT_OUT)

 

posted on 2011-05-26 11:47 心羽 閱讀(514) 評(píng)論(0)  編輯 收藏 引用 所屬分類: android
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产一区二区高清视频| 亚洲欧美激情一区二区| 欧美日韩高清在线一区| 蜜臀av性久久久久蜜臀aⅴ四虎| 欧美一区二区在线看| 亚洲一区二区三区四区五区黄| 亚洲无毛电影| 久久se精品一区精品二区| 亚洲自拍高清| 亚洲欧美精品在线| 亚洲精品一区二| 亚洲精品乱码久久久久久蜜桃91 | 欧美激情一区二区三级高清视频 | 免费日韩av| 欧美精品18+| 国产精一区二区三区| 在线国产日韩| 欧美人与禽猛交乱配| 欧美性色aⅴ视频一区日韩精品| 欧美天天视频| 国产亚洲精品自拍| 亚洲国产99| 亚洲尤物视频在线| 亚洲缚视频在线观看| 亚洲日本电影| 久久国产精品久久精品国产| 欧美大片一区| 亚洲图片欧洲图片av| 久久精品国产亚洲aⅴ| 欧美区一区二| 黄色国产精品| 亚洲一区二区在线看| 亚洲第一精品电影| 亚洲婷婷综合久久一本伊一区| 久久久久久久久久久久久9999 | 在线亚洲精品| 国产一区二区精品在线观看| 亚洲精品国产系列| 欧美与欧洲交xxxx免费观看| 亚洲国产精品一区二区www| 亚洲欧美综合精品久久成人 | 欧美日韩精品免费观看| 伊人男人综合视频网| 亚洲欧美偷拍卡通变态| 亚洲日本无吗高清不卡| 蜜臀久久久99精品久久久久久| 国产日产欧美a一级在线| 亚洲图中文字幕| 亚洲精品一区二区三区99| 欧美成人蜜桃| 亚洲一区二区网站| 久久噜噜亚洲综合| 国产日韩欧美在线视频观看| 正在播放亚洲| 亚洲日本成人| 欧美激情二区三区| 亚洲欧洲午夜| 欧美 日韩 国产精品免费观看| 亚洲性av在线| 欧美四级剧情无删版影片| 在线视频精品| 亚洲精品自在久久| 欧美大学生性色视频| 在线免费日韩片| 久久夜色精品国产亚洲aⅴ | 欧美肥婆bbw| 久久高清国产| 禁断一区二区三区在线| 欧美一区网站| 亚洲女人天堂av| 国产精品综合| 久久精品一区二区三区中文字幕| 午夜视频在线观看一区| 国产综合香蕉五月婷在线| 久久视频这里只有精品| 久久综合九色综合欧美就去吻| 国产日韩精品电影| 久久免费偷拍视频| 久久久久国产一区二区三区四区| 在线看欧美日韩| 欧美成人国产一区二区| 欧美激情va永久在线播放| 毛片av中文字幕一区二区| 亚洲高清中文字幕| 亚洲日本中文字幕免费在线不卡| 欧美午夜精品电影| 午夜亚洲伦理| 麻豆国产精品777777在线| 欧美国产综合视频| 亚洲小说春色综合另类电影| 一区二区三区成人| 国产欧美日韩一区二区三区在线观看| 久久久精品国产免大香伊| 欧美激情中文字幕在线| 欧美在线影院| 欧美国产日韩亚洲一区| 欧美在线在线| 欧美日韩色一区| 久久精品免费看| 欧美日韩一区在线| 亚洲电影中文字幕| 国产精品视频久久久| 亚洲第一福利社区| 国产人妖伪娘一区91| 亚洲精品国精品久久99热| 国产日韩在线看| 日韩视频免费在线| 亚洲三级电影全部在线观看高清| 亚洲视频在线二区| 亚洲卡通欧美制服中文| 久久国产视频网| 亚洲一区二区三区在线看| 久久一区二区三区超碰国产精品| 午夜精品福利在线| 欧美午夜一区二区| 樱桃视频在线观看一区| 亚洲影音先锋| 久久久噜噜噜久久中文字幕色伊伊 | 午夜日韩在线| 亚洲日本va午夜在线电影| 亚洲天堂免费在线观看视频| 在线看一区二区| 羞羞色国产精品| 99精品欧美一区二区三区综合在线| 亚洲小说春色综合另类电影| 亚洲美女啪啪| 久久精品成人| 久久久久91| 国产精品美女在线| 亚洲欧美日韩国产综合| 欧美一区二区三区在线观看| 国产精品区一区二区三区| 亚洲淫性视频| 欧美一区二区三区久久精品| 国产精品夜夜夜| 尤物yw午夜国产精品视频| 欧美mv日韩mv国产网站app| 韩国av一区二区三区在线观看 | 免费在线观看精品| 国产伊人精品| 欧美一区二区黄色| 久久精品一区二区国产| 国产一区二区三区四区老人| 欧美伊人精品成人久久综合97| 欧美一区永久视频免费观看| 国产日韩欧美精品在线| 欧美mv日韩mv国产网站app| 一区二区三区在线看| 老牛国产精品一区的观看方式| 欧美jjzz| 亚洲一区精品视频| 国产视频一区三区| 久久综合中文色婷婷| 亚洲另类自拍| 亚洲一区二区三区免费视频| 欧美三级欧美一级| 欧美成人精品在线视频| 伊人久久亚洲影院| 牛人盗摄一区二区三区视频| 99视频精品全国免费| 欧美在线一二三区| 亚洲电影在线看| 欧美色图天堂网| 欧美亚洲在线| 亚洲欧洲在线看| 久久精品主播| 一本色道久久综合狠狠躁篇的优点 | 欧美色精品天天在线观看视频| 中文在线一区| 男人插女人欧美| 999亚洲国产精| 国产一区二区日韩精品| 欧美黑人在线播放| 午夜在线视频观看日韩17c| 欧美高清自拍一区| 欧美一区激情视频在线观看| 亚洲欧美另类国产| 永久域名在线精品| 欧美视频二区36p| 久久久久久欧美| 亚洲激情午夜| 久久精品一区四区| 亚洲综合三区| 亚洲乱码一区二区| 激情综合网址| 欧美亚洲不卡| 欧美大成色www永久网站婷| 午夜精品电影| 亚洲视频一起| 亚洲欧洲一区二区三区久久| 久久久久国产一区二区三区| 99国产精品| 在线精品福利| 伊人色综合久久天天| 国产亚洲免费的视频看| 欧美四级电影网站| 欧美日韩一区二区三区在线 | 久久久综合香蕉尹人综合网| 亚洲在线一区| 亚洲专区一区二区三区|