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

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

深入理解Android熱修復技術原理之so庫熱修復技術

瀏覽:2日期:2022-09-17 16:28:02
目錄一、SO庫加載原理二、SO庫熱部署實時生效可行性分析2.1、動態注冊 native 方法實時生效2.2、靜態注冊 native 方法實時生效2.3、SO實時生效方案總結三、SO庫冷部署重啟生效實現方案3.1、接口調用替換方案3.2、反射注入方案四、如何正確復制補丁 SO庫五、本章小結一、SO庫加載原理

Java Api 提供以下兩個接口加載一個 so 庫

System. loadLibrary (String libName):傳進去的參數:so庫名稱, 表示的so 庫文件,位于apk壓縮文件中的 libs 目錄,最后復制到 apk安裝目錄下。 System, load (String pathName):傳進去的參數: so庫在磁盤中的完整 路徑。加載一個自定義外部 so庫文件。

上述兩種方式加載一個 so 庫,實際上最后都調用 nativeLoad 這個 native方法去加載 so庫,這個方法的 fileName:so 庫在磁盤中的完整路徑名。

代碼+圖文的方式簡述 so 庫加載原理,下面的代碼示例,stringFromJNI -> Java_com_taobao_jni_MainActivity_stringFromJNI 靜態注冊的 native 方 法,test->test 動態注冊的 native 方法。

深入理解Android熱修復技術原理之so庫熱修復技術

深入理解Android熱修復技術原理之so庫熱修復技術

我們知道 JNI 編程中,動態注冊的 native 方法必須實現 JNI_OnLoad方法,同時實現一個JNINativeMethod [] 數組,靜態注冊的 native 方法必須是Java+類完整路徑+方法名的格式。

深入理解Android熱修復技術原理之so庫熱修復技術

總結下:

動態注冊的 native 方法映射通過加載 so 庫過程中調用 JNI_onLoad 方法調用完成。 靜態注冊的 native 方法映射是在該native方法第一次執行的時候才完成映射,當然前提是該 so 庫已經 load 過。二、SO庫熱部署實時生效可行性分析2.1、動態注冊 native 方法實時生效

前面我們分析過 so 庫的加載原理,我們知道動態注冊的 native方法調用一次 JNI_OnLoad 方法都會重新完成一次映射,所以我們是否只要先加載原來的 so庫, 然后再加載補丁 so 庫,就能完成Java層 native 方法到 native 層 patch后的新方法映射,這樣就完成動態注冊native 方法的 patch 實時修復。一張圖說明

深入理解Android熱修復技術原理之so庫熱修復技術

實測發現 art 下這樣是可以做到實時生效的,但是 Dalvik下做不到實時生效,通 過代碼測試我們發現,實際上Dalvik 下第二次 load補丁 so庫,執行的仍然是原來so 庫的 JNI_0nLoad方法,而不是補丁so 庫的 JNI_OnLoad 方法,所以 Dalvik 下做不到實時生效。我們來簡單分析下,既然拿到的是原來 so 庫的 JNI_OnLoad方法,那么我們首先懷疑以下兩個函數是否有問題。

dlopen() :返回給我們一個動態鏈接庫的句柄 disym() :通過一個 dlopen 得到的動態連接庫句柄,來查找一個 symbol

首先來看下 Dalvik 虛擬機下面 dlopen 的實現,源碼在 /bionic/linker/dlfcn.cpp 文件,方法調用鏈路:dlopen -> do_d.lopen -> find_library -> find_library_internal

深入理解Android熱修復技術原理之so庫熱修復技術

findloadedlibrary 方法判斷 name 表示的 so庫是否已經被加載過,如果加載過直接返回之前加載 so庫的句柄,沒有加載過,調用 load_library嘗試加載 so庫

深入理解Android熱修復技術原理之so庫熱修復技術

深入理解Android熱修復技術原理之so庫熱修復技術

看代碼注釋,也知道其實這是Dalvik虛擬機下的一個 bug,這里它是通過 basename 去做查找,傳進來的參數 name 實際上是 so庫所在磁盤的完整路徑,比如此時修復后的so庫的路徑為 /data/data/com. taobao. jni/files/libnative-lib.so。但是此時是通過 bname : libnative-lib.so 作為 key 去查找, 我們知道第一次加載原來的 so庫 System.loadLibrary ( 'native-lib');實際上已經在solist表中存在了 native-lib 這個 key,所以 Dalvik下面加載修復后的補丁so拿到的還是原so庫文件的句柄,所以執行的仍然是原來 so庫的JNI_ OnLoad方法,Art下不存在這個問題,是因為Art下這個地方是以name作為key 去查找而不是bname,所以art 重新load —遍補丁 so庫:拿到的是補丁 so庫的句柄,然后執行補丁庫的JNI OnLoad。

所以為了解決 Dalvik 下面的這個問題,那么如果嘗試對補丁 so進行改名,比如 此處補丁so 庫的完整路徑修改之后變成 /data/data/com.taobao.jni/files/ libnative-lib-123333.so,后面一串數字是當前時間戳,確保這個 bname是全局唯一的,按照上面的分析,在solist 中查找的 key已經是唯一的,所以此時可以做到Dalvik 下面動態注冊的 native 方法的實時生效。

2.2、靜態注冊 native 方法實時生效

上面通過嘗試對補丁 so庫進行重命名為全局唯一的名稱可以確保第二次加載補丁so 庫可以做到 Dalvik 下和 Art下動態注冊方法的實時生效,但要做到靜態注冊 native 方法的實時生效還需要更多工作。

前面我們說過靜態注冊 native 方法的映射是在 native方法第一次執行的時候就完成了映射,所以如果native方法在加載補丁 so 庫之前已經執行過了,那么是否這種時候這個靜態注冊的 native 方法一定得不到修復?幸運的是,系統 JNI API提供 了解注冊的接口。

深入理解Android熱修復技術原理之so庫熱修復技術

UnregisterNatives 函數會把 jclazz 所在類的所有 native 方法都重新指向為 dvmResolveNativeMethod,所以調用 UnregisterNatives 之后不管是靜態注冊還是動態注冊的native方法之前是否執行過在加載補丁 so的時候都會重新去做映射。所以我們只需要以下調用。

深入理解Android熱修復技術原理之so庫熱修復技術

這里有一個難點,因為 native 方法的修改是在 so庫中,所以我們的補丁工具很難檢測出到底是哪個Java 類需要解注冊 native 方法。這個問題暫且放下。假設我們能知道哪個類需要解注冊native方法,然后 load補丁 so庫之后,再次執行該 native 方法,這樣看起來是可以讓該 native方法實時生效,但是測試發現,在補丁 so 庫重命名的前提下,java 層 native 方法可能映射到原so庫的方法,也可能映射到補丁 so 庫的修復后的新方法。

首先靜態注冊的 native方法之前從未執行,首先嘗試解析該方法。或者調用了 unregisterJNINativeMethods 解注冊方法,那么該方法將指向 meth->nativeFunc = dvmResolveNativeMethod,那么真正運行該方法的時候,實際上執行的是dvmResolveNativeMethod 函數。這個函數主要完成 java 層 native方法和native 層方法的映射邏輯。

深入理解Android熱修復技術原理之so庫熱修復技術

深入理解Android熱修復技術原理之so庫熱修復技術

gDvm.nativeLibs 是一個全局變量,它是一個hashtable,存放著整個虛擬機加載 so庫的 SharedLib 結構指針。然后該變量作為參數傳遞給 dvmHashForeach 函數進行 hashtable 遍歷。執行 findMethodInLib 函數看是否找到對應的 native函 數指針,如果第一個找到就直接return,不在進行下次的查找。

這個結構很重要,在虛擬機中大量使用到了 hashtable 這個數據結構,hashtable 的實現源碼在 dalvik/vm/Hash.h 和 dalvik/vm/Hash.cpp 文件中,有興趣可以自行查看源碼,這里不進行詳細分析。hashtable的遍歷和插入都是在 dvmHashTableLookup 方法中實現,簡單說下 java.hashtable 和 c.hashtable 的異同點:

共同點:兩者實際上都是數組實現,hashtable容量如果超過默認值都會進行擴容,都是對key進行hash計算然后跟hashtable的長度進行取模作為 bucket。 不同點:Dalvik 虛擬機下 hashtable put/get操作實現方法,實際上實現要 比java hashmap 的實現要簡單一些,java hashmap 的 put實現需要處理 hash沖突的情況,一般情況下會通過在沖突節點上新增一個鏈表處理沖突, 然后get實現會遍歷這個鏈表通過equals方法比較value是否一致進行查找,davlik 下 hashtable 的 put 實現上 (doAdd=true) 只是簡單的把指針 下移直到下一個空節點。get 實現 (doAdd=false) 首先根據 hash值計算出 bucket 位置,然后通過 cmpFunc函數比較值是否一致,不一致,指針下移。 hashtable 的遍歷實際就是數組遍歷實現

知道了 davlik 下 hashtable的實現原理,那我們再來看下前面提到的:補丁 so庫重命名的前提下,為什么 java 層 native 方法可能映射到原 so 庫的方法也可能映射到補丁 so庫的修復后的新方法。一張圖說明情況

深入理解Android熱修復技術原理之so庫熱修復技術

所以我們可以得到結論:

對補丁 so庫進行重命名后,如果這個補丁 so庫在hashtable中的位置比原 so庫的位置靠前,那么這個靜態注冊native方法就能夠得到修復,位置如果靠后就得不到修復。

2.3、SO實時生效方案總結

基于上面的分析,so庫的實時生效必須滿足以下幾點:

so庫為了兼容Dalvik虛擬機下動態注冊native方法的實時生效,必須對so 文件進行改名。 針對so庫靜態注冊native方法的實時生效,首先需要解注冊靜態注冊的 native方法,這個也是難點,因為我們很難知道so庫中哪幾個靜態注冊的 native方法發生了變更。假設就算我們知道如果靜態注冊的native方法需要解注冊,重新load補丁 so庫也有可能被修復也有可能不被修復。 上面對補丁 so進行了第二次加載,那么肯定是多消耗了一次本地內存,如果 補丁 so庫夠大,補丁 so夠多,那么JNI層的OOM也不是沒可能 另外一方面補丁 so如果新增了一個動態注冊的方法而dex中沒有相應方法, 直接去加載這個補丁 so文件會報NoSuchMethodError異常,具體邏輯在 dvmRegisterJNIMethod中。我們知道如果dex如果新增了—native 方法,那么走不了熱部署只能冷啟動重啟生效,所以此時補丁so就不能第二 次load 了。這種情況下so庫的修復嚴重依賴于dex的修復方案。

可以看到 so庫實時生效方案,對于靜態注冊的native方法有一定的局限性, 不能滿足一般的通用性,所以最后我們放棄了 so庫的實時生效需求,轉而求次實現 so庫修復的冷部署重啟生效方案。

三、SO庫冷部署重啟生效實現方案

為了更好的兼容通用性,我們嘗試通過冷部署重啟生效的角度分析下補丁 so庫的修復方案。

3.1、接口調用替換方案

sdk提供接口替換System默認加載so庫接口

SOPatchManager.loadLibrary(String libName) -> System.loadLibrary(String libName)

SOPatchManager.loadLibrary接口加載 so庫的時候優先嘗試去加載sdk 指定目錄下的補丁so,加載策略如下:

如果存在則加載補丁 so庫而不會去加載安裝apk安裝目錄下的so庫

如果不存在補丁so,那么調用System.loadLibrary去加載安裝apk目錄下的 so庫。

深入理解Android熱修復技術原理之so庫熱修復技術

我們可以很清楚的看到這個方案的優缺點:

優點:不需要對不同 sdk 版本進行兼容,因為所有的 sdk 版本都有 System.loadLibrary 這個接口。 缺點:調用方需要替換掉 System 默認加載 so 庫接口為 sdk提供的接口, 如果是已經編譯混淆好的三方庫的so 庫需要 patch,那么是很難做到接口的替換。

雖然這種方案實現簡單,同時不需要對不同 sdk版本區分處理,但是有一定的局限性沒法修復三方包的so庫同時需要強制侵入接入方接口調用,接著我們來看下反射注入方案。

3.2、反射注入方案

前面介紹過 System. loadLibrary ( 'native-lib'); 加載 so庫的原理,其實native-lib 這個 so 庫最終傳給 native 方法執行的參數是 so庫在磁盤中的完整路徑,比如:/data/app-lib/com.taobao.jni-2/libnative-lib.so, so庫會在 DexPathList.nativeLibraryDirectories/nativeLibraryPathElements 變量所表示的目錄下去遍歷搜索。

sdk<23 DexPathList.findLibrary 實現如下

深入理解Android熱修復技術原理之so庫熱修復技術

可以發現會遍歷 nativeLibraryDirectories數組,如果找到了 loUtils.canOpenReadOnly (path)返回為 true, 那么就直接返回該 path, loUtils.canOpenReadOnly (path)返回為 true 的前提肯定是需要 path 表示的 so文件存 在的。那么我們可以采取類似類修復反射注入方式,只要把我們的補丁so庫的路徑插入到nativeLibraryDirectories數組的最前面就能夠達到加載so庫的時候是補丁 庫而不是原來so庫的目錄,從而達到修復的目的。

sdk>=23 DexPathList.findLibrary 實現如下

深入理解Android熱修復技術原理之so庫熱修復技術

sdk23 以上 findLibrary 實現已經發生了變化,如上所示,那么我們只需要把補丁so庫的完整路徑作為參數構建一個Element對象,然后再插入到nativeLibraryPathElements 數組的最前面就好了。

深入理解Android熱修復技術原理之so庫熱修復技術

優點:可以修復三方庫的so庫。同時接入方不需要像方案1 —樣強制侵入用 戶接口調用 缺點:需要不斷的對 sdk 進行適配,如上 sdk23 為分界線,findLibrary接口實現已經發生了變化。

我們知道在不管是在補丁包中還是 apk 中一個 so 庫都存在多種 cpu 架構的 so 文件,比如'armeabi','arm64-v8a','x86'等。加載肯定是加載其中一個 so庫文件的,如何選擇機型對應的 so 庫文件將是重點所在。

四、如何正確復制補丁 SO庫

上面提到的一個問題,這里不打算詳細介紹。有需要的參考文檔:Android動態 鏈接庫加載原理及HotFix方案介紹,這篇文檔有些觀點不盡正確,但是我也能知道虛擬機究竟選擇哪個abis目錄作為參數構建PathClassLoader對象,一張圖簡單了解下原理:

深入理解Android熱修復技術原理之so庫熱修復技術

實際上補丁 so也存在類似的問題,我們的補丁 so庫文件放到補丁包的libs目錄下面,libs目錄和.dex文件和res資源文件一起打包成一個壓縮文件作為最后的補丁包,libs目錄可能也包含多種abis目錄。所以我們需要選擇手機最合適的 primaryCpuAbi,然后從libs目錄下面選擇這個primaryCpuAbi子目錄插入到 nativeLibraryDirectories/nativeLibraryPathElements 數組中。所以怎么選擇primaryCpuAbi是關鍵,來看下我們sdk具體的實現

深入理解Android熱修復技術原理之so庫熱修復技術

深入理解Android熱修復技術原理之so庫熱修復技術

sdk>=21 時,直接反射拿到 Applicationinfo 對象的 primaryCpuAbi 即可 sdk<21 時,由于此時不支持 64 位,所以直接把Build.CPU_ABI, Build.CPU_ABI2 作為 primaryCpuAbi 即可五、本章小結

對于 so庫的修復方案目前更多采取的是接口調用替換方式,需要強制侵入用戶 接口調用。目前我們的so文件修復方案采取的是反射注入的方案,重啟生效。具有更好的普遍性。如果有so文件修復實時生效的需求,也是可以做到的,只是有些限制情況。

以上就是深入理解Android熱修復技術原理之so庫熱修復技術的詳細內容,更多關于Android so庫熱修復的資料請關注好吧啦網其它相關文章!

標簽: Android
相關文章:
主站蜘蛛池模板: 波多野结衣一区二区三区中文字幕 | 亚洲免费在线播放 | 黄色片免费在线观看 | 国产精品视频一二三区 | 国产成人精品午夜视频' | 亚洲精品久久久久久久久久久 | 国产区在线观看 | 自拍偷拍视频网站 | 草久在线观看 | 精品96久久久久久中文字幕无 | 国产一区日韩在线 | 欧美在线一区二区三区 | 国产一区二区h | 精品一级 | 精品久久精品 | 成人天堂资源www在线 | 91婷婷射 | 日韩精品在线播放 | 精品国产乱码久久久久久闺蜜 | 麻豆毛片| 欧美国产精品一区二区 | 欧美日韩成人在线 | 亚洲一区二区三区在线 | 国产精品视频免费观看 | 天天色天天射天天操 | 成年人精品视频 | 色先锋av资源中文字幕 | 蜜桃一区二区 | 亚洲精品欧美 | 国产精品久久久久久久久久免费看 | 欧美hdfree性xxxx | 国产精品1区2区 | 精品国产一区二区国模嫣然 | 日韩在线不卡 | 97爱爱爱| 日韩综合网 | 国产免费自拍 | 国产精品久久久久久久午夜 | 男女视频免费在线观看 | 欧美日韩亚洲成人 | 国产美女久久久 | 三级黄色片在线观看 | 日韩免费| 国产精品久久久久久久浪潮网站 | 999久久久国产999久久久 | 性视频一区 | 久久a国产 | 欧美日韩大片在线观看 | 老牛嫩草一区二区三区眼镜 | 欧美在线视频一区二区 | www.com欧美| 久久男人的天堂 | 欧美在线一区二区 | 97超碰自拍 | 蜜桃av在线播放 | 日日摸夜夜添夜夜添高潮视频 | 亚洲嫩草| 日本狠狠干 | 日韩视频精品在线 | 亚洲国产视频一区 | 一区二区三区不卡视频 | 久久久久久久一区二区三区 | 成人毛片视频网站 | 日韩在线 | 精品国精品国产自在久不卡 | 免费视频爱爱太爽了 | 97理论片 | 亚洲视频中文 | 亚洲高清在线观看 | 国产精品一区二区三区免费 | 欧美一区二区三区在线观看视频 | 国产小视频在线观看 | 91在线视频福利 | 国产精品夜夜春夜夜爽久久电影 | 国产成人久久精品一区二区三区 | 在线观看91精品国产入口 | av日韩一区 | 国产伦精品一区二区三区高清 | 日韩欧美国产一区二区三区 | 99久久99热这里只有精品 | 九一视频在线观看 | 永久免费av | 久久aⅴ国产欧美74aaa | 在线视频 中文字幕 | 伊人青青操 | 久久青草国产 | 91精品国产一区二区三区蜜臀 | www.avtt天堂网 | 一级片日韩 | 99国产精品99久久久久久 | 91成人小视频 | 91中文字幕 | 国产精品99久久免费观看 | 亚洲一区二区久久 | 亚洲国产高清在线 | 亚洲国产精品一区二区久久 | 色综合区 | 玖玖玖精品视频 | 九九久久影视 | 伊人网国产 | 亚洲欧美成人影院 | 2019天天操| 久久美女视频 | 1204国产成人精品视频 | 91视频网| 午夜性电影 | 91免费版在线看 | 美女视频一区二区三区 | 草比网站| 先锋久久| 国产伦精品一区二区三区四区视频 | 欧美一区二区三区四区视频 | 丁香五月亚洲综合在线 | 成人精品高清 | 中文字幕在线观看一区二区三区 | 在线看一区二区 | 日韩在线国产精品 | 国产精品欧美日韩在线观看 | 欧美日韩免费一区二区三区 | 国产一区二区av | 久久草视频 | 99久久久99久久国产片鸭王 | 国产精品成人国产乱一区 | 免费精品 | 91色在线观看 | 亚洲少妇视频 | 精品欧美一区二区三区久久久小说 | 在线观看国产日韩欧美 | 精品九九九 | 美国特级a毛片免费网站 | 中文字幕亚洲一区二区va在线 | 久久久久久久一区二区 | 欧美日韩亚洲国产 | 性视频网| 日本一区二区不卡 | 黄视频网站免费看 | 91精品国产综合久久久蜜臀图片 | 91综合网 | 国产成人在线一区二区 | 羞羞视频在线网站观看 | 特一级毛片 | 蜜桃av一区二区三区 | 在线欧美a | 欧美日韩国产影院 | 久久久久久久一区二区三区 | 少妇无套高潮一二三区 | 成人久久18 | 人人艹人人爽 | 国内精品在线视频 | 在线 亚洲 欧美 | 久久成人综合网 | 久久一二三四 | 日韩一级片 | 久久久久久免费 | 久久99精品久久久久久琪琪 | 国产精品99久久免费观看 | 亚洲激情视频在线播放 | 高清久久| 亚洲精品一区二区三区99 | 精品国产一区在线 | 精品日韩欧美一区二区在线播放 | 精品国模一区二区三区欧美 | 久久中文字幕一区 | 国产裸体bbb视频 | 久久不卡日韩美女 | 亚洲视频免费在线 | 日韩啊啊啊| 国产精品久久久久毛片软件 | 日韩在线视屏 | 国产精品国产精品国产专区不片 | 国产福利91精品一区二区 | 色吊丝2288sds中文字幕 | 高清成人 | 亚洲永久精品www | 超碰高清 | 国产区91| 国产大学生援交视频在线观看 | 欧美日韩视频在线第一区 | 亚洲精品中文字幕在线观看 | 欧美a区 | 日韩一本 | 精品国产欧美一区二区三区成人 | 国产高清视频在线 | av片免费| 亚洲天堂中文字幕 | 中文字幕亚洲在线 | 午夜精品视频在线观看 | 成人亚洲网站 | 亚州视频在线 | 麻豆色呦呦| 日本videos18高清hd下 | 国产成人毛片 | 日韩成人av在线 | 视频一区二区三区在线观看 | 日韩一区高清视频 | 美女高潮久久久 | 国产精品亚洲区 | 欧美精品福利 | 久久91精品| 国产日韩视频在线观看 | 在线观看视频一区二区 | 国产精品亚洲精品 | 久久国产精品视频一区 | 欧美精品在线一区 | 在线观看v片 | 国产九九九 | 毛片免费网站 | 国产精品久久久久久久免费大片 | 欧美 日韩 亚洲 一区 | 日韩免费视频一区二区 | 国产中文字幕一区 | 91在线资源 | 亚洲国产精品一区二区www | 亚州成人| 午夜激情视频在线观看 | 欧美激情在线播放 | 毛片链接 | 日韩精品| 国产一区二区在线播放 | 九色 在线 | 欧美成年视频 | 欧美日韩一区精品 | 久久久久久久中文 | 欧美高清成人 | 成人在线免费网站 | 日韩av电影在线免费观看 | 欧美精品区 | 四季久久免费一区二区三区四区 | 无码日韩精品一区二区免费 | 9999久久久久 | 精品国产一区二区三区性色av | 99精品一区二区三区 | 久久不射网 | 精品1区| 久久久精彩视频 | 欧美视频第一页 | 欧美精品亚洲精品日韩精品 | 婷婷在线视频 | 日本在线一区 | 成人在线播放 | 欧美成人h版在线观看 | 91久久国产综合久久蜜月精品 | 毛片综合| 亚洲国产精品久久久 | 狠狠操狠狠操 | 中国电影黄色一级片免费观看 | 久久综合色视频 | 亚洲精品一二三 | 精品久久久精品 | 日韩一二三区视频 | 美女国产网站 | 国产精品二区一区二区aⅴ污介绍 | 精品久久香蕉国产线看观看亚洲 | 91欧美在线 | 欧美日韩国产在线播放 | 亚洲三区在线观看 | 999精品视频 | 噜噜噜视频在线观看 | 国产欧美综合在线 | 久久这里有精品视频 | 91在线中文字幕 | 久久一 | 日本一区不卡 | 中文字幕1区 | 国产欧美日韩综合精品一区二区 | 最新午夜 | 97色免费视频 | 亚洲 自拍 另类 欧美 丝袜 | 电家庭影院午夜 | 欧美精品区 | 91超碰在线观看 | www.99精品| 国产美女久久久 | 欧美精品 在线观看 | 亚洲精品7777xxxx青睐 | 国产精品看片 | 在线观看国产www | 蜜臀一区 | 日韩在线中文 | 精品久久久久久国产 | 亚洲一区二区三区在线视频 | 久久久久久免费免费 | 国产精品一区二区在线 | 欧美激情网 | 黄色一级大片视频 | 久久线视频 | 一级亚洲 | 久久久久中文字幕 | 精品国产乱码一区二区三区 | 日韩专区一区二区三区 | 看片国产 | 免费观看一区二区三区毛片 | 免费观看av电影 | 亚洲视频一区 | 精品亚洲一区二区 | 国产免费一区二区三区 | 久久这里只有精品23 | 日韩视频在线观看一区 | 毛片一区二区三区 | 黄色片网站在线看 | 蕉伊人 | 欧美成人免费在线视频 | 国产精品久久久久久久福利院 | 日韩视频一区二区三区四区 | 国产精品2区 | 性色浪潮 | 亚洲第一福利视频 | 九色自拍 | 欧美一级h | 老司机狠狠爱 | 理论片87福利理论电影 | 欧美成人精品在线观看 | 中文字幕av第一页 | 国产高清小视频 | 欧美日韩视频在线第一区 | 九九热精品视频在线观看 | 久久久久久久久99精品 | 日韩三区| 一区毛片| 成人精品福利视频 | 亚洲精品乱码久久久久膏 | 成人日韩在线观看 | 国产精品毛片在线 | 99精品久久 | 成人福利视频 | 污色视频在线观看 | 国产一区二区三区在线 | 波多野结衣一二三 | 日韩精品在线一区 | 亚洲精品女优 | 免费视频一区 | 久久99操| 91精品国产综合久久精品 | 狠狠操综合网 | av手机在线播放 | 久草成人| 亚洲福利影院 | 日韩在线1 | 国产精品美女久久久久久免费 | 激情久久久久 | 亚洲欧美激情视频 | 欧美日韩在线精品 | 中文字幕在线资源 | 91玖玖 | 成人乱人乱一区二区三区 | 在线成人亚洲 | 久久草在线视频 | 色黄视频在线观看 | 亚洲一区日韩 | 久久99精品国产99久久6男男 | 国产精品无码久久久久 | 久久久精品久久久久 | 国产在线一区二区 | 精品国产一区二区三区久久久蜜月 | a级黄色毛片免费观看 | 亚洲一区在线日韩在线深爱 | 欧美精品一区二区三区在线四季 | 国产精品二区三区 | av在线免费观看网站 | www.国产精品 | 精品久久中文字幕 | 亚洲免费观看视频 | 国产在线精品一区 | 久久精品视频网 | 国产99精品视频 | 国产精精品 | 久久精品一 | 亚洲日本二区 | 国产在线精品一区二区 | 欧美精品国产精品 | 亚洲一区高清 | 亚洲一区在线日韩在线深爱 | 亚洲一区二区三区四区五区中文 | 密色视频| 欧美极品一区二区三区 | 天天天操 | va在线| 欧美大成色www永久网站婷 | 国产一级影片 | 国产一区二区三区在线免费 | 欧美日韩一区二区在线 | 久久亚洲综合 | 成人深夜小视频 | 国产在线观看一区 | 成人深夜福利在线观看 | 国产精品一区二区三区免费 | 日韩色av| 精精国产 | 久久精品影视 | a中文在线 | 欧洲亚洲精品久久久久 | 精品香蕉一区二区三区 | 欧美成人黑人xx视频免费观看 | 免费毛片视频 | 日本一区二区三区免费观看 | 97超碰在线免费 | 欧美色视频在线观看 | 国产在视频一区二区三区吞精 | 亚洲精品专区 | 一区二区国产精品 | 99久久久无码国产精品 | 日日操夜夜操天天操 | 精品一区二区久久久久久久网站 | 国产亚洲视频在线 | 免费观看成人毛片 | 91精品一区二区三区久久久久久 | 日韩超级大片免费看国产国产播放器 | 99成人 | 亚洲视频综合 | 国产欧美一区二区精品忘忧草 | 成人a级片在线观看 | 亚洲国产精品一区二区三区 | 成人性大片免费观看网站 | 在线视频不卡一区 | 国产免费一区二区三区 | 亚洲精品一区在线观看 | 久在线观看 | 性色在线 | 亚洲一区二区三区在线免费观看 | 国产成人精品a视频一区www | 日韩视频在线观看 | 精品一区二区三区免费毛片爱 | 国产精品久久久久久久 | 成年人黄色一级片 | 激情的网站 | 精品久久一区二区三区 | 色网在线 | 精品久久精品久久 | 亚洲精品国精品久久99热 | 久久国产亚洲 | 国产成人精品无人区一区 | 中文字幕精品一区 | 青娱乐国产精品视频 | 亚洲日本欧美日韩高观看 | 奇米成人影视 | 一区二区在线 | av大片在线观看 | 久久午夜电影院 | 国产激情在线观看视频 | 日本午夜精品 | 国产一级特黄aaa大片评分 | 欧美激情精品久久久久久变态 | 国产高清美女一级a毛片久久 | 中文字幕亚洲一区二区三区 | 97高清国语自产拍 | 欧美精品一区二区三区一线天视频 | av大片 | 中文字字幕一区二区三区四区五区 | 草草精品视频 | 免费一区 | 毛片综合| 一区二区三区久久 | 在线播放国产视频 | 日本一区二区三区免费观看 | 蜜桃在线视频 | av网站免费观看 | 国产99久久精品 | 91久久艹 | 亚洲免费观看视频 | 日韩美香港a一级毛片免费 国产综合av | 国产精品久久一区二区三区 | 久久免费视频国产 | 久久久久久久久久久久国产精品 | 每日更新av | 欧美大片免费高清观看 | 午夜激情视频免费 | 亚洲精品免费看 | 簧片毛片 | 亚洲欧美中文日韩v在线观看 | √新版天堂资源在线资源 | 亚洲高清一区二区三区 | 成人精品视频在线观看 | 亚洲欧美日韩另类精品一区二区三区 | 国产亚洲精品成人av久久影院 | 国产一区二区三区在线免费 | 成av在线 | 亚洲精品午夜国产va久久成人 | 黄a在线| 日韩91 | 色资源| 在线第一页 | 精品久久av | 精品国产精品国产偷麻豆 | 久久久久久久久综合 | 久久久久久这里只有精品 | 亚洲欧美在线一区二区 | 亚洲黄色片免费 | 成人国产精品一级毛片视频 | 亚洲日韩中文字幕一区 | 91黄色免费看 | 精品一区二区三区在线观看 | 日韩中文字幕av | 1000部精品久久久久久久久 | 亚洲97| 91社区在线高清 | 中文字幕久久久 | 日韩欧美在线播放 | 男女精品视频 | 日本一区二区视频 | 亚洲一区av | 久久久久久国产一级毛片高清版 | 日韩高清国产一区在线 | 国产色网 | 久久综合九色综合欧美狠狠 | 欧美日韩国产精品一区二区 | 久久成人免费视频 | 欧美一区二区三区精品免费 | 国产真实精品久久二三区 | 日韩成人在线看 | 毛片黄片 | 91精品国产欧美一区二区 | 精品亚洲国产成av人片传媒 | 国产精品久久久久久婷婷天堂 | 国产一区二区三区四区 | 亚洲免费人成在线视频观看 | av片在线观看 | 亚洲国产成人av | 激情毛片 | 国产精品一区二区三区免费视频 | 久久久精品网 | 国产精品毛片 | 日本一级在线观看 | 亚洲视频免费观看 | 色黄视频在线看 | 国产精品美女久久久 | av一区二区在线播放 | 欧美日韩专区 | 久久精品久久综合 | 国产成人av在线播放 | 精品久久精品久久 | 精品亚洲永久免费精品 | 久久久久久久一区 | 亚洲视频在线观看网站 | 久久精品国产精品青草 | 成人欧美一区二区三区 | 国产精品久久久久久久久久久久久 | 国产一区视频网站 | 亚洲欧洲精品视频 | 黄视频网站免费看 | 亚洲精品aaa| 夜夜天天操 | 欧美日韩一区二区三区在线观看 | 亚洲不卡视频 | 日韩和的一区二在线 | 日韩欧美一区二区三区 | 在线观看亚洲大片短视频 | 日本三级欧美三级 | 国产在线看片 | 午夜电影网 | 久久久久久毛片免费观看 | a级三四级黄大片 | 一区二区福利 | 另类二区 | 中文字幕国产视频 | 九九亚洲精品 | 成人网av| 亚洲国产高清在线 | 91成人免费在线观看 | 99精品国产一区二区三区 | 日韩91| 亚洲国产日韩欧美 | 中文字幕av一区二区三区 | 欧美成人精品 | 国产综合精品 | 在线观看免费视频a | 欧美极品视频 | 亚洲av毛片一区二二区三三区 | 免费在线观看一区二区 | 日韩三级视频 | 91麻豆精品国产91久久久更新资源速度超快 | 欧美日本久久 | 国产高清久久 | 国产一级一级片 | 免费国产一区二区 | 欧美八区| 亚洲乱码国产乱码精品精98午夜 | 精品欧美乱码久久久久久 | 人人做人人爽 | 国产精品一区二区三区在线 | 日韩国产欧美视频 | 91精品一区二区 | 国产精品久久久久aaaa九色 | 亚洲骚片 | 嫩草网址 | 亚洲三区在线观看 | 国产不卡视频在线观看 | av网址在线播放 | 久久国产传媒 | 天天干人人 | 国产艹 | www.888www看片| 一区二区三区精品视频 | 亚洲天堂一区 | 日韩拍拍 | 成人免费视频网站在线观看 | 成人在线免费视频 | 日韩综合在线 | 国产成人精品一区一区一区 | 国产激情视频在线观看 | 国产精品中文字幕在线观看 | 日韩性视频 | 亚洲欧美中文日韩在线v日本 | a∨色狠狠一区二区三区 | 免费的av在线 | 成年人视频免费在线看 | 亚洲天堂第一页 | 天天澡天天狠天天天做 | 国产精品中文字幕在线 | 伊人网在线视频免费观看 | 日韩中文在线视频 | 男女国产视频 | 欧美一区二区三区视频 | 欧美日韩亚洲视频 | 日本99精品 | 成人免费av |