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

您的位置:首頁技術(shù)文章
文章詳情頁

解析Android ANR問題

瀏覽:106日期:2022-09-17 16:42:50
目錄一、ANR介紹1.1、ANR類型1.1.1、KeyDispatchTimeout1.1.2、BroadcastTimeout1.1.3、ServiceTimeout&nbsp1.2、ANR發(fā)生的原理二、ANR 分析示例2.1、查看 log 日志文件2.2、Trace 文件(data/anr/traces.txt)2.3、死鎖demo三、其他分析思路四、減少發(fā)生 ANR 概率一、ANR介紹

ANR 由消息處理機制保證,Android 在系統(tǒng)層實現(xiàn)了一套精密的機制來發(fā)現(xiàn) ANR,核心原理是消息調(diào)度和超時處理。ANR 機制主體實現(xiàn)在系統(tǒng)層,所有與 ANR 相關(guān)的消息,都會經(jīng)過系統(tǒng)進程system_server調(diào)度,具體是ActivityManagerService服務(wù),然后派發(fā)到應(yīng)用進程完成對消息的實際處理,同時,系統(tǒng)進程設(shè)計了不同的超時限制來跟蹤消息的處理。 一旦應(yīng)用程序處理消息不當(dāng),超時限制就起作用了,它收集一些系統(tǒng)狀態(tài),譬如 CPU/IO 使用情況、進程函數(shù)調(diào)用棧 CallStack,(有些平臺比如 MTK,還會打印相應(yīng)的 Message 出來供調(diào)試分析),最后報告用戶有進程無響應(yīng)了( ANR 對話框)。

1.1、ANR類型

ANR 一般有三種類型:

1.1.1、KeyDispatchTimeout

這個主要是按鍵或觸摸事件在特定時間內(nèi)無響應(yīng),一般 Android 平臺默認超時時間是 5s 會報 anr,不過有些平臺會修改這個時間,比如 MTK 有些平臺就是 8s 的超時時間。

這個超時時間可以在 ActivityManagerService.java 查看:

// M: ANR debug mechanism (Ori: 5*1000)static final int KEY_DISPATCHING_TIMEOUT = 8*1000;1.1.2、BroadcastTimeout

這類超時會有 ANR 提示框彈出,用戶可以選擇forceStop或者繼續(xù)等待。

這個主要是 BroadcastRecevier 在規(guī)定時間無法處理完成。前臺廣播超時時間是 10s,后臺廣播超時是 60s,這類超時沒有提示框彈出。

==> AMS.java

// How long we allow a receiver to run before giving up on it.static final int BROADCAST_FG_TIMEOUT = 10*1000;static final int BROADCAST_BG_TIMEOUT = 60*1000;1.1.3、ServiceTimeout&nbsp

Service 在規(guī)定時間內(nèi)無法處理完成操作,即會報出服務(wù)超時,這類 ANR 同樣沒有提示框出現(xiàn)。超時時間,前臺 Service 是 20s,后臺 Service 是 200s。

==> ActivityServices.java

// How long we wait for a service to finish executing.static final int SERVICE_TIMEOUT = 20*1000;// How long we wait for a service to finish executing.static final int SERVICE_BACKGROUND_TIMEOUT = SERVICE_TIMEOUT * 10;

三種 ANR 中只有第 1 種會顯示系統(tǒng)提示對話框,因為用戶正在做界面交互操作,如果長時間沒有任何響應(yīng),會讓用戶懷疑設(shè)備死機了,大多數(shù)人此時會開始亂按,甚至拔出電池重啟,給用戶的體驗肯定是非常糟糕的。

三種 ANR 發(fā)生時都會在 log 中輸出錯誤信息,你會發(fā)現(xiàn)各個應(yīng)用進程和系統(tǒng)進程的函數(shù)堆棧信息都輸出到了一個 /data/anr/traces.txt 的文件中,這個文件是分析ANR原因的關(guān)鍵文件,同時在日志中還會看到當(dāng)時的 CPU 使用率,這也是重要信息,在后面的章節(jié)會詳細介紹如何利用它們分析ANR問題。

這三種ANR不是孤立的,有可能會相互影響。例如一個應(yīng)用程序進程中同時有一個正在顯示的 Activity 和一個正在處理消息的 BroadcastReceiver,它們都運行在這個進程的主線程中。如果 BR 的 onReceive 函數(shù)沒有返回,此時用戶點擊屏幕,而 onReceive 超過 5 秒仍然沒有返回,主線程無法處理用戶輸入事件,就會引起第 1 種 ANR。如果繼續(xù)超過 10 秒沒有返回,又會引起第 2 種ANR。

1.2、ANR發(fā)生的原理

對于ANR 發(fā)生基本原理如下:

在進行相關(guān)操作調(diào)用 hander.sendMessageAtTime() 發(fā)送一個 ANR 的消息,延時時間為 ANR 發(fā)生的時間(如 activity 是當(dāng)前時間 5s 之后)。 進行相關(guān)的操作 操作結(jié)束后向 remove 掉該條 message。如果相關(guān)的操作在規(guī)定時間沒有執(zhí)行完成,該條 message 將被 handler 取出并執(zhí)行,就發(fā)生了 ANR。二、ANR 分析示例

ANR 本質(zhì)上是一個 Performance 問題,發(fā)生 ANR 的時候,如果問題可能出在 APK 自己身上,那么主要排查的方向是 apk 本身,分析看看是不是在 UI 線程做了耗時的操作?

個人認為,有一些 ANR 問題是很難分析的,比如 app 運行的時候由于當(dāng)前系統(tǒng)底層的一些影響,導(dǎo)致當(dāng)前 message 處理失敗。這類問題往往沒有規(guī)律,又難以重現(xiàn)。對于這類 ANR 問題,一般需要花費大量時間去了解系統(tǒng)的一些其他行為,而超出了 ANR 本身的范疇,這類問題就相當(dāng)于一個警示信號,告訴你系統(tǒng)哪個地方出問題了。

2.1、查看 log 日志文件

搜索關(guān)鍵字 ANR :

04-17 17:15:23.817 E/ActivityManager(  187): ANR in com.da.android 

(com.da.android/com.text.my.app.ui.activities.ContentActivity)

上面這段文字的含義是 4月17日,17點15分23秒817ms時候發(fā)生了 ANR .其實一般還會帶上 ANR 的原因,以及 CPU 使用信息,

這里我們寫了一個 demo,比如在廣播接收器的 onReceive 方法(廣播接收器的 onReceive 方法默認在主線程執(zhí)行)里面睡眠一段時間,如果這個時候主線程沒有任何操作了,那么廣播接收器可以正常執(zhí)行完畢。不會造成 ANR 。如果我在發(fā)送廣播之后然后點擊多次返回按鍵,這個時候因為主線程睡眠了,無法響應(yīng),就會出現(xiàn) ANR。

其對應(yīng)的完整 log 信息如下 :

ANR in com.brotherd.broadcastdemo (com.brotherd.broadcastdemo/.MainActivity)

    PID: 6317

    Reason: Input dispatching timed out (Waiting to send key event because the focused window has not finished processing all of the input events that were previously delivered to it.  Outbound queue length: 0.  Wait queue length: 2.)

    // Load: 38.14 / 37.82 / 37.45// ANR 發(fā)生前 cpu 使用信息

    CPU usage from 45678ms to 0ms ago (2020-10-27 08:39:06.256 to 2020-10-27 08:39:51.933):

      15% 1265/system_server: 12% user + 3.5% kernel / faults: 6531 minor 16 major

      13% 23112/com.android.systemui: 9.7% user + 3.5% kernel / faults: 6033 minor 103 major // minor major 表示頁的錯誤

      4.7% 578/surfaceflinger: 2.6% user + 2% kernel / faults: 469 minor 2 major

      4.4% 673/hwpged: 0% user + 4.3% kernel / faults: 29 minor

      2.3% 549/android.hardware.graphics.composer@2.2-service: 1.1% user + 1.1% kernel / faults: 149 minor

      0.1% 2246/com.huawei.android.pushagent: 0% user + 0% kernel / faults: 2583 minor 22 major

      1.5% 461/logd: 0.8% user + 0.6% kernel / faults: 52 minor

      1.5% 2077/com.huawei.powergenie: 0.7% user + 0.8% kernel / faults: 843 minor 2 major

      0.5% 17384/com.android.settings: 0.4% user + 0.1% kernel / faults: 5419 minor 73 major

      1.3% 259/mmc-cmdqd/0: 0% user + 1.3% kernel

      1% 3888/kworker/u16:0: 0% user + 1% kernel / faults: 1 minor

      0.9% 18949/android.process.media: 0.5% user + 0.3% kernel / faults: 1408 minor 8 major

      0.8% 148/kswapd0: 0% user + 0.8% kernel

      0.5% 657/dubaid: 0.3% user + 0.2% kernel / faults: 139 minor

      0.5% 2105/com.huawei.android.launcher: 0.4% user + 0.1% kernel / faults: 159 minor 1 major

      0.5% 2366/com.huawei.systemmanager:service: 0.3% user + 0.1% kernel / faults: 374 minor

      0.5% 922/hisi_frw/0: 0% user + 0.5% kernel

      0.4% 3951/kworker/u16:8: 0% user + 0.4% kernel

      0.4% 27040/com.huawei.appmarket: 0.3% user + 0.1% kernel / faults: 350 minor 2 major

      0.4% 238/kworker/0:1H: 0% user + 0.4% kernel

      0.4% 2028/com.huawei.hiview: 0.1% user + 0.2% kernel / faults: 88 minor

      0.3% 577/lmkd: 0% user + 0.3% kernel

      0.3% 677/vendor.huawei.hardware.sensors@1.0-service: 0% user + 0.3% kernel / faults: 19 minor

      0.3% 3715/kworker/u16:1: 0% user + 0.3% kernel

      0.3% 29718/com.huawei.hidisk: 0.2% user + 0.1% kernel / faults: 404 minor 1 major

      0.1% 527/zygote64: 0% user + 0.1% kernel / faults: 541 minor

      0.3% 3954/kworker/u16:10: 0% user + 0.3% kernel

      0.3% 581/powerlogd: 0.2% user + 0.1% kernel / faults: 25 minor

      0.3% 3952/kworker/u16:9: 0% user + 0.3% kernel

      0% 23351/com.huawei.hwid: 0% user + 0% kernel / faults: 854 minor 10 major

      0.1% 3945/kworker/u16:6: 0% user + 0.1% kernel

      0.2% 24447/kworker/u17:0: 0% user + 0.2% kernel

      0.2% 548/android.hardware.graphics.allocator@2.0-service: 0% user + 0.2% kernel / faults: 47 minor

      0.2% 2042/com.huawei.systemserver: 0.1% user + 0.1% kernel / faults: 95 minor

      0.2% 426/oeminfo_nvm_server: 0% user + 0.1% kernel / faults: 79 minor 205 major

      0.2% 4187/kworker/u17:1: 0% user + 0.2% kernel

      0.2% 462/servicemanager: 0% user + 0.1% kernel / faults: 20 minor

      0.2% 3633/kworker/u16:2: 0% user + 0.2% kernel

      0.2% 5290/com.huawei.health:DaemonService: 0.1% user + 0% kernel / faults: 77 minor

      0.1% 7/rcu_preempt: 0% user + 0.1% kernel

      0.1% 93/sys_heap: 0% user + 0.1% kernel

      0.1% 949/hisi_hcc: 0% user + 0.1% kernel

      0.1% 637/hisecd: 0% user + 0.1% kernel / faults: 66 minor

      0.1% 2097/com.android.phone: 0% user + 0.1% kernel / faults: 97 minor

      0.1% 3441/kworker/u16:5: 0% user + 0.1% kernel

      0.1% 526/netd: 0% user + 0.1% kernel / faults: 142 minor 2 major

      0.1% 2063/com.huawei.HwOPServer: 0% user + 0% kernel / faults: 168 minor

      0.1% 1//init: 0% user + 0% kernel / faults: 263 minor 5 major

      0% 465/vendor.huawei.hardware.hwfactoryinterface@1.1-service: 0% user + 0% kernel / faults: 113 minor 5 major

      0.1% 3944/kworker/u16:4: 0% user + 0.1% kernel

      0.1% 655/displayengineserver: 0% user + 0% kernel / faults: 21 minor

      0.1% 918/oal_gpio_rx_dat: 0% user + 0.1% kernel

      0.1% 3955/com.eg.android.AlipayGphone:push: 0% user + 0% kernel / faults: 132 minor

      0.1% 26941/com.huawe// anr 發(fā)生后 cpu 使用情況

  2020-10-27 08:39:53.753 1265-1285/? E/ActivityManager: CPU usage from 51ms to 493ms later (2020-10-27 08:39:51.984 to 2020-10-27 08:39:52.426) with 99% awake:

      48% 1265/system_server: 10% user + 37% kernel

      45% 1285/ActivityManager: 8% user + 37% kernel

      4.9% 578/surfaceflinger: 4.9% user + 0% kernel / faults: 5 minor

      2.4% 578/surfaceflinger: 2.4% user + 0% kernel

      3.1% 3952/kworker/u16:9: 0% user + 3.1% kernel

      3.7% 23112/com.android.systemui: 3.7% user + 0% kernel

      9.7% TOTAL: 5.2% user + 4.4% kernel  // 可以從 total 里面看到整個 cpu 的情況

首先看前面幾行:

ANR in com.brotherd.broadcastdemo (com.brotherd.broadcastdemo/.MainActivity)

PID: 6317

Reason: Input dispatching timed out (Waiting to send key event because the focused window has not finished processing all of the input events that were previously delivered to it.  Outbound queue length: 0.  Wait queue length: 2.)

這幾行表明了 ANR 發(fā)生所處的 activity,進程 ID,以及 ANR 原因(input 事件分發(fā)超時);

ANRManager會打印出anr 前后的 cpu 使用情況,這個可以反映出當(dāng)時系統(tǒng)的Performance狀態(tài):

如果 CPU 使用量接近 100%,說明當(dāng)前設(shè)備很忙,有可能是CPU饑餓導(dǎo)致了ANR。 如果 CPU 使用量很少,說明主線程被BLOCK了 如果 IOwait 很高,說明ANR有可能是主線程在進行 I/O 操作造成的

那么這個時候,我們就要看看 anr 發(fā)生的時候,主線程在做什么了。

2.2、Trace 文件(data/anr/traces.txt)

log 文件只是告訴你 ANR 發(fā)生時間,但是并具體詳細的信息,這時候就得查看 trace 文件(App 的進程發(fā)生 ANR 時,系統(tǒng)讓活躍的 Top 進程都進行了一下 dump,進程中的各種Thread 就都 dump 到這個 trace 文件里了,所以 trace 文件中包含了每一條線程的運行時狀態(tài))。

對于當(dāng)前這個例子的堆棧信息如下:

解析Android ANR問題

在上面的信息中,有這樣一行

at com.brotherd.broadcastdemo.MyReceiver.onReceive(MyReceiver.java:23)

這就是造成 ANR 的根本原因。在 MyReceiver 類的 onReceive 方法中調(diào)用了 Thread 的 sleep 方法導(dǎo)致主線程阻塞,造成 ANR。

然后我們看一些字段的信息。

'main' prio=5 tid=1 Sleeping

  | group='main' sCount=1 dsCount=0 flags=1 obj=0x7682ab30 self=0x7bd3815c00

  | sysTid=6317 nice=-10 cgrp=default sched=0/0 handle=0x7c59fc8548

  | state=S schedstat=( 1009468742 32888019 224 ) utm=91 stm=9 core=4 HZ=100

  | stack=0x7ff27e1000-0x7ff27e3000 stackSize=8MB

  | held mutexes=

這些字段含義如下線程名:

線程自身信息 線程優(yōu)先級:prio=5 線程ID: tid=1 線程狀態(tài):Sleeping 線程組名稱:group='main' 線程被掛起的次數(shù):sCount=1 線程被調(diào)試器掛起的次數(shù):dsCount=0 線程的java的對象地址:obj= 0x7682ab30 線程本身的Native對象地址:self=0x7bd3815c00線程調(diào)度信息: Linux系統(tǒng)中內(nèi)核線程ID: sysTid=6317與主線程的進程號相同 線程調(diào)度優(yōu)先級:nice=-10 線程調(diào)度組:cgrp=default 線程調(diào)度策略和優(yōu)先級:sched=0/0 線程處理函數(shù)地址:handle= 0x7c59fc8548

線程的上下文信息:

線程調(diào)度狀態(tài):state=S 線程在CPU中的執(zhí)行時間、線程等待時間、線程執(zhí)行的時間片長度:schedstat=(1009468742 32888019 224) 線程在用戶態(tài)中的調(diào)度時間值:utm=91 線程在內(nèi)核態(tài)中的調(diào)度時間值:stm=9 最后執(zhí)行這個線程的CPU核序號:core=4

線程的堆棧信息:

堆棧地址和大小:stack=0x7ff27e1000-0x7ff27e3000 stackSize=8MB 線程狀態(tài)

此外,線程的狀態(tài)很重要,了解這些狀態(tài)的意義對分析ANR的原因是有幫助的,總結(jié)如下:

解析Android ANR問題

Thread.java 中的狀態(tài)和 Thread.cpp 中的狀態(tài)是有對應(yīng)關(guān)系的。可以看到前者更加概括,也比較容易理解,面向 Java 的使用者;而后者更詳細,面向虛擬機內(nèi)部的環(huán)境。traces.txt 中顯示的線程狀態(tài)都是 Thread.cpp 中定義的。另外,所有的線程都是遵循 POSIX 標準的本地線程。

線程狀態(tài)示例:

主線程是 running 或者 native: 而對應(yīng)的棧對應(yīng)了App中的函數(shù),則很有可能就是執(zhí)行該函數(shù)時候發(fā)生了超時。 主線程被 block:非常明顯的線程被鎖,這時候可以看是被哪個線程鎖了,可以考慮優(yōu)化代碼。如果是死鎖問題,就更需要及時解決了。2.3、死鎖demo

我們來看一個死鎖的例子:

'PowerManagerService' prio=5 tid=24 MONITOR

| group='main' sCount=1 dsCount=0 obj=0x41dd0eb0 self=0x5241b218

| sysTid=567 nice=0 sched=0/0 cgrp=apps handle=1380038664

| state=S schedstat=( 6682116007 11324451214 33313 ) utm=450 stm=219 core=1

at com.android.server.am.ActivityManagerService.broadcastIntent(ActivityManagerService.java:~13045)

- waiting to lock <0x41a874a0> (a com.android.server.am.ActivityManagerService) held by tid=12 (android.server.ServerThread)

at android.app.ContextImpl.sendBroadcast(ContextImpl.java:1144)

at com.android.server.power.PowerManagerService$DisplayBlankerImpl.unblankAllDisplays(PowerManagerService.java:3442)

at com.android.server.power.DisplayPowerState$PhotonicModulator$1.run(DisplayPowerState.java:456)

at android.os.Handler.handleCallback(Handler.java:800)

at android.os.Handler.dispatchMessage(Handler.java:100)

at android.os.Looper.loop(Looper.java:194)

at android.os.HandlerThread.run(HandlerThread.java:60)

tid=24 線程在等待一個 <0x41a874a0> 的鎖,而這個鎖被 tid=12 的線程占用了,我們來看看 tid=12:

'android.server.ServerThread' prio=5 tid=12 MONITOR| group='main' sCount=1 dsCount=0 obj=0x41a76178 self=0x507837a8

| sysTid=545 nice=-2 sched=0/0 cgrp=apps handle=1349936616

| state=S schedstat=( 15368096286 21707846934 69485 ) utm=1226 stm=310 core=0

at com.android.server.power.PowerManagerService.isScreenOnInternal(PowerManagerService.java:~2529)

- waiting to lock <0x41a7e2e8> (a java.lang.Object) held by tid=85 (Binder_B)

at com.android.server.power.PowerManagerService.isScreenOn(PowerManagerService.java:2522)

at com.android.server.wm.WindowManagerService.sendScreenStatusToClientsLocked(WindowManagerService.java:7749)

at com.android.server.wm.WindowManagerService.setEventDispatching(WindowManagerService.java:7628)

at com.android.server.am.ActivityManagerService.updateEventDispatchingLocked(ActivityManagerService.java:8083)

at com.android.server.am.ActivityManagerService.wakingUp(ActivityManagerService.java:8077)

tid=12 線程在等待 <0x41a7e2e8> 的鎖,而這個鎖被 tid=85 的線程占用了,我們來看看 tid=85:

'Binder_B' prio=5 tid=85 MONITOR | group='main' sCount=1 dsCount=0 obj=0x42744770 self=0x58329e88

| sysTid=3700 nice=-20 sched=0/0 cgrp=apps handle=1471424616

| state=S schedstat=( 1663727513 2044643318 6806 ) utm=132 stm=34 core=1

at com.android.server.power.PowerManagerService$DisplayBlankerImpl.toString(PowerManagerService.java:~3449)

- waiting to lock <0x41a7e420> (a com.android.server.power.PowerManagerService$DisplayBlankerImpl) held by tid=24 (PowerManagerService)

值得注意的是,trace里面一般會包含時間,盡量分析跟anr時間相近的trace,避免受到其他干擾。tid=85線程在等待<0x41a7e420>的鎖釋放,而這個鎖被tid=24占用了,所以就發(fā)送了死鎖。那么這種情況下我們就需要找到發(fā)生死鎖的source code,進行分析并修改。

三、其他分析思路

有時候我們 log 也分析了,traces 也分析了,還是很難分析出 ANR 的原因,那么我們可能就需要嘗試從其他方面分析了:

從main log 里面找 anr 發(fā)生時間前 8s,看看 app 的 main thread 在做什么操作?是否有異常的地方,一般 process 的 pid 會等于主線程 id。

大范圍搜尋 log,看是否 anr 發(fā)生之前,哪里有發(fā)生 crash?是否有可能引起 anr。

看情況抓取平臺的一些輔助信息,包括但不局限于:

memory info process status cpu info Binder info ftrace四、減少發(fā)生 ANR 概率 將所有耗時操作,比如訪問網(wǎng)絡(luò),Socket通信,查詢大量 SQL 語句,復(fù)雜邏輯計算等都放在子線程中去,然 后通過 handler.sendMessage、runonUIThread、AsyncTask 等方式更新 UI。無論如何都要確保用戶界面作的流暢 度。如果耗時操作需要讓用戶等待,那么可以在界面上顯示度條。 使用 AsyncTask 處理耗時 IO 操作。在一些同步的操作主線程有可能被鎖,需要等待其他線程釋放相應(yīng)鎖才能繼續(xù)執(zhí)行,這樣會有一定的 ANR 風(fēng)險,對于這種情況有時也可以用異步線程來執(zhí)行相應(yīng)的邏輯。另外, 要避免死鎖的發(fā)生。 使用 Thread 或者 HandlerThread 時,調(diào)用 Process.setThreadPriority(Process.THREADPRIORITYBACKGROUND) 設(shè)置優(yōu)先級,否則仍然會降低程序響應(yīng),因為默認 Thread 的優(yōu)先級和主線程相同。 使用 Handler 處理工作線程結(jié)果,而不是使用 Thread.wait() 或者 Thread.sleep() 來阻塞主線程。 Activity 的 onCreate 和 onResume 回調(diào)中盡量避免耗時的代碼 View 的 onOnTouchevent 和 onclick 中也要避免耗時的代碼 BroadcastReceiver 中 onReceive 代碼也要盡量減少耗時,建議使用 IntentService 處理。 各個組件的生命周期函數(shù)都不應(yīng)該有太耗時的操作,即使對于后臺 Service 或者 ContentProvider 來講,應(yīng)用在后臺運行時候其 onCreate() 時候不會有用戶輸入引起事件無響應(yīng) ANR,但其執(zhí)行時間過長也會引起 Service 的 ANR 和 ContentProvider 的ANR。

以上就是解析Android ANR問題的詳細內(nèi)容,更多關(guān)于Android ANR的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標簽: Android
相關(guān)文章:
主站蜘蛛池模板: 性视频网站免费 | 国产精品久久久久久久久久妞妞 | 91资源在线观看 | 日韩精品一区二区三区在线观看 | 性视频亚洲 | 日韩av在线中文字幕 | 在线免费观看av片 | 一级a性色生活片久久毛片 夜夜视频 | 91中文字幕 | 亚洲另类视频 | 在线观看亚洲专区 | 欧美精品一区二区三区一线天视频 | 久久精品综合 | 国产精品久久精品 | 亚洲综合无码一区二区 | 久久久久久中文字幕 | 国产精品对白一区二区三区 | 一级性视频 | 国产一级毛片电影 | 日韩高清一区 | 天堂资源av| www.99re| 亚洲精品一区二区在线观看 | 久久人人av | 欧美精品免费在线 | 99国产视频 | 精品中文在线 | 欧美视频三区 | 欧美日韩中文在线观看 | 日韩在线中文字幕 | 免费毛片在线 | 色站综合 | 99久久婷婷国产综合亚洲 | 99久久久国产精品 | 欧美性大战久久久久久久蜜臀 | 国产九九精品视频 | 亚洲精品国产第一综合99久久 | 成人午夜免费视频 | 91麻豆精品国产91久久久更新资源速度超快 | 美女视频一区 | 欧美日韩精品一区二区 | 成人爽a毛片一区二区免费 亚洲自拍偷拍精品 | 激情一区 | 99re视频精品 | 成人黄色在线观看 | 免费观看一级毛片 | 国产一级视频 | 美日韩成人 | 天堂国产| 亚洲成人网络 | 国产精品久久久久久 | 精品影院 | 精品视频一区二区三区四区 | 欧美亚洲国产一区二区三区 | 国产成人福利在线观看 | 在线免费黄色小视频 | 在线碰 | 国产精品美女久久久久久久久久久 | 羞羞在线视频 | 成人福利网 | 精品久久久久久久久久久久 | 欧美成人精品一区二区三区 | 一级黄色大片免费观看 | 日韩精品在线观看视频 | 成人免费视频网站在线观看 | 日韩av免费在线观看 | 黄色成人免费看 | 91av在线不卡| 中文字幕在线综合 | 成人福利 | 毛片黄片视频 | 国产网址在线 | 国产福利在线观看 | 久久久久在线 | 99草在线视频 | 日韩一区二区三区在线观看 | 激情一区二区 | 999久久久国产999久久久 | 搞黄视频在线观看 | 国产精品国产三级国产aⅴ9色 | 亚洲天堂一区二区 | 精品一区二区三区久久 | 国产精品成人在线观看 | 欧美午夜精品久久久久久浪潮 | 久久女人精品 | 日韩高清中文字幕 | 国产在线不卡一区 | 国产精品视频一区二区三区 | 精品视频一区二区在线观看 | 99久久久国产精品 | 中文字幕在线看第二 | 欧美成人黄色小说 | 亚洲美女视频一区二区三区 | 99精品免费视频 | 嫩草视频在线观看免费 | 黄色一级免费看 | 好看的一级毛片 | 看片一区| 国产成人综合在线 | 国产精品1 | 色婷婷一二三 | 免费在线日韩 | 一区二区手机在线 | 精品欧美乱码久久久久久1区2区 | 欧美一级二级三级 | 一区二区精品在线 | 精品国产一区二区在线 | 日韩精品免费视频 | 五月天婷婷综合 | 99精品国产在热久久 | 成人精品鲁一区一区二区 | 国产精品乱码一区二区三区 | 97超碰在线免费 | 国产亚洲精品美女久久久久久久久久 | 欧美日韩三级 | 私人毛片免费高清视频 | 亚洲国产一区二区三区 | www国产成人免费观看视频,深夜成人网 | av手机在线播放 | 国产成人综合网 | 亚洲视频区 | 欧美成人中文字幕 | 欧美精品免费在线观看 | 欧美一区二区三区四区不卡 | 成人福利视频 | 九九视频网 | 久草在线 | 中文字幕亚洲字幕一区二区 | 亚洲欧美激情在线 | 国产精品亚洲天堂 | 国产日韩欧美一区二区在线观看 | 国产成人精品一区二区三区四区 | 91久久精品国产91久久 | 日韩看片 | xvideos视频| 欧美日韩一区二区三区四区 | aaaaaa黄色片 | 精品国产一区二区三区性色av | 中文字幕精品一区 | 99热少妇| 久久精品这里热有精品 | 国产精品成人国产乱一区 | 国产精品久久久久毛片软件 | 日韩综合区 | 精品国产黄a∨片高清在线 激情网站免费 | 成年人网站免费在线观看 | 国产精品美女www爽爽爽软件 | 欧美一区二区三区 | 精品无人乱码一区二区三区 | 一区二区三区福利视频 | 狠狠干狠狠操 | 国产一区二区精品丝袜 | 亚洲精品在线免费观看视频 | 久久久久久久久久久九 | 日韩一区二区在线免费观看 | 国产精品毛片久久久久久久 | 日本欧美在线 | 天天拍天天操 | 国产高清在线观看 | 成人免费视频网址 | 久久国产成人 | 奇米色777欧美一区二区 | 免费视频一区二区 | 亚洲人人 | 久久2018 | 久久久综合网 | 亚洲高清中文字幕 | 色视频www在线播放国产人成 | 特级丰满少妇一级aaaa爱毛片 | 黄色影视在线免费观看 | 亚洲欧美国产一区二区 | 成人性大片免费观看网站 | 国产精品99久久久久久大便 | 中文字幕1区 | 91久色| 午夜精品久久久久久久久久久久 | 中文字幕av一区二区三区 | 国产精品久久国产精品99 gif | 国产伦精品一区二区三区四区视频 | 国产香蕉97碰碰久久人人九色 | 99re免费视频精品全部 | 综合一区 | 91观看 | 夜夜夜久久久 | 成人在线观 | a欧美| 亚洲精品视频在线播放 | 婷婷综合网 | 欧美在线综合 | 国外成人在线视频网站 | 日日精品 | 日韩中文字幕在线播放 | 亚洲欧洲精品一区二区三区 | 国产日韩av在线 | 国产精品一区二区三区在线 | aa毛片| 日韩三级在线免费观看 | 91欧美在线| 一级全黄少妇性色生活片毛片 | 五月婷婷综合久久 | 精品国产一区二区三区久久久蜜月 | 日本不卡高字幕在线2019 | 国产成人在线视频 | 国产精品毛片一区视频播 | 成人精品视频免费在线观看 | 玖玖玖精品视频 | 国产欧美精品一区 | 一级成人免费 | 午夜国产精品视频 | 国产三区精品 | 免费在线国产 | 久久在线视频 | 一级黄色片看看 | 天天综合视频 | 午夜成人免费电影 | 日韩一区二区三区在线观看 | 国产成人综合网 | 看免费的毛片 | 亚洲一区在线免费观看 | 91在线视频福利 | 中文字幕一区在线 | 午夜视频网站 | 久久精品美女 | h在线视频 | 日韩一区二区三区四区五区 | 日韩和的一区二区 | 欧美日韩系列 | 国产日韩欧美在线观看 | 日操| 在线视频a| 91精品在线播放 | 日韩视频一区二区三区 | 欧美激情在线播放 | www久久99 | 日韩一二三区在线观看 | 久久精品电影网 | 精品天堂 | 午夜av电影 | 亚洲香蕉精品 | 一区二区精品视频 | 九九香蕉视频 | 伊人伊人| 日韩福利片 | 激情视频在线观看免费 | 国产视频中文字幕 | 亚洲www啪成人一区二区 | 欧美国产日韩一区 | 91亚洲一区 | 国产一区二区精品 | 精品一区二区久久 | www.成人在线视频 | 四虎影院在线 | 蜜桃av在线播放 | 亚洲国产精久久久久久久 | 精品一区二区久久久久久久网站 | 国产精品久久久久久久久久久久 | 一区二区三区四区在线视频 | 国产一级黄片毛片 | 青青青久草 | 成人在线视频网 | 蜜桃中文字幕 | 综合婷婷 | 国产资源视频在线观看 | 日韩三区 | 嫩草精品 | 中国一级免费毛片 | 涩涩天堂 | 91精品国产综合久久精品 | 日韩免费一区 | 久久国产精品久久久久久 | 日韩精品极品视频在线 | 亚洲在线免费观看 | 久草精品在线 | 曰曰操| 日韩超级大片免费看国产国产播放器 | 国产欧美专区 | 日韩av免费在线播放 | 成人午夜视频在线观看 | 国产精品视频久久久 | a级片在线观看 | 91精品国产综合久久福利软件 | 婷婷激情在线 | 日本在线视频不卡 | av在线免费观看网站 | 免费看男女www网站入口在线 | 日日摸天天爽天天爽视频 | 中文字幕国产 | 久草视频国产 | 九色一区 | 男人电影天堂 | 九色91视频 | 偷拍做爰吃奶视频免费看 | 午夜在线视频免费观看 | av在线一区二区三区 | 天天插天天射天天干 | 日韩欧美a级v片免费播放 | 欧美一区二区免费 | 亚洲欧洲精品成人久久奇米网 | 免费无遮挡www小视频 | 亚洲情综合五月天 | 在线观看成人国产 | 精品欧美视频 | 一级做a爰片性色毛片 | 91在线视频观看 | 日韩在线视频一区 | 亚洲一区不卡 | 精品国产一区二区三区性色av | 久久久精品一区二区 | 99国产精品99久久久久久 | 欧美激情欧美激情在线五月 | 97超碰在线免费 | 国产精品网站在线 | 色婷婷网 | 国产成人自拍一区 | 久久亚洲欧美日韩精品专区 | 亚洲一区二区三区日韩 | 国产精品三级久久久久久电影 | 欧美一级内谢 | 波多野吉衣网站 | 成人av一区二区三区 | 精品国产三级a在线观看 | 国产精品久久久久久久久久久不卡 | 国产成人亚洲综合 | 在线国产一区二区 | 日本亚洲精品一区二区三区 | 国产精品1区2区 | 午夜网址| 久久久精品日本 | 四虎最新影视 | 81精品国产乱码久久久久久 | 免费毛片在线 | 在线播放91 | 日韩免费一级 | 久久久国产视频 | 91 在线观看 | www视频在线观看 | www中文字幕 | 欧美精品成人一区二区三区四区 | 免费在线成人网 | 国产1区2区3区 | 欧美区在线 | 精品国产乱码一区二区三区四区 | 一区二区三区国产精品 | 国产片侵犯亲女视频播放 | 国产高清在线精品 | 粉嫩高清一区二区三区 | 日韩在线免费 | 中文字幕av网 | 国产午夜视频 | 国产一区二区资源 | 四虎视频 | 国产日韩欧美一区二区 | 黄色一级片免费 | 日韩精品一区在线 | 欧美一区二区黄色片 | 不卡一区 | 欧美欧美欧美 | 日本一区二区高清不卡 | 中文字幕成人免费视频 | 亚洲 成人 av | 少妇精品久久久久久久久久 | 亚洲欧美综合精品久久成人 | av高清在线看 | 国产伦精品一区二区 | 欧美成人免费一级人片100 | 99在线视频精品 | 久久亚洲黄色 | 在线草| 永久免费网站 | 亚洲视频中文字幕 | 亚洲一区中文字幕永久在线 | 国产精品色婷婷亚洲综合看 | 亚洲午夜精品片久久www慈禧 | 国产成人天天爽高清视频 | 欧美一级电影 | 欧美欧美欧美 | 欧美日韩精品免费观看视频 | 久久99精品视频 | 国产在线精品一区二区三区 | 国产综合视频在线观看 | 毛片在线视频 | 女人爽到高潮aaaa电影 | 热re99久久精品国99热线看 | 亚洲高清久久 | 国产精品免费观看 | 91看片在线观看 | 亚洲欧美国产毛片在线 | 亚洲精品国偷拍自产在线观看 | 日韩亚洲精品在线观看 | 久久久一区二区 | 99中文字幕 | 久久九精品 | 人一级毛片 | 国产高清免费视频 | 日韩在线免费 | 精品一级| 在线中文字幕av | 亚洲一区二区 | 色欧美片视频在线观看 | 欧美精品一区二区三区一线天视频 | 欧美成在线观看 | 在线99热| 成人性大片免费观看网站 | 黄瓜av | 成人免费一区二区三区视频网站 | 国产精品国产精品 | 在线一级视频 | 久久国产精品一区二区 | 精品国产乱码久久久久久影片 | 9191视频| 亚洲一区精品在线 | 天天干,夜夜操 | 久久久网 | 国产精品久久久久久久9999 | 日韩视频在线观看 | 亚洲一区二区三区四区五区午夜 | 日本久久久一区二区三区 | 久久精品一区二区三区四区毛片 | 精品久久亚洲 | 99久久久99久久国产片鸭王 | 久久久国产一区二区三区 | 久久久精品一区二区三区 | 国产一区二区三区欧美 | 黄av在线| 97伦理片| 亚洲国产精品久久人人爱 | 免费观看一区二区三区毛片软件 | 欧美日产国产成人免费图片 | 久久久久久一区 | 国产一区二区精品在线观看 | 国产一区二区影院 | 亚洲精品专区 | 国产精品久久久久久久一区探花 | 吴梦梦到粉丝家实战华中在线观看 | 婷婷久 | 免费成人在线电影 | 国产高清精品一区 | 四虎影院在线看 | 日本不卡免费新一二三区 | 国产拍揄自揄精品视频麻豆 | av片免费看| 99精品国产高清一区二区麻豆 | 日韩精品免费在线视频 | 亚洲一区二区三区免费在线观看 | 欧美日韩亚洲成人 | 国产精品片aa在线观看 | 日韩在线观看第一页 | 天堂一区二区三区 | 日韩 国产 在线 | 国产超碰人人爽人人做人人爱 | 精品xxxx户外露出视频 | 欧美国产精品一区二区 | 欧美精品一区二区三区在线 | 美女视频一区二区三区 | 欧美视频在线免费 | 免费福利视频一区 | 可以看av的网站 | 麻豆专区一区二区三区四区五区 | 一区二区三区在线观看视频 | 久久成人18免费网站 | 天天操网 | 久久一区| 91视频网 | 欧美第一色 | 午夜精品久久久久久久白皮肤 | 一区二区三区高清 | 亚洲精品66 | 国产成人精品午夜视频免费 | 在线一级视频 | 91久色| 91免费小视频 | 日本淫视频 | 国产精品久久久久久影院8一贰佰 | 国产成人精品免高潮在线观看 | 欧美一级特黄aaaaaaa视频片 | 亚洲综合大片69999 | 国产精品欧美一区二区三区不卡 | 色网在线观看 | 亚洲福利片 | 久久午夜综合久久 | 国产1级片 | 精品亚洲在线 | 少妇精品视频在线观看 | 亚洲精品一区二区三区樱花 | 日韩欧美一区二区三区四区 | 亚洲成人在线视频观看 | 久久国产欧美日韩精品 | 亚洲国产成人一区二区精品区 | 国产综合久久久久久鬼色 | 亚洲精品国产综合 | 国产精品久久久久久久午夜片 | 中文字幕亚洲欧美日韩在线不卡 | 国产综合在线视频 | 日韩成年人视频 | 超碰最新网址 | 久草在线资源福利站 | 久久综合香蕉 | 精品在线播放 | 日韩精品视频在线观看免费 | av网站推荐 | √天堂在线 | 欧美日韩一区二区三区在线观看 | 中文字幕一区二区三区精彩视频 | 91亚洲免费视频 | 粉嫩在线 | 神马久久久久久久久 | 欧美黄色一级 | 97在线观看视频 | 久久久久久久99精品免费观看 | 亚洲精品一区国语对白 | 欧美一区二区三区视频 | 久久精品国产亚洲blacked | 日韩中文字幕国产 | 国产精品久久久一区二区 | 精品自拍视频 | 午夜日韩 | 成人午夜在线观看 | 久久久久国产 | 亚洲高清视频在线 | 在线观看欧美一区 | 剑来在线观看 | 亚洲精品一二三四五区 | 亚洲精品一区二三区不卡 | 国产精品亚洲a | 国产精品成人品 | 久久6 | 密室大逃脱第六季大神版在线观看 | 日韩中文视频 | 日韩免费在线观看视频 | 亚洲 欧美 综合 | 91九色视频在线 | 欧美一区 | 久草视频在线播放 | 一区二区三区国产精品 | 在线久草 | 蜜桃精品在线观看 | 欧美久久久久久 | 亚洲另类视频 | 亚洲日韩欧美一区二区在线 | 亚洲永久免费 | 国产精品久久久久久亚洲调教 | 欧美精品久久久 | 山岸逢花在线 | 国产96精品久久久 | 久久久久av| 亚洲精品国产第一综合99久久 | 中文字幕亚洲二区 | 日韩欧美综合 | 国产精品久久久爽爽爽麻豆色哟哟 | 久久99精品久久久噜噜最新章节 | 99精品一级欧美片免费播放 | 欧美激情一区二区 | 精品欧美一区二区在线观看视频 | 97成人在线视频 | 欧洲精品久久久 | 99热这里有精品 | 色网站在线观看 | 欧美黄视频 | 精品日韩av | 成人日韩在线观看 | 精品国产一区二区三区性色av | 综合伊人| 欧美一区二区三区精品 | 美女一区二区三区在线观看 | 国产综合精品一区二区三区 | 色.com| 国产精品自拍一区 | 99看片| 亚洲欧美日韩一区 | 国产精品一区一区三区 | 日韩电影在线看 | 日韩免费网站 | 久久一视频 | 最新国产视频 | 激情久久av一区av二区av三区 | 国产一级视频 | 最近日韩中文字幕 | se在线播放 | 成人网页| 国产91福利视频 | 国产富婆一级全黄大片 | 午夜精品久久久久久久星辰影院 | 免费av片| 成人福利视频 | 国产精品久久久久久亚洲调教 | 国产一区二区三区免费视频 | 亚洲在线播放 | 日韩在线观看成人 | 欧美激情亚洲 | 资源av| 国产精品99久久久久久久久久久久 | 欧美精品亚洲 | 国产 欧美 日韩 一区 | 成人在线免费观看视频 | 在线观看中文字幕 | av天空| 中文字幕一级 | 男女午夜 | 国偷自产av一区二区三区 | av一级在线 | 亚洲精品在线免费 | 久久国产精品久久久久久电车 | 久久黄网| 中文字幕观看 | 亚洲一区二区中文字幕 | 国产乱xxxxx97国语对白 | 亚洲第一se情网站 | 国产在线播放av | 成人福利在线观看 | 91精品国产91久久久久久最新 | 一级篇| 9999久久久久 | 日韩视频中文字幕 | 9久久 | 成人毛片视频网站 |