欧美成人午夜精品久久久,国产?V天堂一区二区三区,欧美精品va在线观看,亚洲一区二区三区免费在线观看,av无码精品一区二区久久,欧美性爱视频不卡一区三区,欧美乱人伦视频在线观看,国产一级牲交高潮

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

第 51 章:AI、AppFunctions 與計(jì)算機(jī)控制

第 51 章:AI、AppFunctions 與計(jì)算機(jī)控制 Android 已經(jīng)從一個(gè)僅能運(yùn)行應(yīng)用的平臺(tái),演進(jìn)為能夠理解應(yīng)用行為的平臺(tái)。一系列端側(cè)智能服務(wù)將用戶意圖與應(yīng)用行為關(guān)聯(lián)起來:AppFunctions 框架允許助手通過強(qiáng)類型 RPC 契約調(diào)用應(yīng)用的任意功能;計(jì)算機(jī)控制(Computer Control)為 AI 代理提供虛擬顯示器,可在其上完成點(diǎn)擊、滑動(dòng)、截圖操作;OnDeviceIntelligence 在隔離沙箱中運(yùn)行大機(jī)器學(xué)習(xí)模型 —— 大語言模型以及其他生成式或大規(guī)模推理負(fù)載;NNAPI 向所有原生工作負(fù)載暴露硬件加速器。結(jié)合 AppSearch、內(nèi)容捕獲(Content Capture)、AdServices 以及聯(lián)邦學(xué)習(xí),這些子系統(tǒng)共同構(gòu)成了 Android 的 AI 神經(jīng)體系。本章逐層梳理完整調(diào)用鏈路:從公開 SDK 類,經(jīng)由 AIDL 接口、system_server 服務(wù)實(shí)現(xiàn),一直到另一端沙箱進(jìn)程或 HAL 進(jìn)程。每一條代碼路徑均對(duì)應(yīng)當(dāng)前 AOSP 源碼樹中的真實(shí)源文件。51.1 AOSP AI 全景概覽在深入任一框架細(xì)節(jié)之前,先整體瀏覽 AOSP 全部 AI/ML 相關(guān)組件。下圖列出主要子系統(tǒng)、跨進(jìn)程邊界以及組件之間的數(shù)據(jù)流。Mainline 模塊 HAL / 驅(qū)動(dòng)進(jìn)程 隔離 / 沙箱進(jìn)程 目標(biāo)應(yīng)用進(jìn)程 system_server 應(yīng)用進(jìn)程 Binder IPC bindService Binder IPC 隔離 bind 調(diào)用 Binder IPC Binder IPC Binder IPC Binder IPC Binder IPC第三方 / 系統(tǒng)應(yīng)用 AppFunctionManager OnDeviceIntelligenceManager NNAPI C API ComputerControlExtensions AppSearchManager TextClassifierManager ContentCaptureManager AppPredictionManager TopicsManagerAppFunctionManagerServiceImpl OnDeviceIntelligenceManagerService VirtualDeviceManager ComputerControlSession Service ContentCaptureManagerService TextClassificationManagerService AppPredictionManagerServiceAppFunctionService OnDeviceSandboxedInferenceService IsolatedTrainingService NNAPI HAL (IDevice) GPU / DSP / NPUAppSearch 模塊 NeuralNetworks 模塊 OnDevicePersonalization 模塊 AdServices 模塊51.1.1 AOSP 智能子系統(tǒng)分類表子系統(tǒng)API 等級(jí)是否 Mainline 模塊用途AppFunctions16(引入),Android 17 趨于成熟否(框架內(nèi)置)強(qiáng)類型跨應(yīng)用函數(shù)調(diào)用,支持運(yùn)行時(shí)注冊(cè)與狀態(tài)觀測(cè)Computer Control16(Android 16)否(框架 + 擴(kuò)展庫)基于虛擬顯示器實(shí)現(xiàn) AI 驅(qū)動(dòng)的 UI 自動(dòng)化OnDeviceIntelligence15 及以上NeuralNetworks 模塊沙箱化的大語言模型 / 機(jī)器學(xué)習(xí)推理NNAPI8.1 及以上NeuralNetworks 模塊神經(jīng)網(wǎng)絡(luò)推理硬件加速AppSearch12 及以上AppSearch 模塊端側(cè)全文檢索與索引Content Capture10 及以上否(框架內(nèi)置)為智能服務(wù)實(shí)時(shí)捕獲 UI 結(jié)構(gòu)TextClassifier8.0 及以上否(框架內(nèi)置)實(shí)體識(shí)別、語言檢測(cè)AppPrediction10 及以上否(框架內(nèi)置)基于使用行為的應(yīng)用排序OnDevicePersonalization14 及以上ODP 模塊聯(lián)邦計(jì)算、隔離訓(xùn)練AdServices13 及以上AdServices 模塊隱私保護(hù)廣告定向(Topics、FLEDGE)51.1.2 跨子系統(tǒng)通用設(shè)計(jì)思路所有 AI 子系統(tǒng)都復(fù)用若干架構(gòu)設(shè)計(jì)范式:進(jìn)程隔離智能服務(wù)運(yùn)行在隔離或沙箱進(jìn)程。OnDeviceSandboxedInferenceService設(shè)置android:isolatedProcess="true"。IsolatedTrainingService在獨(dú)立進(jìn)程加載 TFLite。即使 ComputerControlSession 也基于與主顯示器隔離的虛擬顯示器工作。優(yōu)先使用強(qiáng)類型契約,而非無約束 BundleAppFunctions 使用 AppSearch 提供的GenericDocument作為參數(shù)序列化格式。ODI 使用PersistableBundle承載特性與請(qǐng)求元數(shù)據(jù)。二者均鼓勵(lì) SDK 層封裝強(qiáng)類型包裝類。AppSearch 作為通用元數(shù)據(jù)存儲(chǔ)AppFunction 元數(shù)據(jù)、應(yīng)用預(yù)測(cè)數(shù)據(jù)、內(nèi)容捕獲智能數(shù)據(jù),全部匯聚到 AppSearch 完成索引與檢索。權(quán)限管控 + 白名單機(jī)制AppFunctions 執(zhí)行受EXECUTE_APP_FUNCTIONS(或EXECUTE_APP_FUNCTIONS_SYSTEM)權(quán)限約束,同時(shí)配合平臺(tái)AllowlistManager維護(hù)簽名代理白名單。Computer Control 需要ACCESS_COMPUTER_CONTROL權(quán)限。ODI 需要USE_ON_DEVICE_INTELLIGENCE。AdServices 需要ACCESS_ADSERVICES_TOPICS。支持取消信號(hào)傳遞幾乎全部異步 API 都會(huì)跨 Binder 傳遞ICancellationSignal,調(diào)用方可終止長(zhǎng)時(shí)間推理或函數(shù)執(zhí)行。51.2 AppFunctions 框架AppFunctions 框架在 Android 16 以 Beta 特性面世,Android 17 正式廣泛可用。它提供一套標(biāo)準(zhǔn)化機(jī)制,讓 AI 助手(代理)可以發(fā)現(xiàn)并調(diào)用任意目標(biāo)應(yīng)用暴露的功能。例如助手收到指令 “把 XYZ 保存到我的筆記”,框架會(huì)將請(qǐng)求路由至對(duì)應(yīng)的AppFunctionService實(shí)現(xiàn),助手無需在編譯期依賴筆記應(yīng)用。Android 17 對(duì)該框架做了大幅增強(qiáng),不再局限于最初僅通過 Manifest 靜態(tài)聲明的模式。本章后續(xù)會(huì)詳細(xì)介紹以下核心新增能力:運(yùn)行時(shí)(動(dòng)態(tài))函數(shù)注冊(cè):應(yīng)用可在 Activity 或 Service 中運(yùn)行時(shí)注冊(cè) AppFunction 回調(diào),不再必須聲明獨(dú)立AppFunctionService組件(registerAppFunction,受FLAG_ENABLE_DYNAMIC_APP_FUNCTIONS標(biāo)記控制)。完備的發(fā)現(xiàn)、狀態(tài)與觀測(cè) API,新增至AppFunctionManager:searchAppFunctions、getAppFunctionStates、getAppFunctionActivityStates、observeAppFunctions。訪問管理框架:維護(hù)(代理,目標(biāo)應(yīng)用)二元組訪問狀態(tài)與標(biāo)志位;提供面向用戶的管理 UI;代理白名單交由平臺(tái)AllowlistManager維護(hù),不再使用 DeviceConfig 字符串。新增權(quán)限:DISCOVER_APP_FUNCTIONS(僅發(fā)現(xiàn),不可執(zhí)行)、EXECUTE_APP_FUNCTIONS_SYSTEM(特權(quán)系統(tǒng)代理,繞過白名單校驗(yàn)),保留原有EXECUTE_APP_FUNCTIONS。Android 17 源碼目錄概覽:frameworks/base/core/java/android/app/appfunctions/ AppFunctionManager.java -- 客戶端系統(tǒng)服務(wù)入口 AppFunctionService.java -- 靜態(tài)目標(biāo)應(yīng)用抽象基類 AppFunction.java -- 運(yùn)行時(shí)函數(shù)回調(diào)接口 RegisterAppFunctionRequest.java -- 運(yùn)行時(shí)注冊(cè)請(qǐng)求Parcelable ExecuteAppFunctionRequest.java -- 執(zhí)行請(qǐng)求Parcelable ExecuteAppFunctionResponse.java -- 執(zhí)行響應(yīng)Parcelable AppFunctionException.java -- 分層異常錯(cuò)誤體系 AppFunctionMetadata.java -- 靜態(tài)+運(yùn)行時(shí)函數(shù)元數(shù)據(jù) AppFunctionName.java -- (包名,標(biāo)識(shí)符)函數(shù)唯一標(biāo)識(shí) AppFunctionState.java -- 運(yùn)行時(shí)啟用/可見狀態(tài) AppFunctionActivityId.java -- Activity作用域函數(shù)鍵值 AppFunctionSearchSpec.java -- 檢索查詢條件 AppFunctionObserver.java -- 變更觀測(cè)回調(diào) AppFunctionAccessServiceInterface.java -- 訪問校驗(yàn)本地服務(wù) IAppFunctionManager.aidl -- system_server AIDL接口 IAppFunctionService.aidl -- 靜態(tài)目標(biāo)應(yīng)用AIDL(oneway) IAppFunctionExecutor.aidl -- 動(dòng)態(tài)注冊(cè)執(zhí)行器AIDL IExecuteAppFunctionCallback.aidl -- 異步結(jié)果回調(diào)AIDL ICancellationCallback.aidl -- 取消信號(hào)傳輸AIDL ... frameworks/base/services/appfunctions/ java/com/android/server/appfunctions/ AppFunctionManagerService.java -- SystemService封裝 AppFunctionManagerServiceImpl.java -- IAppFunctionManager.Stub實(shí)現(xiàn) RemoteServiceCallerImpl.java -- Service綁定邏輯 CallerValidatorImpl.java -- 權(quán)限+白名單校驗(yàn) MetadataSyncAdapter.java -- AppSearch元數(shù)據(jù)同步 AppFunctionsLoggerWrapper.java -- statsd埋點(diǎn)日志 allowlist/SystemAppFunctionAllowlistReader.java -- AllowlistManager白名單讀取 dynamic/MultiUserDynamicAppFunctionRegistry.java -- 運(yùn)行時(shí)注冊(cè)管理 reader/AppFunctionMetadataReader.java -- 靜態(tài)/動(dòng)態(tài)元數(shù)據(jù)讀取 observer/AppFunctionMetadataObserver.java -- AppSearch變更觀測(cè)器 ... frameworks/base/services/permission/java/com/android/server/permission/access/appfunction/ AppFunctionAccessService.kt -- 持久化(代理,目標(biāo))訪問狀態(tài)51.2.1 架構(gòu)概覽51.2.2 客戶端:AppFunctionManagerAppFunctionManager以系統(tǒng)服務(wù)注冊(cè),服務(wù)名稱Context.APP_FUNCTION_SERVICE。@FlaggedApi(FLAG_ENABLE_APP_FUNCTION_MANAGER) @SystemService(Context.APP_FUNCTION_SERVICE) public final class AppFunctionManager {核心 API 為executeAppFunction(),接收四個(gè)入?yún)?。Android17 要求調(diào)用方具備兩項(xiàng)執(zhí)行權(quán)限之一;應(yīng)用調(diào)用自身暴露的函數(shù)無需權(quán)限。@FlaggedApi(FLAG_ENABLE_APP_FUNCTION_PERMISSION_V2) @RequiresPermission( anyOf = { Manifest.permission.EXECUTE_APP_FUNCTIONS, Manifest.permission.EXECUTE_APP_FUNCTIONS_SYSTEM }, conditional = true) @UserHandleAware public void executeAppFunction( @NonNull ExecuteAppFunctionRequest request, @NonNull @CallbackExecutor Executor executor, @NonNull CancellationSignal cancellationSignal, @NonNull OutcomeReceiverExecuteAppFunctionResponse, AppFunctionException callback) {內(nèi)部實(shí)現(xiàn)會(huì)將上層請(qǐng)求封裝為ExecuteAppFunctionAidlRequest,補(bǔ)充調(diào)用者身份、時(shí)間戳信息。ExecuteAppFunctionAidlRequest aidlRequest = new ExecuteAppFunctionAidlRequest( request, mContext.getUser(), mContext.getPackageName(), /* requestTime= */ SystemClock.elapsedRealtime(), /* requestWallTime= */ System.currentTimeMillis());Binder 調(diào)用返回ICancellationSignal傳輸對(duì)象,綁定至客戶端CancellationSignal,實(shí)現(xiàn)跨進(jìn)程取消。ICancellationSignal cancellationTransport = mService.executeAppFunction( aidlRequest, new IExecuteAppFunctionCallback.Stub() { @Override public void onSuccess(ExecuteAppFunctionResponse result) { executor.execute(() - callback.onResult(result)); } @Override public void onError(AppFunctionException exception) { executor.execute(() - callback.onError(exception)); } }); if (cancellationTransport != null) { cancellationSignal.setRemote(cancellationTransport); }51.2.3 啟用狀態(tài)管理每個(gè) AppFunction 具備三態(tài)生命周期:常量數(shù)值含義APP_FUNCTION_STATE_DEFAULT0恢復(fù)默認(rèn)狀態(tài)(通常為啟用)APP_FUNCTION_STATE_ENABLED1顯式啟用APP_FUNCTION_STATE_DISABLED2顯式禁用應(yīng)用通過setAppFunctionEnabled()控制自身函數(shù)狀態(tài)。@UserHandleAware public void setAppFunctionEnabled( @NonNull String functionIdentifier, @EnabledState int newEnabledState, @NonNull Executor executor, @NonNull OutcomeReceiverVoid, Exception callback) {啟用狀態(tài)以AppFunctionRuntimeMetadata文檔持久化在 AppSearch,與描述函數(shù) Schema 的AppFunctionStaticMetadata相互獨(dú)立。setAppFunctionEnabled()僅對(duì)靜態(tài)AppFunctionService對(duì)應(yīng)的函數(shù)生效。通過registerAppFunction注冊(cè)的運(yùn)行時(shí)函數(shù),生命周期與注冊(cè)會(huì)話綁定,啟用狀態(tài)由registerAppFunction/AppFunctionRegistration.unregister控制;對(duì)動(dòng)態(tài)函數(shù)調(diào)用本方法會(huì)拋出IllegalArgumentException。Android17 完整對(duì)外暴露運(yùn)行時(shí)狀態(tài),不僅僅是啟用位。AppFunctionStateParcelable 包含AppFunctionName、啟用標(biāo)記、可見性;可通過AppFunctionManager.getAppFunctionStates(...)批量讀取。51.2.4 訪問控制模型AppFunctions 訪問模型分為三層校驗(yàn):訪問標(biāo)志位是以(代理,目標(biāo)應(yīng)用)為單位存儲(chǔ)的位掩碼,常量定義在AppFunctionManager。標(biāo)志位數(shù)值含義ACCESS_FLAG_PREGRANTED1系統(tǒng)預(yù)授權(quán)訪問ACCESS_FLAG_UPGRADE_GRANTED1 1系統(tǒng)版本升級(jí)時(shí)授予ACCESS_FLAG_USER_GRANTED1 2用戶通過 UI 顯式授權(quán)ACCESS_FLAG_USER_DENIED1 3用戶通過 UI 顯式拒絕(優(yōu)先級(jí)高于 PREGRANTED)ACCESS_FLAG_OTHER_GRANTED1 4ADB 或其他方式授權(quán)ACCESS_FLAG_OTHER_DENIED1 5ADB 或主動(dòng)撤銷拒絕Android17 代理白名單不再使用 DeviceConfig 字符串,改為平臺(tái)AllowlistManager。它以SignedPackage(包名 + 證書摘要)為 Key,記錄該代理允許訪問的目標(biāo)包集合,支持通配符代表全部目標(biāo)包。AppFunctions 服務(wù)通過SystemAppFunctionAllowlistReader讀取,內(nèi)部使用 LruCache 按代理緩存結(jié)果。public class SystemAppFunctionAllowlistReader implements AppFunctionAllowlistReader { private final LruCacheSignedPackage, ArraySetString mCache; private final AllowlistManager mAllowlistManager; @Override public CompletableFutureBoolean isAllowlisted( String agentPackage, String targetPackageName, int userId) { ... } }CallerValidatorImpl執(zhí)行前同時(shí)校驗(yàn)運(yùn)行時(shí)權(quán)限與白名單。持有EXECUTE_APP_FUNCTIONS_SYSTEM的特權(quán)系統(tǒng)代理會(huì)跳過白名單;僅持有EXECUTE_APP_FUNCTIONS的代理必須出現(xiàn)在目標(biāo)應(yīng)用對(duì)應(yīng)的白名單內(nèi)。51.2.5 AIDL 接口定義框架定義兩組 AIDL 接口:一組面向客戶端,一組面向目標(biāo)應(yīng)用。IAppFunctionManager(客戶端 → system_server)Android17 接口大幅擴(kuò)充,增加發(fā)現(xiàn)、觀測(cè)、運(yùn)行時(shí)注冊(cè)、訪問管理相關(guān)接口。interface IAppFunctionManager { ICancellationSignal executeAppFunction( in ExecuteAppFunctionAidlRequest request, in IExecuteAppFunctionCallback callback); // 發(fā)現(xiàn)與觀測(cè) void observeAppFunctions( in AppFunctionAidlSearchSpec aidlSearchSpec, in IObserveAppFunctionChangesCallback callback); void unregisterAppFunctionObserver( in String callingPackage, in UserHandle userHandle, in IObserveAppFunctionChangesCallback callback); void getAppFunctionStates( in ListAppFunctionName appFunctionNames, in String callingPackageName, int targetUserId, in IGetAppFunctionStatesCallback callback); void getAppFunctionActivityStates( in ListAppFunctionActivityId activityIds, in String callingPackageName, int targetUserId, in IGetAppFunctionActivityStatesCallback callback); // 啟用狀態(tài)生命周期 void isAppFunctionEnabled( in String callingPackage, in String targetPackage, in String functionIdentifier, in UserHandle userHandle, in IIsAppFunctionEnabledCallback callback); void setAppFunctionEnabled( in String callingPackage, in String functionIdentifier, in UserHandle userHandle, int enabledState, in ISetAppFunctionEnabledCallback callback); // 運(yùn)行時(shí)動(dòng)態(tài)注冊(cè) void registerAppFunctions(in String packageName, in ListString functionIds, in IAppFunctionExecutor executor, in IBinder activityToken); void unregisterAppFunctions(in String packageName, in ListString functionIds, in IAppFunctionExecutor executor); // 訪問管理 int getAccessRequestState(in String agentPackageName, int agentUserId, in String targetPackageName, int targetUserId); int getAccessFlags(in String agentPackageName, int agentUserId, in String targetPackageName, int targetUserId); boolean updateAccessFlags(in String agentPackageName, int agentUserId, in String targetPackageName, int targetUserId, int flagMask, int flags); void revokeSelfAccess(in String targetPackageName); ListString getValidAgents(int userId); ListString getValidTargets(int targetUserId); Intent createRequestAccessIntent(in String targetPackageName); void addOnAccessChangedListener(IOnAppFunctionAccessChangeListener listener, int userId); void removeOnAccessChangedListener(IOnAppFunctionAccessChangeListener listener, int userId); }注意區(qū)分查詢回調(diào)IIsAppFunctionEnabledCallback和修改回調(diào)ISetAppFunctionEnabledCallback。運(yùn)行時(shí)注冊(cè)傳遞IAppFunctionExecutor,由系統(tǒng)直接調(diào)用,不再綁定獨(dú)立組件。IAppFunctionService(system_server → 目標(biāo)應(yīng)用,oneway)oneway interface IAppFunctionService { void executeAppFunction( in ExecuteAppFunctionRequest request, in String callingPackage, in android.content.pm.SigningInfo callingPackageSigningInfo, in ICancellationCallback cancellationCallback, in IExecuteAppFunctionCallback callback); }oneway修飾至關(guān)重要:system_server 不會(huì)阻塞等待目標(biāo)應(yīng)用執(zhí)行完成,結(jié)果全部經(jīng)由IExecuteAppFunctionCallback回調(diào)返回。51.2.6 目標(biāo)端:AppFunctionService目標(biāo)應(yīng)用繼承AppFunctionService,實(shí)現(xiàn)唯一抽象方法:@MainThread public abstract void onExecuteFunction( @NonNull ExecuteAppFunctionRequest request, @NonNull String callingPackage, @NonNull SigningInfo callingPackageSigningInfo, @NonNull CancellationSignal cancellationSignal, @NonNull OutcomeReceiverExecuteAppFunctionResponse, AppFunctionException callback);服務(wù)內(nèi)部做調(diào)用者校驗(yàn):僅擁有BIND_APP_FUNCTION_SERVICE權(quán)限的 system_server 可以調(diào)用。if (context.checkCallingPermission(BIND_APP_FUNCTION_SERVICE) == PERMISSION_DENIED) { throw new SecurityException("Can only be called by the system server."); }Manifest 聲明示例,必須指定綁定權(quán)限:service android:name=".YourService" android:permission="android.permission.BIND_APP_FUNCTION_SERVICE" intent-filter action android:name="android.app.appfunctions.AppFunctionService" / /intent-filter /service51.2.7 請(qǐng)求與響應(yīng)序列化格式ExecuteAppFunctionRequest與ExecuteAppFunctionResponse均使用 AppSearch 的GenericDocument作為參數(shù)載體。該設(shè)計(jì)使函數(shù)參數(shù)可以用 Schema 描述,而 AppSearch 原生支持索引與查詢?cè)?Schema。請(qǐng)求結(jié)構(gòu)體:public final class ExecuteAppFunctionRequest implements Parcelable { @NonNull private final String mTargetPackageName; @NonNull private final String mFunctionIdentifier; @NonNull private final Bundle mExtras; @NonNull private final GenericDocumentWrapper mParameters; @Nullable private final AppInteractionAttribution mAttribution;響應(yīng)結(jié)構(gòu)體:public final class ExecuteAppFunctionResponse implements Parcelable { public static final String PROPERTY_RETURN_VALUE = "androidAppfunctionsReturnValue"; @NonNull private final GenericDocumentWrapper mResultDocumentWrapper; @NonNull private final Bundle mExtras; @NonNull private final ListAppFunctionUriGrant mUriGrants;返回值存放在結(jié)果GenericDocument的PROPERTY_RETURN_VALUE鍵。Jetpack AppFunction SDK 提供強(qiáng)類型封裝,負(fù)責(zé)打包、解析該文檔。51.2.8 歸因與交互日志每一次執(zhí)行可以攜帶AppInteractionAttribution,描述觸發(fā)本次調(diào)用的交互來源。Android17 將該類型從 appfunctions 包提升至android.app包,供整個(gè)應(yīng)用交互 API 復(fù)用,開關(guān)標(biāo)記為FLAG_ENABLE_APP_INTERACTION_API。public static final int INTERACTION_TYPE_OTHER = 0; // 需要自定義字符串 public static final int INTERACTION_TYPE_USER_QUERY = 1; public static final int INTERACTION_TYPE_USER_SCHEDULED = 2;歸因包含交互類型、可選自定義類型字符串(類型為INTERACTION_TYPE_OTHER時(shí)使用)、可選交互 Uri,指向原始上下文。隱私 UI 依靠該信息向用戶解釋函數(shù)執(zhí)行緣由。Android17 不會(huì)持久化每次調(diào)用的歷史數(shù)據(jù)庫,而是把每一次執(zhí)行寫入平臺(tái) metrics 流水線 statsd。system_server 中的AppFunctionsLoggerWrapper運(yùn)行在共享后臺(tái)執(zhí)行器,為每一次成功或失敗輸出結(jié)構(gòu)化事件,歸一化處理歸因常量并標(biāo)記函數(shù)類型。static final int FUNCTION_TYPE_UNSPECIFIED = 0; static final int FUNCTION_TYPE_STATIC = 1; // AppFunctionService實(shí)現(xiàn) static final int FUNCTION_TYPE_DYNAMIC_GLOBAL = 2; // registerAppFunction(Service/全局) static final int FUNCTION_TYPE_DYNAMIC_ACTIVITY = 3;// registerAppFunction(Activity作用域) void logAppFunctionSuccess( ExecuteAppFunctionAidlRequest request, ExecuteAppFunctionResponse response, int callingUid, long executionStartTimeMillis, @AppFunctionMetadata.AppFunctionType int appFunctionType) { ... }日志事件記錄調(diào)用 UID、目標(biāo)包、請(qǐng)求中提取的交互類型、函數(shù)類型(靜態(tài) / 動(dòng)態(tài)、全局 / Activity 域)、響應(yīng)碼,以及綁定服務(wù)完成之后統(tǒng)計(jì)的執(zhí)行耗時(shí)。51.2.9 錯(cuò)誤處理AppFunctionException定義了分類錯(cuò)誤碼體系:// 請(qǐng)求類錯(cuò)誤 1000?1999 public static final int ERROR_DENIED = 1000; public static final int ERROR_INVALID_ARGUMENT = 1001; public static final int ERROR_DISABLED = 1002; public static final int ERROR_FUNCTION_NOT_FOUND = 1003; // 系統(tǒng)類錯(cuò)誤 2000?2999 public static final int ERROR_SYSTEM_ERROR = 2000; public static final int ERROR_CANCELLED = 2001; public static final int ERROR_ENTERPRISE_POLICY_DISALLOWED = 2002; // 應(yīng)用類錯(cuò)誤 3000?3999 public static final int ERROR_APP_UNKNOWN_ERROR = 3000;getErrorCategory()將錯(cuò)誤碼區(qū)間映射為錯(cuò)誤分類:public int getErrorCategory() { if (mErrorCode = 1000 mErrorCode 2000) return ERROR_CATEGORY_REQUEST_ERROR; if (mErrorCode = 2000 mErrorCode 3000) return ERROR_CATEGORY_SYSTEM; if (mErrorCode = 3000 mErrorCode 4000) return ERROR_CATEGORY_APP; return ERROR_CATEGORY_UNKNOWN; }51.2.10 System Server 實(shí)現(xiàn)薄的SystemService:AppFunctionManagerService.java,負(fù)責(zé)發(fā)布 Binder 服務(wù)到Context.APP_FUNCTION_SERVICE,轉(zhuǎn)發(fā)用戶生命周期。業(yè)務(wù)邏輯主體在AppFunctionManagerServiceImpl,繼承IAppFunctionManager.Stub,協(xié)調(diào)各個(gè)協(xié)作類。public class AppFunctionManagerServiceImpl extends IAppFunctionManager.Stub { private final RemoteServiceCallerIAppFunctionService mRemoteServiceCaller; private final CallerValidator mCallerValidator; private final AppFunctionsLoggerWrapper mLoggerWrapper; private final IUriGrantsManager mUriGrantsManager; private final UriGrantsManagerInternal mUriGrantsManagerInternal; private final MultiUserDynamicAppFunctionRegistry mDynamicAppFunctionRegistry; private final AppFunctionMetadataReader mAppFunctionMetadataReader; private final AppFunctionMetadataObserver mAppFunctionMetadataObserver; private final VisibilityHelper mVisibilityHelper; private final ActivityTaskManagerInternal mActivityTaskManagerInternal; // 訪問校驗(yàn)委托給權(quán)限子系統(tǒng) private final AppFunctionAccessServiceInterface mAppFunctionAccessService; ...關(guān)鍵支撐類說明:類名職責(zé)RemoteServiceCallerImpl綁定目標(biāo)AppFunctionService,管理連接生命周期CallerValidatorImpl強(qiáng)制校驗(yàn)EXECUTE_APP_FUNCTIONS/EXECUTE_APP_FUNCTIONS_SYSTEM權(quán)限,校驗(yàn)白名單MetadataSyncAdapter應(yīng)用包變更時(shí),同步靜態(tài)函數(shù)元數(shù)據(jù)至 AppSearchAppFunctionPackageMonitor監(jiān)聽?wèi)?yīng)用安裝 / 更新 / 卸載事件MultiUserDynamicAppFunctionRegistry保存每個(gè)用戶下registerAppFunction運(yùn)行時(shí)注冊(cè)項(xiàng)AppFunctionMetadataReader讀取靜態(tài)(AppSearch)與動(dòng)態(tài)元數(shù)據(jù),用于發(fā)現(xiàn)與狀態(tài)查詢AppFunctionMetadataObserver基于 AppSearch 變更事件驅(qū)動(dòng)observeAppFunctions回調(diào)SystemAppFunctionAllowlistReader通過AllowlistManager解析簽名代理白名單AppFunctionsLoggerWrapper為每一次執(zhí)行輸出 statsd 埋點(diǎn)事件AppFunctionAccessService(權(quán)限子系統(tǒng))持久化(代理,目標(biāo))訪問狀態(tài)與標(biāo)志位51.2.11 通過 AppSearch 實(shí)現(xiàn)函數(shù)發(fā)現(xiàn)應(yīng)用安裝、更新或設(shè)備開機(jī)時(shí),MetadataSyncAdapter從目標(biāo)應(yīng)用AppFunctionService提取函數(shù)元數(shù)據(jù),作為AppFunctionStaticMetadata文檔索引存入 AppSearch。代理應(yīng)用通過查詢 AppSearch 完成函數(shù)發(fā)現(xiàn)。51.2.12 SafeOneTimeExecuteAppFunctionCallback關(guān)鍵防御封裝,保證回調(diào)有且僅有一次被交付。public class SafeOneTimeExecuteAppFunctionCallback { private final AtomicBoolean mOnResultCalled = new AtomicBoolean(false); @NonNull private final IExecuteAppFunctionCallback mCallback; @Nullable private final CompletionCallback mCompletionCallback; @Nullable private final BeforeCompletionCallback mBeforeCompletionCallback; private final AtomicLong mExecutionStartTimeAfterBindMillis = new AtomicLong(); public void onResult(@NonNull ExecuteAppFunctionResponse result) { if (!mOnResultCalled.compareAndSet(false, true)) { Log.w(TAG, "Ignore subsequent calls to onResult/onError()"); return; } try { if (mBeforeCompletionCallback != null) { mBeforeCompletionCallback.beforeOnSuccess(result); } mCallback.onSuccess(result); if (mCompletionCallback != null) { mCompletionCallback.finalizeOnSuccess( result, mExecutionStartTimeAfterBindMillis.get()); } } catch (RemoteException ex) { Log.w(TAG, "Failed to invoke the callback", ex); } } public void onError(@NonNull AppFunctionException error) { if (!mOnResultCalled.compareAndSet(false, true)) { Log.w(TAG, "Ignore subsequent calls to onResult/onError()"); return; } try { mCallback.onError(error); if (mCompletionCallback != null) { mCompletionCallback.finalizeOnError( error, mExecutionStartTimeAfterBindMillis.get()); } } catch (RemoteException ex) { Log.w(TAG, "Failed to invoke the callback", ex); } }該設(shè)計(jì)模式必要性:目標(biāo)應(yīng)用屬于第三方代碼,可能錯(cuò)誤多次調(diào)用回調(diào)。AtomicBoolean.compareAndSet()保證僅第一次調(diào)用生效。捕獲RemoteException:如果回調(diào)進(jìn)程在結(jié)果返回前已死亡,異常僅打日志,不會(huì)崩潰 system_server。完成鉤子:BeforeCompletionCallback與CompletionCallback允許 system_server 在回調(diào)交付前后執(zhí)行附加邏輯(埋點(diǎn)日志、URI 授權(quán)、訪問歷史記錄)。public interface CompletionCallback { void finalizeOnSuccess( ExecuteAppFunctionResponse result, long executionStartTimeMillis); void finalizeOnError( AppFunctionException error, long executionStartTimeMillis); } public interface BeforeCompletionCallback { void beforeOnSuccess(ExecuteAppFunctionResponse result); }耗時(shí)統(tǒng)計(jì):mExecutionStartTimeAfterBindMillis記錄服務(wù)綁定完成之后的執(zhí)行開始時(shí)刻,區(qū)分綁定開銷與真正業(yè)務(wù)執(zhí)行耗時(shí)。禁用機(jī)制:提供disable(),請(qǐng)求被取消或超時(shí)時(shí)阻止后續(xù)回調(diào)交付。51.2.13 executeAppFunction 實(shí)現(xiàn)深度解析system_server 的executeAppFunction是整個(gè)框架最核心路徑,逐行解析從 AIDL 入口到綁定目標(biāo)服務(wù)的完整鏈路。步驟 1:入口與初始校驗(yàn)@Override public ICancellationSignal executeAppFunction( @NonNull ExecuteAppFunctionAidlRequest requestInternal, @NonNull IExecuteAppFunctionCallback executeAppFunctionCallback) { int callingUid = Binder.getCallingUid(); int callingPid = Binder.getCallingPid(); final SafeOneTimeExecuteAppFunctionCallback safeExecuteAppFunctionCallback = initializeSafeExecuteAppFunctionCallback( requestInternal, executeAppFunctionCallback, callingUid); String validatedCallingPackage; try { validatedCallingPackage = mCallerValidator.validateCallingPackage(requestInternal.getCallingPackage()); mCallerValidator.verifyTargetUserHandle( requestInternal.getUserHandle(), validatedCallingPackage); } catch (SecurityException exception) { safeExecuteAppFunctionCallback.onError( new AppFunctionException( AppFunctionException.ERROR_DENIED, exception.getMessage())); return null; }SafeOneTimeExecuteAppFunctionCallback包裝,保證無論目標(biāo)應(yīng)用多次應(yīng)答還是崩潰,只返回一次成功 / 錯(cuò)誤。步驟 2:線程池異步執(zhí)行,不阻塞 Binder 線程ICancellationSignal localCancelTransport = CancellationSignal.createTransport(); THREAD_POOL_EXECUTOR.execute( () - { try { executeAppFunctionInternal( requestInternal, callingUid, callingPid, localCancelTransport, safeExecuteAppFunctionCallback, executeAppFunctionCallback.asBinder()); } catch (Exception e) { safeExecuteAppFunctionCallback.onError( mapExceptionToExecuteAppFunctionResponse(e)); } }); return localCancelTransport; }任務(wù)提交至THREAD_POOL_EXECUTOR,避免占用 Binder 線程池。步驟 3:權(quán)限與狀態(tài)基礎(chǔ)校驗(yàn)(工作線程)@WorkerThread private void executeAppFunctionInternal(...) { // 企業(yè)策略校驗(yàn) if (!mCallerValidator.verifyEnterprisePolicyIsAllowed(callingUser, targetUser)) { safeExecuteAppFunctionCallback.onError( new AppFunctionException( AppFunctionException.ERROR_ENTERPRISE_POLICY_DISALLOWED, ...)); return; } // 目標(biāo)包名校驗(yàn)非空 if (TextUtils.isEmpty(targetPackageName)) { safeExecuteAppFunctionCallback.onError( new AppFunctionException( AppFunctionException.ERROR_INVALID_ARGUMENT, ...)); return; }步驟 4:鏈?zhǔn)?Future 完成權(quán)限校驗(yàn) + AppSearch 讀取啟用狀態(tài)實(shí)現(xiàn)使用AndroidFuture.thenCompose()做非阻塞權(quán)限校驗(yàn),緊接著查詢 AppSearch 獲取函數(shù)啟用狀態(tài)。mCallerValidator .verifyCallerCanExecuteAppFunction( callingUid, callingPid, targetUser, requestInternal.getCallingPackage(), targetPackageName, requestInternal.getClientRequest().getFunctionIdentifier()) .thenCompose(canExecuteResult - { if (canExecuteResult == CAN_EXECUTE_APP_FUNCTIONS_DENIED) { return AndroidFuture.failedFuture( new SecurityException("Caller does not have permission")); } return isAppFunctionEnabled( functionIdentifier, targetPackageName, getAppSearchManagerAsUser(userHandle), THREAD_POOL_EXECUTOR) .thenApply(isEnabled - { if (!isEnabled) { throw new DisabledAppFunctionException("Disabled"); } return canExecuteResult; }); })步驟 5:服務(wù)解析與綁定.thenAccept(canExecuteResult - { int bindFlags = Context.BIND_AUTO_CREATE; if (canExecuteResult == CAN_EXECUTE_APP_FUNCTIONS_ALLOWED_HAS_PERMISSION) { bindFlags |= Context.BIND_FOREGROUND_SERVICE; } Intent serviceIntent = mInternalServiceHelper.resolveAppFunctionService( targetPackageName, targetUser); // 授予隱式可見性,允許目標(biāo)看到調(diào)用方 mPackageManagerInternal.grantImplicitAccess( grantRecipientUserId, serviceIntent, grantRecipientAppId, callingUid, /* direct= */ true); bindAppFunctionServiceUnchecked( requestInternal, serviceIntent, targetUser, localCancelTransport, safeExecuteAppFunctionCallback, bindFlags, callerBinder, callingUid); })關(guān)鍵點(diǎn):調(diào)用方具備EXECUTE_APP_FUNCTIONS權(quán)限時(shí),使用BIND_FOREGROUND_SERVICE提升目標(biāo)服務(wù)進(jìn)程優(yōu)先級(jí)。自調(diào)用(同一包名)不會(huì)獲得該優(yōu)先級(jí)提升。51.2.14 RemoteServiceCaller 模式RemoteServiceCallerImpl實(shí)現(xiàn)一次性 Service 綁定模式:public class RemoteServiceCallerImplT implements RemoteServiceCallerT { public boolean runServiceCall( Intent intent, int bindFlags, UserHandle userHandle, long cancellationTimeoutMillis, CancellationSignal cancellationSignal, RunServiceCallCallbackT callback, IBinder callerBinder) { OneOffServiceConnection serviceConnection = new OneOffServiceConnection(intent, bindFlags, userHandle, cancellationTimeoutMillis, cancellationSignal, callback, callerBinder); return serviceConnection.bindAndRun(); }OneOffServiceConnection是自定義ServiceConnection,行為:調(diào)用Context.bindServiceAsUser()連接目標(biāo)服務(wù)設(shè)置取消監(jiān)聽器,超時(shí)后執(zhí)行 unbind監(jiān)聽調(diào)用方 Binder 死亡,調(diào)用方進(jìn)程死亡則自動(dòng)取消回調(diào)完成后自動(dòng)解綁private class OneOffServiceConnection implements ServiceConnection, ServiceUsageCompleteListener { public boolean bindAndRun() { boolean bindServiceResult = mContext.bindServiceAsUser(mIntent, this, mFlags, mUserHandle); if (bindServiceResult) { mCancellationSignal.setOnCancelListener(() - { mCallback.onCancelled(); mHandler.postDelayed(mCancellationTimeoutRunnable, mCancellationTimeoutMillis); }); mDirectServiceVulture = () - { Slog.w(TAG, "Caller process onDeath signal received"); mCancellationSignal.cancel(); }; mCallerBinder.linkToDeath(mDirectServiceVulture, 0); } return bindServiceResult; }該模式保證資源一定被清理,無論調(diào)用方崩潰、目標(biāo)應(yīng)用崩潰或者用戶主動(dòng)取消。51.2.15 多用戶支持實(shí)現(xiàn)完整支持多用戶。每個(gè)用戶擁有:獨(dú)立 AppSearch 數(shù)據(jù)庫,保存靜態(tài)函數(shù)元數(shù)據(jù)獨(dú)立PackageMonitor監(jiān)聽包變更MultiUserDynamicAppFunctionRegistry中獨(dú)立分片保存運(yùn)行時(shí)注冊(cè)項(xiàng)權(quán)限子系統(tǒng)持久化獨(dú)立的(代理,目標(biāo))訪問狀態(tài)與標(biāo)志位public void onUserUnlocked(TargetUser user) { if (enableDynamicAppFunctions()) { mAppFunctionMetadataObserver.registerAppSearchObserverForUser(user); } else { registerAppSearchObserver(user); } trySyncRuntimeMetadata(user.getUserHandle(), ...); PackageMonitor pkgMonitorForUser = AppFunctionPackageMonitor.registerPackageMonitorForUser( mContext, user, mAppFunctionMetadataObserver); mPackageMonitors.append(user.getUserIdentifier(), pkgMonitorForUser); mDynamicAppFunctionRegistry.onUserUnlocked(user, ...); } public void onUserStopping(@NonNull TargetUser user) { if (enableDynamicAppFunctions()) { mAppFunctionMetadataObserver.unregisterAppSearchObserverForUser(user); } else { MetadataSyncPerUser.removeUserSyncAdapter(user.getUserHandle()); } mPackageMonitors.get(user.getUserIdentifier()).unregister(); mPackageMonitors.delete(user.getUserIdentifier()); } public void onUserStopped(@NonNull TargetUser user) { mDynamicAppFunctionRegistry.onUserStopped(user); }動(dòng)態(tài)函數(shù)標(biāo)記開啟時(shí),每個(gè)用戶的 AppSearch 觀察者由AppFunctionMetadataObserver持有,變更事件同時(shí)分發(fā)給內(nèi)部元數(shù)據(jù)緩存以及客戶端observeAppFunctions回調(diào)。運(yùn)行時(shí)注冊(cè)表以 userId 為 key;當(dāng)用戶停止,該用戶下全部注冊(cè)項(xiàng)被銷毀。51.2.16 代理白名單架構(gòu)Android17 代理白名單不再是 DeviceConfig 與 Settings.Secure 字符串拼接,改用平臺(tái)AllowlistManager,白名單 ID 為ALLOWLIST_ID_APP_FUNCTION。輸入簽名代理包,返回該代理可訪問的目標(biāo)包集合。AppFunctions 服務(wù)通過SystemAppFunctionAllowlistReader消費(fèi)該能力。讀取器將代理最新簽名證書哈希封裝為SignedPackage,向AllowlistManager查詢合法目標(biāo)包;查詢結(jié)果放入 LruCache 緩存,相同代理重復(fù)執(zhí)行可省去一次 IPC。@Override public CompletableFutureBoolean isAllowlisted( String agentPackageName, String targetPackageName, int userId) { if (agentPackageName.equals(targetPackageName)) { return AndroidFuture.completedFuture(true); // 自身函數(shù)永遠(yuǎn)允許 } SignedPackage agentSignedPackage = new SignedPackage(agentPackageName, /* certificate digest */ ...); maybeStartAllowlistListener(); return getValidTargetPackages(agentSignedPackage) .thenApply(allowlistTargets - allowlistTargets.contains(WILDCARD_PACKAGE_NAME) || allowlistTargets.contains(targetPackageName)); }三條關(guān)鍵行為:自訪問隱式放行:代理與目標(biāo)包相同,應(yīng)用永遠(yuǎn)可以調(diào)用自身函數(shù)。通配符目標(biāo):白名單配置通配符包名,代理可訪問全部目標(biāo)。變更監(jiān)聽:首次使用注冊(cè)O(shè)nAllowlistChangedListener;白名單更新時(shí)緩存自動(dòng)失效,不再只在開機(jī)階段讀取配置字符串。51.2.17 AppFunction 響應(yīng)中的 URI 授權(quán)當(dāng)目標(biāo)應(yīng)用在響應(yīng)中返回 content URI,框架可以為調(diào)用代理授予臨時(shí) URI 權(quán)限。private final IUriGrantsManager mUriGrantsManager; private final UriGrantsManagerInternal mUriGrantsManagerInternal; private final IBinder mPermissionOwner; // 構(gòu)造函數(shù)中初始化 mPermissionOwner = mUriGrantsManagerInternal.newUriPermissionOwner("appfunctions");響應(yīng)中的AppFunctionUriGrant指明需要向代理授予哪些 URI。授權(quán)經(jīng)由mUriGrantsManager.grantUriPermissionFromOwner完成,綁定到 AppFunctions 專屬 permission owner。權(quán)限有效期直到 owner 釋放或者設(shè)備重啟。51.2.18 Shell 命令支持服務(wù)實(shí)現(xiàn)onShellCommand(),用于開發(fā)者調(diào)試。@Override public void onShellCommand( FileDescriptor in, FileDescriptor out, FileDescriptor err, @NonNull String[] args, ShellCallback callback, @NonNull ResultReceiver resultReceiver) { new AppFunctionManagerServiceShellCommand(mContext, this) .exec(this, in, out, err, args, callback, resultReceiver); }adb 命令:adb shell cmd app_function51.2.19 服務(wù)啟動(dòng)與生命周期本框架屬于SystemService。AppFunctionManagerService.onStart(),當(dāng)AppFunctionManagerConfiguration.isSupported(context)為 true 時(shí),把 Binder 服務(wù)發(fā)布到Context.APP_FUNCTION_SERVICE;開啟 App Interaction API 標(biāo)記時(shí),額外發(fā)布本地服務(wù)AppInteractionService。@Override public void onStart() { if (AppFunctionManagerConfiguration.isSupported(getContext())) { publishBinderService(Context.APP_FUNCTION_SERVICE, mServiceImpl); } if (Flags.enableAppInteractionApi()) { publishLocalService(AppInte
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
大香蕉520| 操逼福利视频| 婷婷久月| AV性爱在线| 激情五月综合网| 国产这里只有精品| 五月激情婷婷丁香天堂| 欧美在线视频99| 免费无码毛片一区二区A片| 九九热这里有精品23| 国产激情视频在线观看| 婷婷久久亚洲| 五月婷婷与六月丁香图片激情| 色色网站| 色婷婷狠狠18| 丁香六月天婷婷色| 无码色色色色色| 青草视频在线播放| 玖玖爱综合网| 丁香色五月婷婷91桃色| 色婷婷五月六月丁香综合视频| 91精品激情9| 日本色狠狠| 五月婷婷久久综合| 狠狠爱五月婷婷| 人人摸人人干| 亚洲成人一区| 久婷婷色| 97色色色| 噜噜国产| 五月婷婷开心丁香| 九九婷婷五月天影视| 久啪欧美| 欧美人人草草| 五月四色激情| 亚洲亚洲人成综合网络| 伊人久久婷婷| 日日天天干| 丁香六月激情| 亚洲激情免费视频观看| 六月丁香激情婷婷| 五月丁香花免费视频| 青青热久精品视频在线观看| 婷婷导航| 婷婷九月激情| 五月婷婷狠狠干| 人人干天天操五月丁香| 婷婷的五月天另类视频| 大香蕉院线| 色丁香五月婷婷| 91精品婷婷国产综合| 99riav 亚洲| 激情久久综合| 99精品久久| 九月色婷婷综合| 婷婷综合网伊人| 欧洲婷婷五月天| 香蕉久久国产av一区二区| 百度4399有码精品V在线观看| 欧美性猛交AAAA片黑人 | 色九亚洲| 99热日韩| 91男同视频| 丁香婷婷狠狠97| 丰满女老板BD高清A片| 夜夜撸夜夜骑| 五月天综合网| 亚洲12p| 亚洲性爱AV在线| 成人精品视频99在线观看免费| 亚洲日韩乱码一区二区三区四区 | 五月婷婷丁香狠狠撸久久| 五月天激情综合网俺也去| 婷婷综合五月天| 9色在线视频精品观看| 九九热123| 操人91| 丁香五月天啪啪| 激情综合激情综合| 五月色网| 狠狠色丁香久久婷婷综合五月| 婷婷丁香婷婷97| 影音先锋91网站在线观看| 五月婷婷综合天天操| AV在线不卡播放| Av免费网站在线| 97婷婷五月| 丁香激情五月| 国产在线6| 久久精品爱爱| 婷婷.com| 九热视频| 91AV视频| 免费视频舔| 婷婷第六色| 亚洲性爱区无码区| 人人爱国产| 99热网站| 99热精品99| 亚洲天堂啪啪| 开心婷婷五月花| 五月天精品视频| 婷婷丁香色五月| 韩日另类| 激情综合综合综合| 91婷婷丁香| 欧美性生交XXXXX无码小说| www.91五月| 99啪啪网| 婷婷色色婷婷| 影音先锋男人AV资源站| 永久思思热在线| 俺去也在线www色官网| 亚洲精品色| www.minyis.com【JT】实力收量可预付QQ2101460746 | 99ri视频| 日本色天堂| 激情久久久久| 五月丁香激情四射| 天堂五月婷婷| 婷婷丁香五月网| 综合天堂AV久久久久久久| 中文字幕,综合,91| 久久人妻精品| 久久九九国产| 日韩99视频| 五月婷婷丁香91| 久久色五月天| 激情 婷婷| 婷婷久久婷婷色五月| 99热6这里只有精品6| 超碰免费成人| 秋霞网在线免费基地五月婷婷丁香| 日韩a热| www.婷婷五月天| 色吧网91| 五月丁香成人视频| 草草影院爱爱| 婷婷五月天日本无码| 色五月综合| 亚洲色图五月丁香| 国产99久久久| 五月婷婷六月丁香免费| 久99久视频| 亚洲中文字幕翔田千里| 天天操天天操天天操天天操天天操天天操天天操天天操天天操 | 五月婷婷激清网| 夜夜穞天天穞狠狠穞AV美女按摩| 91九色丨国产丨爆乳| 深爱五月中文字幕| 九月停停| 五月丁香综合中文| 99这里有精品视频3| 久久色五月天综合网| 日韩ww| 99久久思思| 婷婷色在线| 在线观看欧美3区| 五月丁香婷婷无码A∨| 99免费在线| 久热91| 久色大| 综合久久五月| 激情小说婷婷五月| 超碰在线观看99| 午夜丁香| 色婷婷香蕉丁丁网| 丁香99| 日本VA视频| 五月香蕉网| 色婷婷丁香特级性爱视频| 久久99国产综合精品免费 | 婷婷五月天六点丁香五月| 久久3级片| 九九無妻| 人人干99| 中文字幕无码人妻少妇免费视频| 色五月激情婷婷| 五月天久久激情| 丁香五月天.com| 久草五月| 欧美黑人巨大性生话| 91dy.av| 91在线精品一区二区| 播五月丁香三月婷婷| 色婷婷先锋| 99爱这里只有精品免费视频| 婷婷五月天在线观看免费 | 开心丁五月| 操B无码视频国语| 五月激情综合婷婷| 九月性爱网| 五月天丁香综合久久国产| 九九香蕉网| 亚洲第一成人无码A片| 日韩五月丁香| 亚洲综合色丁香五月天| 婷婷丁香熟妇综合网| 91chinese在线| 五月天激情无码| 啪啪黄页网| 91操人视频| 丁香五月亚洲天堂| 婷婷色五月综合丁香| 天天肏天天舔AV| 五月婷婷激情网| 国产99视频永久免费| 日本天堂免费99| 九九热最新| 丁香婷婷五月天在线视频| 色5月婷婷| 精品香蕉99久久久久网站| 激情五月天社区| 婷婷六月色丁香视频在线观看| 五月婷婷 自拍| 婷婷五月天av| 99爱在线免费视频| 99热这里只有精品一区| 亚洲第一色网站| 婷婷五月天午夜激情影院| 97人人超| 天天日天天舔| 综合色色网| 天天操屄网| 人人色人人摸人人看| 超碰国产AV| 思思re最新视频| 久久久免费精彩视频| 直接看的AV| 天天干-天天日| 色噜噜狠狠色综合AV兰草影视| 婷婷玖玖丁香| 色五月丁香91| 久99婷婷色综合| 99色网站| 激情小说五月天| 99九九在线精品热动漫| 热99只有里视频| 狠狠五月激情在线| 婷婷五月花免费视频在线| 五月婷六月| 国产精品扒开腿做爽爽爽A片唱戏| 91成人看片| 狠狠操狠狠操| 久9免费视频| 开心激情播播五月天| 婷婷五月情色| 五月婷婷五月天天| 97五月天婷婷| 99无码黄色视频| 丁香五月激情性色郤| 五月激情综合激情五月| 丁香成人五月天| 色欲九区| 狠狠看狠狠| 秋霞电影一级黄| 99综合在线| 狠狠干综合网| www.久久| 五月情综合| 午夜理论片最新午夜理论剧| 欧美三级A做爰在线观看| 久超超碰| 99热精品观看| 色亚洲色宗合| 亚洲激情 久久| 成人av观看| 丁香婷婷五月天成人| 玖玖在线视频| 99热这里只有精| 久久精品婷婷| 五月在线| 天天拍天天操| 久久婷婷视频| 黑人糟蹋人妻HD中文字幕| 97碰碰在线看视频免费| 999婷婷综合| 婷婷五月天激情在线观看| 日韩色五月| 蜜乳人妻一区二区三区| 五月婷婷国产| 日本99色| 婷婷欧美综合| 日本妈妈乱| 91丨九色丨43老版熟女| 色婷婷XXXXX| 久久色天堂| 91久久久久久久久久| 性色综合网| 无码字幕中文| 99热 在线播放| 91高潮喷水久久久久久久久| 99热亚州综合| 日本色色网站| 99久久婷婷国产综合| 激情六月丁香| aaaaaa片| 婷婷激情五月综合丁香社| 五月开心啪啪| 丁香婷婷五月天在线视频| 噜噜吧天天爱| 婷婷激情五月| 中文字幕成人网站| 青青草网武则天| 色五月婷婷伊人| 五月天基地| 99综合一区| 大香蕉综合| 6月丁香婷婷| 五月婷婷黄色| 婷婷五月丁香久久| 美欧成人视频| 人人摸人人干| 久久99免费视频网站| 婷婷丁香91| 婷婷免费无马| 五月天激情网址| 人人干AV| 亚洲最大五月六月丁香婷婷| 天天爱综合网| 色综合五月| 少妇高潮呻吟A片免费看软件| 狠狠色综合图片| 午夜丁香 婷婷| 国产精品久久..4399| 色色色精品无码区| 狠狠色狠狠操| 99综合网| 99热99草97| 国产亚洲色婷婷久久99精品91| 婷婷色五月偷拍| 丁香六月天色婷婷| 精品人人操| 99热在线观看| 另类激情四射| 色天天综合成人网| 国产 亚洲 在线| 伊人激情AV一区二区三区| 色99xx| 五月丁香啪啪啪综合网| www.成人婷婷综合| 九九热九九| 99re资源在线视频导航| 久久婷婷人人| 五月婷婷co.m| 日韩婷婷| av一区二区电影免费在线观看| 天天肏在线观看| 性爱电影科技贸易有限公司| 婷婷天堂综合| 在线不卡的视频| 亚洲激情综合网| 亚洲精品五月| 婷婷五月激情中文字幕| 熟妇高潮一区av| 五月婷婷六月综合| 久久婷婷五月激情网站| 九九碰九九爱97| 91聚色综合网| site:minyis.com| 五月丁香六月婷婷激情视频在线观看免费 | 99热这里只有精品4| 色情五月综合婷婷| 色碰干| 国产熟女日日骚五月丁香爱| 婷婷久久久| 婷婷丁香五月社区亚洲| 五月婷婷色丁香| 在线观看的av| 4399高清无码视频| 色五月丁香六月欧美综合| AV九九| WWW.99视频| 人人人人人人人草| 日韩成人AV在线播放| 久久综合婷婷激情| 五月花成人网| 99久久综合| 999激情视频| 久久精品亚洲一级牲爱综合| 婷婷情色开心五月天99| 五月久久噜噜| 色人久久| 天天色综合天天| 五月天婷婷成人网| 久久一级免费黄色片| 深爱激情网婷婷| 一级黄色影片| 内射综合网| 久久久免费精彩视频| 婷婷五月久久| 精品色色网| 五月婷婷激情| 五月色婷婷在线观看| 综合激情在线视频| 91精品人妻少妇无码影院| www夜夜操comwww| www,奇米影视| 欧美英丁香开心快乐六月天网| 天天日天天爽| 性色欲情 网站| 成人av中文字幕| 久久综合综合综合| 亚洲综合五月天婷婷| 操逼视频网址| WWW,婷婷,COM| www.久久色.com| 在线观看玖玖资源免费观看| 欧美在线ee日韩| 久久机热这里只有 | 九九色人| 亚洲五月天婷婷| 级情九色| 婷婷丁香六月天| 婷婷久久综合久| 久久婷婷色| 综合99视频| 99久久精品国产色欲| 日本精品人妻无码77777| 综合xx网| 亚洲av另类在线观看| 天天 青草 丝袜制服 在线| 男妓跪趴把舌头伸进我的嘴巴| 五月天婷婷久久日| 久久五月婷婷综合网| 天天艹天天色| 色色色色色日韩午夜激情 | 色色色综合| 99在线观看这里都是精品| www.婷婷六月天| 99热20| 99精彩视频网站在线| 色色aⅤ網| 天天日日| 婷婷午夜激情| 99热这里只有精品手机在线观看| 丰滿爆乳一区二区三区| 99九九视频| 伦乱天堂| 日韩免费视频| 99视频一区| 色五月天丁香婷婷色| 影音先锋一区| 婷婷黄色五月天在线视频| 91丨九色丨国产| 国产欧洲欧洲精品久久| 久热这里只有精品性色AV| 国产又黄又爽又色的免费| 五月婷婷欲色| 日本免费91| 夜夜撸天天操| 欧美成人精品一区二区| 色婷婷97| 久cao香蕉影院| 综合久久99| 99热欧美| 色婷婷激情视频| 久久婷婷五月综合激情国产 | 玖玖资源站蜜臀| 五月丁香婷婷激情影院欧美| 无码人妻丰满熟妇奶水区码| 激情综合色婷婷啪啪六月天| 开心四月婷婷在线色播播| 色综合网页| 亚洲区视频| 五月丁香久久综合精品| 99自拍视频网站| 老师的粉嫩小又紧水又多A片视频| 久久少妇视频| 欧美天天五月丁香免费观看| 任你干嘛免费视频播放| 亚洲熟妇AV乱码在线观看| 久久538| wwxx日本| 婷婷丁香五月天影院 | 亚洲激情电影五月天色婷婷丁香一起草| 五月婷婷激情在线| 开心五月婷婷| 五月伊人网| 婷婷五月天男人影院色色网| 五月天激情综合首页| 久久蜜臀婷婷| 亚洲无AV在线中文字幕| 99ri在线视频| 色综合色| 夜夜综合色| 欧日美女Va| 久操干| 色婷婷中文| 色五月激情婷婷| 婷婷综合色五月天| 亚洲天堂AAA| 亚州色婷婷| 五月花激情网| www...com黄在线观看| 夜夜爽天天干| 综合久久综合久久| 婷婷五月色播| 五月婷婷激情久久| 丁香社区婷婷五月| 色插综合网| wWwCom夜操wwW| 97日在线视频| 一级无码作爱片| 欧美情色一区| 中文字幕在线免费看线人| 黄网在线播放| 91婷色| 五月婷婷香| 中文字幕 久久9999| 26uuu四色| 99精品久久久久久久婷婷| 欧美三级视频下载| 成人VAV视频在线观看| 五月丁香色停停啪啪啪| 超碰日韩成人| 亚洲国产精品VA在线看黑人| 色综合久久888| 亚洲操人| 丁香色婷婷五月天| 九九热免费| 99ri国产在线| 91偷拍视频| 久久与婷婷| 97碰人人操| www.婷婷五月天.com| 欧美日韩AAA| 丁香五月网在线观看| 五月色情婷婷开心五月色情| 精品无码色欲AV| 色久婷婷网| 日韩99色| 欧美成人网婷婷综合在线| 婷婷五月成人有| 久婷婷五月丁香在线观看| 影音先锋色色色资源色资源色| 久久色情| 色综久久久| 五月亚洲激情| 丁香婷五月| 26uuu91| 亚洲噜色| 五月婷婷av| 99久久五月婷婷| 这里只有精品视频在线| 五月丁香操婷逼| 婷婷久久大香蕉| 五月婷婷之综合激情| 久久这里只有精品热在99| 四色永久成人网站| 色色色九九九五月婷婷| 97婷婷五月激情六月丁香伊人| 亚洲AV无码成人精品电影| 99视频久久久| 97自拍视频在线| 五月丁香色婷婷婷基地| 久久婷婷操| 涩涩涩.com| 综合网亚洲| 9久精品视频| 丁香五月成人| 国产jd1024基地手机看国产| 综合色网站| 99热精品在线| 婷婷五月丁香成人| 99视频这里有精品| 亚洲色网络| 天天色情站| 熟妇天天综合| 精品久久9| 思思久久精品视频| 激情深爱综合网| 婷婷九月综合| 丁香五月花| www一起操在线观看| 久草大| 秋霞电影理论| 91九色视频在线观看| 丁香五月香蕉| 日逼影音先锋AV男人资源站| 婷婷九月| 影音先锋777xfplay色资源网站| 九九99九九99九九99视频网| 爱久久小说下载网| 日本丁香久在线| 五月婷婷偷| 国产VA亚洲VA96| 97色婷| wwwav大香蕉| 激情啪啪五月| 思思精品久久艹| www.久久爱.com| 日本熟妇乱妇熟色A片蜜桃| 91pornav在线| 久久香蕉婷婷五月天| 丁香五月在线播放| 99精品偷自拍| 丁香五月区| 精品成人无码A片观看香草视频| 久久98热re| 精品爱欲五| 色婷婷狠| 综合五月网| 婷婷色影院| 久久五月婷婷视频| 99热大片| 丁香五月婷婷在线| 婷婷成人AV| 天天干天天色天天干| 丁香五月天啪啪| 极品少妇婷婷五月| 精品99爱免费视频在线观看| 99热这里只有精彩| 色婷婷88| 婷婷五月情天| 色五月综合激情网| 思思热思在线精品视频| 丁香六月综合激情| 海外网站专业操老外| 天天cha成人综合网| 老司机日日夜夜青草| 激情久久网| 五月丁香六月婷婷婷婷| 成人国产欧美大片一区| 五月丁香激情综合网| 九九视频在线| 色99超碰| 狠狠干综合网| www.lchjjc.com| www.minyis.com【JT】实力收量可预付TG@LXSPSW8 | 男女啪啪做爰高潮无遮挡| 操操啪| 丁香五月中文字幕色播| 伊人五月天久久| 永久地址 色| 九九九九精品精| 天天做天天爱天天摸| 丁香五月91| 亚洲成人网站在线| 国产在这里只有精品| 啪啪五月婷婷| 天天摸天天日天天舔| 国产精品91抖高| 天天草天天舔| 欧美成人AAA片一区国产精品| 国产永久一二一起草| 久久a热| 亚洲精品亚洲人成人网| 六月婷婷激情图片| 4399在线日本A片| 狠狠干青青草| 日本黄色三级片内射| 色九月激情综合网| 色爽干| 丁香六月毛片| 久久久91精品| 久久黄色片| 高清 码 免费看片短视频| 丁香五月播播| 9 9热这里有精品| 久久综合五月| 丝袜激情网| 国产免费AV网站| 五月婷婷综合激情网| 久久99热这里只有精品| 深爱五月综合网| 欧美成人AAA片一区国产精品| 激情综合激情五月| 狠狠色综合图片| 日韩九九| 日本婷婷在线| 九九热最新| 婷婷五月天成人动漫 | 丁香丁香激情网| 精品国产AV色一区二区深夜久久| 久久久精久人妻| 91丁香婷婷综合久久欧美| 丁香五月六月综合激情| 久久婷婷啪啪视频| 综合五月天| 亚州精品久久久久AV无码| 伊人久久大香| 中文字幕AV在线| 激情综合综合综合| 国产一级黄色影片,| 五月婷婷五月天在线| 亚洲AV综合在线观看| 精品色色| 天天舔日日肏夜夜爽| 丁香六月婷婷社区| 狠狠干综合| 五月天开心色情网| 亚州婷婷五月激情综合| 亚洲激情婷婷| 丁香五月天激情网| 影音先锋一区| 超级碰碰97在线| 天天操综合网| 99热香港| 五月天丁香综合在线| 99热精品中文字幕| 丁香五月天成人| 欧美啪啪9| 99欧美| 思思久热| 久热无码| 91seAV| 亭亭五月色男人| 九九无码视屏| 成人色五月天婷婷| 久久婷婷大香蕉| www.激情| 丁香美女五月天婷婷| 无码一区二区日韩| 色五月婷婷激情基地| 99超级碰免费视频| 涩五月婷婷| 婷婷一本和五月丁香| 午夜丁香综合婷婷| 1024操逼| 99热.com| 久久性爱视频网站| 高清无码一区二区三区四区| 婷婷丁香宗合888| 最近免费中文字幕大全高清大全1| 免费看欧美成人A片无码| 天天草婷婷五月| 色五婷婷| 奇米影视在线视频| 国产成人精品一区二三区熟女在线 | 久久丁香五月天| 免费观看高清无码| 人妻AV中文系列| 91精品久久久久久| 色爱亚洲| 国产26uuu视频| 五月丁香婷婷色| 日韩AV中文字幕在线| 久久精品99国产精品日本| 色婷另类| 99免费在线| 国熟女视频| 激情五月天婷婷直播| 日本三级网址| 色综合女人99| 91狠狠色丁香婷婷综合久久狠丁香综合久久精品 | 五月天丁香网站| 成人视频婷婷| 色婷婷狠狠久久综合五月| 五月丁香色婷婷婷基地| 人妻综合网| 探花搜索结果 - 黄上黄| 激情综合视频| 婷婷91视频| 天天综合色| 天天天天天天操| 久久免费操| 婷婷五月天网| 五月婷婷啪啪| 色香欲综合| 午夜丁香五月天综合| 丁香婷婷五月综合影院| 91dy.av| 五月天欧美 另类小说| 蜜臀av无码久久久久久久久| 蜜臀AV在线成人| 婷婷久久网| 久热9| 激情九月婷婷| 国产亚洲色婷婷久久99精品91| 91丨九色丨熟女|老版| 久re热视频| 超碰高清在线| 4399在线观看免费高清黄色视频| 4399高清无码视频| 超碰在线综合| 99精品在线观看视频| 五月丁香激| 日韩在线视频网站| 久久伊人婷婷| 99热99在线| 99欧美| 韩日在线熟女| 色五月在线| 夜夜做天天爽| 国产精品成人av在线观看春天| 伊人久久五月天| 26uuu另类亚洲欧美日本一| 97婷婷五月天| 欧美色色色色色| 亚洲综合色网| 色爱综合网| 激情欧美五月丁香| 99这里只有精品| 久色精品| 亚洲人成网站999久久久综合| 大香蕉九九操| 91超级碰碰| 成年AAAA色情| 久久婷婷五月天激情唯美| 色五月激情婷婷| 97干视频在线| 狠狠干在线| 99热在线观看| 五月婷婷丁香网| 超碰在线9| 色五月天影视| 热久久66| 这里只有精彩视频| 97操操| 亚洲V国产V欧美V久久久久久| 开心激情站| 久久婷网| 九九成人视频| 99色色网| 亚洲激情AV| 久久婷婷五月综合伊人| 深爱激情综合| 激情综合4月| 五月婷婷日| 婷婷性爱五月天丁香网| 丁香久久综合| 五月婷婷m| 婷婷在线播放| 性高潮久久久久久-九九九九九九九九九九热-成人AV | 色五月丁香总合网| 凹凸操Av| 丁香六月婷婷综合激情欧美| 国产JK精品白丝AV在线观看| 91在线观看www| 9久精品视频| 午夜婷婷五月天在线| 亚洲国产精品VA在线看黑人| 久久99精品视频| 国产特黄色精品一区二区三区精品无广告| 伊人玖玖精品| renre人人操国产超碰在线| 五月天激情图片| 激情综合久久| 色情开心五月| 久久6这里只有精品| 六月丁香六月婷婷欧美| 色狠狠综合| 91啪啪啪啪| 激情综合网,五月| 99精品视频在线观看| 天天日日夜夜| 国产操B视频| 超碰狠狠色| 天天操天天操天天操天天操天天操天天操天天操天天操天天操 | 五月天精品| 色噜久| 综合xx网| 色播婷婷五月天| 91人妻人人操| 久久久久久久综合狠狠综合| 91成人性爱视频| 欧美大片免费播放器| 伊人色综合影院视频| 91精品国产综合久久密臀| 五月天开心激情综合网| 丁香六月婷婷社区| 婷婷五月激情片| 九九人人操| 无码色综合| 亚洲 无码 中文字幕 中出| 另类小说五月天| 欧美毛卡| 免费视频这里只有精品| 欧美性爱五月天| 九九亚洲综合| 久久九九免费视频| 射婷婷中文字幕| 精品婷婷五| 婷婷五月天激情综合| txt五月激情四射网综合俺也来了| 这里只精品| 9999久久久久| 丁香六月婷婷久久高清| 五月婷视屏在线观看| 人人人操 超碰| 天天拍夜夜撸| www.minyis.com【JT】实力收量可预付QQ2101460746 | 激情小说视频图片| 色情婷婷。| 99亚州综合精品成人网| 九月丁香很很色| 六月香五月婷| 99这里有精品| 97成人丁香婷婷| 丁香五月首页| 97色色婷婷五月天| 婷婷久久精品| 亚洲AVDVD| 深爱激情丁香| 丁香五月婷婷高清| 九月丁香五月婷婷| 丁香五月天操B| 五月丁香AV、伊人业余、性色熟妇| 99热| 亚洲丁香五月综合| 久久五月天婷婷| 婷婷欧美激情综合| 色综合五月| 97亚洲色 torrent magnet| 国产精品电影| 久久婷婷影院| 亚洲激情婷婷| 婷婷五月天改成什么了| 狠狠操狠狠爱| 日日爽日日操| 婷婷D区| 五月婷婷色吧!| 性爱激情五月| 丁香五月六月激情久久| 92久久久| 婷婷激情六月| 91碰超| 日本色婷婷| 欧美激情丁香五月| 色婷久久| 亚洲婷婷婷| 五月天丁香婷婷久久九| 亚洲婷婷激情五月天| 欧美日本97| 久9视频免费播放| 9999三级片| 五月丁香六月欧美综合网站| 婷婷五月天视| 综合aV在线| 丁香六月无码播放| 热热99爱爱| 久久综合干| 亚州激情网| 婷婷香草网| 这里精品| 婷婷午夜激情| 婷婷综合网| 米奇影视资源777狠狠色婷婷五月天激情网 | 婷婷五月大香蕉| 丁香五月,开心五月,成人婷婷| 综合激情五月天| 色色婷婷综合网| 国产婷婷久久| 大香蕉网站,大香蕉综合| 婷婷丁香五月av| 国产一二区爆乳_1国产日韩一区二区三-成人AV| 天天天日天天天干| 一级二级色大片| 97色色色| 99热只有这里才是精品| 97操碰在线视频| 婷婷欧美| 99热这里只有免费| 丁香六月激情四射| 天堂成人A片永久免费网站| 色五月婷婷五月丁香五月| 中文字幕激情综合| 色五月五月婷婷| 色婷婷视频综合| AV在线免费播放| 日本人妻伦在线中文字幕| 色综合色色| 99re热精品在线视频| 婷婷香草网| 一级二级色大片| 五月天婷五月天综合网在线观| 亚洲电影中文字幕| 日日干天天爽| 深爱激情网综合| 99无码视频| 性爱技巧五月| 日日综合网| 思思精品热在线| 伊人91| 成片免费观看大全| 婷婷五月天视频| 玖玖精品视频| tingtingjiqingwuyue| 五月丁香综合网| 九九RE视频在线精品| 狠狠xx| 六月婷婷狠狠| 久99热在线观看| 9久热精品在线视频| 五月丁香亭亭操逼| 色爱终和网| 欧美群妇大交乱婬网| 色婷成人狠干| 97caop| www.日日夜夜.com| 思思re99视频在线观看| 成人色色综合| 玖玖爱综合网| 亚洲综合色婷婷文学| 五月天激情婷婷| 色噜噜狠狠色综合日日| 天天综合天天玩夜夜玩天天玩夜夜玩| 玖玖99免费视频| 久久日婷婷| 五月婷丁香| 婷婷丁香成人| 夜夜爽天天干| 色婷婷香蕉丁丁网| 99久久久99久久91熟女| 婷婷色偷拍| 91丨九色丨国产| 图片区 小说区 区 亚洲五月| 天天操无码| 五月激情综合美女久久| 丁香五月98| 日本妈妈乱| 五月丁香六月综合基地| 亚洲视频无| 亚洲成人日韩无码精品| 夜夜爽77777妓女免费下载| 日韩成人网址| 色五月五月天色婷婷色五月| 婷婷色五月综合| 五月丁香婷婷婷婷综合网| 五月婷婷六月丁香激情深爱| 碰超99| wWW九九在线播放| 亲子乱av一区二区三区的| 《亚洲操B久久免费在线观看,亚洲操B久久在线播放》在线播放 - 高清资源 - 97 | 婷婷刺激综合| 欧美婷婷综合| 免费日本aⅴ中文字幕| 日本视频久久| 欧美搡BBBBB摔BBBBB| 99热成人| 激情五月婷| 97精品综合| 狠狠丁香| 人妻人人操| 人妻AV在线观看| 综合99久久天天综合| 六月丁香激情| 婷婷五月天综合在线| 天天五月天综合网址| 亚洲激情综合免费| 亚洲第一色区| 激情五月狠狠| 五月丁香花婷婷玉莉AV| 五月婷婷综合潮喷| 久久九九大香蕉电院| 99热九九在线| 综合六月激情婷婷| 婷婷十月丁香| 夜夜操,天天撸| 情趣视频66| 色综合伊人网| 色噜噜97视频在线观看| 久久五月激情综合| 91操网| 狠狠草狠狠草| 97操操| 精品久久久久成人码免费动漫| 国产真实乱了老女人视频| 亚洲第一成人无码A片| 成人免费黄色短视频| 成人丁香婷婷| 日逼影音先锋AV男人资源站| 婷婷久久婷婷| 99色在线观看视频| 色婷婷导航| av 一区三区四区| www.狠狠狠狠| 丁香五月婷婷欧美成人色图| 五月激情综合美女久久| 色婷婷综合影院| 深夜男女福利刺激影院一区完整| 99精品色| 亚洲妇女熟BBW| 91制片厂久久久国产电影| 黄色毛片精品| 婷婷午夜精品久久久| 看黄的网站18禁| 人妻肉射免费观看| 九九久久网| 超碰色综合| 色婷婷激情| 婷婷的五月天另类视频| 9999热精品| 翔田千里 50岁 无码| 精品无码av丁香五月激情| www激情网| 丁香五月影院| 天天插天天爽| 秋霞少妇AV网站| 婷婷综合偷拍| 五月丁香狠狠爱| 婷婷丁香成人网址| 丁香激情网| 色999五月色| 五月天天综合网色婷婷| 丁香婷婷色色| 婷婷六月色丁香视频在线观看| 深爱婷婷丁香五月激情| 99热偷拍| 无码日本精品XXXXXXXXX | 国产探花一片区| 久久99视频| 深爱激情网噜噜色| 超碰在线观看9| 国产精品国产成人国产三级| 欧美日韩中国| 人人草成人视频| 五月丁香淫淫婷婷婷| 色婷婷综合网站| 九九精品9| 99视频精品| 色婷婷五月天不卡| 激情欧美五月丁香| 99热人人操人人操| 亚洲婷婷五月天在线激情综合网| 日韩色情亚洲五月天婷婷| 91操在线视频| 不卡在线中文字幕无| 五月丁香六月婷婷啪啪| 五月婷婷婷婷婷婷艺术| 五月天色婷婷基地| 伊人网欧美在线男人天堂五月丁香 | www五月天激情com| 婷婷丁香五另类网站| 操B视频在线播放| www.91九色| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇| 亚洲美女网Va| 成人片黄网站色大片免费毛片| 亚洲色激情| 色婷婷五月天小说网| 九月丁香| 一本九九色| 天天色爽| 色婷婷免费观看| 人妻在线观看视频| 99re思思热在线视频| 色色色热热热| 色哟呦av| 亚洲激情亚洲激情| 婷婷激情综合| 亚洲午夜在线视频| 久久久人妻久久久| 99re6久热只有精品6在线直播| 爽tv | 五月婷婷无码| 久色五月丁香视频| 亚洲综合五月天婷婷| 色五月婷婷中文字幕在线观看| AV性爱网| 亚洲一区二区色图-亚洲精品国产精品乱码-成人AV | 日日色综合| 亚洲无码yw| 懂色AⅤ| 专区无日本视频高清8| 99久在线观看| 婷婷五月天视频亚洲| 激情五月黄色| 五月丁香色婷婷伊人| 色欲av伊人久久大香线蕉影院| 9色免费网| 五月天狠狠干| 一点色成人网| 亚洲国产精品成人免费一区久久久在线观看AAAA | 色欲久久99精品久久久久久| 婷婷爱综合| 色五月五月婷婷| 五月婷色色| 99久在线精品99re5热视频| 奇米影视777在线_在线观看午夜_h小视频在线观看_岛国大片 | 亚洲激情97五月天| 免费看欧美成人A片无码| 丁香婷婷人妻| AV电影在线播放| 五月婷婷婷综合网| 激情五月婷婷五月| 9999综合99综合人| 天天干天天射色综合| 婷婷丁香激情五月天色色色| 色婷婷丁香五月在线| 丁香五月久久| 久久香蕉影院| 99热99在线| 97精品自拍| 大香蕉婷婷五月天| 外国碰视频网站97| 玖玖无码中文| 天天搡日日搡aaaaⅩ| 97丁香婷婷| 久99久精品| 五月丁香亭亭操逼| 日本系列_4页_777FP| 91丨九色丨丰满人妖| 台湾无码A片一区二区| 五月丁香亭亭操逼| 久热 91| 99re在线观看| 色色五月婷| 色99视频| 色播五月丁香婷婷| 91人人人人人| 婷婷丁香五月天在线| 久久99久久99www| 狠狠色综合精品视频在线| 大香婷婷| 性色婷婷| 婷婷综合五月| 久久9视频| 青青草深爱激情网| 日本www免费九九| 五月开心深爱激情网| 婷婷五月天丁香激情| 九九re精品视频在线观看| 日韩无码专区| 成人在线日韩| 欧美婷婷五月天综合| 九九色情网五月天| 婷婷综合97| 婷婷五月深情丁香深爱日韩| 一起草AV| 无码人妻一区二区三区免费九色| 五月色婷丁香| 成人五月天丁香婷| 亚洲小视频免费播放| 极品少妇XXXX精品少妇偷拍| 这里只有免费的精品| 免费啪啪啪网站| 婷婷的99视频网站| 日韩人妻无码一区二区| 91se视频| 99综合| 婷婷综合| 91在线就要啪| 性色五月天| 日本久久99| 日产精品一线二线三线芒果| 欧美婷婷成人| 久久婷婷五月天懂色| 中国女人做爰A片| 婷婷五月中文在线视频| 久久久久激情| 202丰满熟女妇大| 五月花综合视频| 久久综合五月天| 色色欧美色色| 丁香狠狠色婷婷| www。88热在线视频免费观看| 91色色色视频| 丁香六月婷婷久久综合| 99精品在线下载| 婷婷五月天激情电影| 天天操夜夜操| 99热这里精品| 色欲人妻综合aaaaaaaa网| 人碰人人人玩91| 亚洲网视屏| 色婷婷丁香中文在线播放| 九九 激情 网| 天天射影院| 五月婷婷日| oVV4WIB3vFi8D| 在线观看欧美| 99丁香五月| 五月丁香狠狠爱| 99操逼|