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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

flutter不支持热更新_Flutter 在安卓上可以实现热更新了

發布時間:2025/3/12 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 flutter不支持热更新_Flutter 在安卓上可以实现热更新了 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文由 句號君 授權投稿
原文鏈接:https://blog.csdn.net/qizewei123/article/details/102963340

Flutter 官方在 GitHub 上聲明是暫時不支持熱更新的,但是在 Flutter 的源碼里,是有一部分預埋的熱更新相關的代碼,并且通過一些我們自己的手段,在Android端是能夠實現動態更新的功能的。

Flutter 產物的探究

不論是創建完全的 Flutter項目,還是 Native以 Moudle的方式集成 Flutter,亦或是 Native以 aar方式集成 ?Flutter,最終 ?Flutter在 Andorid端的 App 都是以 Native項目+ Flutter 的UI產物存在的。所以在這里拆開一個 Flutter在 release模式下編譯后生成 aar包來做分析:

我們關注重點在 assets,jni,libs 這 3 個目錄中,其他的文件都是 Nactive層殼工程的產物。

jni :該目錄下存在文件 libflutter.so,該文件為 Flutter Engine (引擎) 層的 C++實現,提供skia(繪制引擎),Dart,Text(紋理繪制)等支持。

libs:該目錄下存在文件為 flutter.jar,該文件為 Flutter embedding (嵌入) 層的 Java實現,該層提供給 Flutter 許多Native層平臺系統功能的支持,比如創建線程。

assets:該目錄下分為兩部分:

  • flutter_assets 目錄:該目錄下存放Flutter 我們應用層的資源,包括images,font等

  • isolate_snapshot_data,isolate_snapshot_instr,vm_snapshot_data,vm_snapshot_instr 文件:這 4 個文件分別對應 isolate、VM 的數據段和指令段文件,這就是我們自己的 Flutter 代碼的產物了。

  • Flutter 代碼的熱更新

    代碼探究

    在我們的 Native 項目中,會在 FlutterMainActivity 中,通過調用 Flutter 這個類來創建 View:

    flutterView?=?Flutter.createView(this,?getLifecycle(),?route);
    layoutParams?=?new?FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT,
    FrameLayout.LayoutParams.MATCH_PARENT);
    addContentView(flutterView,?layoutParams);

    查看 Flutter 類代碼,發現 Flutter 類主要做了幾件事:

  • 使用 FlutterNative 加載 View,設置路由,使用 lifecycle 綁定生命周期

  • 使用 FlutterMain 初始化,重點關注這里。

  • public?static?FlutterView?createView(@NonNull?final?Activity?activity,?@NonNull?Lifecycle?lifecycle,?String?initialRoute)?{
    FlutterMain.startInitialization(activity.getApplicationContext());
    FlutterMain.ensureInitializationComplete(activity.getApplicationContext(),?(String[])null);
    FlutterNativeView?nativeView?=?new?FlutterNativeView(activity);

    所以,真正初始化的相關代碼是在 FlutterMian 中:

    public?static?void?startInitialization(Context?applicationContext,?FlutterMain.Settings?settings)?{
    ????if?(Looper.myLooper()?!=?Looper.getMainLooper())?{
    ????????throw?new?IllegalStateException("startInitialization?must?be?called?on?the?main?thread");
    ????}?else?if?(sSettings?==?null)?{
    ????????sSettings?=?settings;
    ????????long?initStartTimestampMillis?=?SystemClock.uptimeMillis();
    ????????initConfig(applicationContext);
    ????????initAot(applicationContext);
    ????????initResources(applicationContext);
    ????????System.loadLibrary("flutter");
    ????????long?initTimeMillis?=?SystemClock.uptimeMillis()?-?initStartTimestampMillis;
    ????????nativeRecordStartTimestamp(initTimeMillis);
    ????}
    }

    在 startInitialization 中,主要執行了三個初始化方法 initConfig(applicationContext),initAot(applicationContext),initResources(applicationContext),最后記錄了執行時間。

    在 initConfig 中:

    private?static?void?initConfig(Context?applicationContext)?{
    ????try?{
    ????????Bundle?metadata?=?applicationContext.getPackageManager().getApplicationInfo(applicationContext.getPackageName(),?128).metaData;
    ????????if?(metadata?!=?null)?{
    ????????????sAotSharedLibraryPath?=?metadata.getString(PUBLIC_AOT_AOT_SHARED_LIBRARY_PATH,?"app.so");
    ????????????sAotVmSnapshotData?=?metadata.getString(PUBLIC_AOT_VM_SNAPSHOT_DATA_KEY,?"vm_snapshot_data");
    ????????????sAotVmSnapshotInstr?=?metadata.getString(PUBLIC_AOT_VM_SNAPSHOT_INSTR_KEY,?"vm_snapshot_instr");
    ????????????sAotIsolateSnapshotData?=?metadata.getString(PUBLIC_AOT_ISOLATE_SNAPSHOT_DATA_KEY,?"isolate_snapshot_data");
    ????????????sAotIsolateSnapshotInstr?=?metadata.getString(PUBLIC_AOT_ISOLATE_SNAPSHOT_INSTR_KEY,?"isolate_snapshot_instr");
    ????????????sFlx?=?metadata.getString(PUBLIC_FLX_KEY,?"app.flx");
    ????????????sFlutterAssetsDir?=?metadata.getString(PUBLIC_FLUTTER_ASSETS_DIR_KEY,?"flutter_assets");
    ?????????}
    ????}?catch?(NameNotFoundException?var2)?{
    ????????throw?new?RuntimeException(var2);
    ????}
    }

    在 initResources 中:

    sResourceExtractor?=?new?ResourceExtractor(applicationContext);
    sResourceExtractor.addResource(fromFlutterAssets(sFlx)).addResource(fromFlutterAssets(sAotVmSnapshotData)).addResource(fromFlutterAssets(sAotVmSnapshotInstr)).addResource(fromFlutterAssets(sAotIsolateSnapshotData)).addResource(fromFlutterAssets(sAotIsolateSnapshotInstr)).addResource(fromFlutterAssets("kernel_blob.bin"));
    if?(sIsPrecompiledAsSharedLibrary)?{
    ????sResourceExtractor.addResource(sAotSharedLibraryPath);
    }?else?{
    ????sResourceExtractor.addResource(sAotVmSnapshotData).addResource(sAotVmSnapshotInstr).addResource(sAotIsolateSnapshotData).addResource(sAotIsolateSnapshotInstr);
    }?

    sResourceExtractor.start();

    在 ResourceExtractor 類中,通過名字就能知道這個類是做資源提取的。把 add 的 Flutter 相關文件從 assets 目錄中取出來,該類中 ExtractTask 的 doInBackground 方法中:

    File dataDir = new File(PathUtils.getDataDirectory(ResourceExtractor.this.mContext))

    這句話指定了資源提取的目的地,即 data/data/包名/app_flutter,如下:

    如圖,可以看到該目錄是的訪問權限是可讀可寫,所以理論上,我們只要把自己的 Flutter 產物下載后,從內存 copy 到這里,便能夠實現代碼的動態更新。

    代碼實現

    public?class?FlutterUtils?{

    ????private?static?String?TAG?=?"FlutterUtils.class";
    ????private?static?String?flutterZipName?=?"flutter-code.zip";
    ????private?static?String?fileSuffix?=?".zip";
    ????private?static?String?zipPath?=?Environment.getExternalStorageDirectory().getPath()?+?"/k12/"?+?flutterZipName;
    ????private?static?String?targetDirPath?=?zipPath.replace(fileSuffix,?"");
    ????private?static?String?targetDirDataPath?=?zipPath.replace(fileSuffix,?"/data");

    ????/**
    ?* Flutter 代碼熱更新第一步:?解壓 Flutter 的壓縮文件
    ?*/
    ????public?static?void?unZipFlutterFile()?{
    ????????Log.i(TAG,?"unZipFile:?Start");
    ????????try?{
    ????????????unZipFile(zipPath,?targetDirPath);
    ????????????Log.i(TAG,?"unZipFile:?Finish");
    ????????}?catch?(Exception?e)?{
    ????????????e.printStackTrace();
    ????????}
    ????}

    ????/**
    ?* Flutter 代碼熱更新第二步:?將 Flutter 的相關文件移動到 AppData 的相關目錄,APP啟動時調用
    ?*
    ?*?@param?mContext?獲取?AppData?目錄需要
    ?*/
    ????public?static?void?copyDataToFlutterAssets(Context?mContext)?{
    ????????String?appDataDirPath?=?PathUtils.getDataDirectory(mContext.getApplicationContext())?+?File.separator;
    ????????Log.d(TAG,?"copyDataToFlutterAssets-filesDirPath:"?+?targetDirDataPath);
    ????????Log.d(TAG,?"copyDataToFlutterAssets-appDataDirPath:"?+?appDataDirPath);
    ????????File?appDataDirFile?=?new?File(appDataDirPath);
    ????????File?filesDirFile?=?new?File(targetDirDataPath);
    ????????File[]?files?=?filesDirFile.listFiles();
    ????????for?(File?srcFile?:?files)?{
    ????????????if?(srcFile.getPath().contains("isolate_snapshot_data")
    ????????????????||?srcFile.getPath().contains("isolate_snapshot_instr")
    ????????????????||?srcFile.getPath().contains("vm_snapshot_data")
    ????????????????||?srcFile.getPath().contains("vm_snapshot_instr"))?{
    ????????????????File?targetFile?=?new?File(appDataDirFile?+?"/"?+?srcFile.getName());
    ????????????????FileUtil.copyFileByFileChannels(srcFile,?targetFile);
    ????????????????Log.i(TAG,?"copyDataToFlutterAssets-copyFile:"?+?srcFile.getPath());
    ????????????}
    ????????}
    ????????Log.i(TAG,?"copyDataToFlutterAssets:?Finish");
    ????}

    ????/**
    ?*?解壓縮文件到指定目錄
    ?*
    ?*?@param?zipFileString?壓縮文件路徑
    ?*?@param?outPathString?目標路徑
    ?*?@throws?Exception
    ?*/
    ????private?static?void?unZipFile(String?zipFileString,?String?outPathString)?{
    ????????try?{
    ????????????ZipInputStream?inZip?=?new?ZipInputStream(new?FileInputStream(zipFileString));
    ????????????ZipEntry?zipEntry;
    ????????????String?szName?=?"";
    ????????????while?((zipEntry?=?inZip.getNextEntry())?!=?null)?{
    ????????????????szName?=?zipEntry.getName();
    ????????????????if?(zipEntry.isDirectory())?{
    ????????????????????szName?=?szName.substring(0,?szName.length()?-?1);
    ????????????????????File?folder?=?new?File(outPathString?+?File.separator?+?szName);
    ????????????????????folder.mkdirs();
    ????????????????}?else?{
    ????????????????????File?file?=?new?File(outPathString?+?File.separator?+?szName);
    ????????????????????if?(!file.exists())?{
    ????????????????????????Log.d(TAG,?"Create?the?file:"?+?outPathString?+?File.separator?+?szName);
    ????????????????????????file.getParentFile().mkdirs();
    ????????????????????????file.createNewFile();
    ????????????????????}
    ????????????????????FileOutputStream?out?=?new?FileOutputStream(file);
    ????????????????????int?len;
    ????????????????????byte[]?buffer?=?new?byte[1024];
    ????????????????????while?((len?=?inZip.read(buffer))?!=?-1)?{
    ????????????????????????out.write(buffer,?0,?len);
    ????????????????????????out.flush();
    ????????????????????}
    ????????????????????out.close();
    ????????????????}
    ????????????}
    ????????????inZip.close();
    ????????}?catch?(Exception?e)?{
    ????????????Log.i(TAG,e.getMessage());
    ????????????e.printStackTrace();
    ????????}
    ????}

    ????/**
    ?*?使用FileChannels復制文件。
    ?*
    ?*?@param?source?原路徑
    ?*?@param?dest?目標路徑
    ?*/
    ????public?static?void?copyFileByFileChannels(File?source,?File?dest)?{
    ????????FileChannel?inputChannel?=?null;
    ????????FileChannel?outputChannel?=?null;
    ????????try?{
    ????????????inputChannel?=?new?FileInputStream(source).getChannel();
    ????????????outputChannel?=?new?FileOutputStream(dest).getChannel();
    ????????????outputChannel.transferFrom(inputChannel,?0,?inputChannel.size());
    ????????????refreshMedia(BaseApplication.getBaseApplication(),?dest);
    ????????}?catch?(Exception?e)?{
    ????????????e.printStackTrace();
    ????????}?finally?{
    ????????????try?{
    ????????????????inputChannel.close();
    ????????????????outputChannel.close();
    ????????????}?catch?(IOException?e)?{
    ????????????????e.printStackTrace();
    ????????????}
    ????????}
    ????}

    ????/**
    ?*?更新媒體庫
    ?*
    ?*?@param?cxt
    ?*?@param?files
    ?*/
    ????public?static?void?refreshMedia(Context?cxt,?File...?files)?{
    ????????for?(File?file?:?files)?{
    ????????????String?filePath?=?file.getAbsolutePath();
    ????????????refreshMedia(cxt,?filePath);
    ????????}
    ????}

    ????public?static?void?refreshMedia(Context?cxt,?String...?filePaths)?{
    ????????MediaScannerConnection.scanFile(cxt.getApplicationContext(),
    ????????????????????????????????????????filePaths,?null,
    ????????????????????????????????????????null);
    ????}
    }

    Flutter 資源的熱更新

    我們的App安裝到手機上后,是很難再修改 Assets 目錄下的資源,所以關于資源的替換,目前的方案是使用 Flutter 的 API :Image.file() 來從存儲卡中讀取圖片。

    通常我們的 Flutter 項目中應當存有關于 App 的圖片,盡量保證在熱更新的時候使用已經存在的圖片。

    其次,我們可以使用 Image.network() 來加載網絡資源的圖片,如果還不能滿足需求,兜底的方案就是使用 Image.file(),將資源圖片放到Zip目錄下一起下發,并在Flutter代碼中使用 Image.file() 來加載。

    • 通過 Native 層方法拿到圖片文件夾的內存地址 dataDir

    • 判斷圖片是否存在,存在則加載,不存在則加載已經存在的圖片占位

    new File(dataDir + 'hotupdate_test.png').existsSync()? Image.file(new File(dataDir + 'hotupdate_test.png')): Image.asset("images/net_error.png"),

    總結

    在 Flutter 代碼產物替換中,因為替換的 4 個文件皆為直接加載到內存中的引擎代碼,所以這部分優化空間有限。但在資源的熱更新中,資源是從Assets取得,所以這里應該有更優的方案。

    Flutter 的熱更新意味著可以實在App的一個入口里,像 H5 一樣無窮的嵌入頁面,但又有和原生媲美的流暢體驗。

    未來 Flutter 熱更新技術如果成熟,應用開發可能只需要 Android端和 IOS端實現本地業務功能模塊的封裝,業務和UI的代碼都放在 Flutter 中,便能夠真正的實現移動兩端一份業務代碼,并且賦予產品在不影響用戶體驗的情況下,擁有動態部署APP內容的能力。

    推薦閱讀
    如何寫出讓同事好維護的代碼?
    一線大廠的程序員職級對標
    真正的強者,敢于在寒冬里裸辭

    編程·思維·職場
    歡迎掃碼關注

    總結

    以上是生活随笔為你收集整理的flutter不支持热更新_Flutter 在安卓上可以实现热更新了的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    日韩欧美电影网 | 国产精品一区二区久久精品爱微奶 | 91丨porny丨九色 | 亚洲黄色软件 | 午夜体验区 | 天天综合网在线观看 | 激情丁香久久 | 免费看黄电影 | 日韩小视频网站 | 亚洲精品看片 | 亚洲一区精品二人人爽久久 | 久久情网 | 免费在线国产视频 | 日韩视频免费在线观看 | 黄色av电影在线观看 | 国内成人精品2018免费看 | av日韩国产 | 91高清在线| 国产精品久久久久久久免费观看 | 99在线热播 | 国产麻豆精品在线观看 | 久久精品96 | 久久精品毛片 | 精品视频区 | 色九九在线 | 999亚洲国产996395 | 久久精品4| 91视频首页 | 嫩草91影院 | 91视频com | 中文字幕一区二区三区乱码不卡 | 99久高清在线观看视频99精品热在线观看视频 | 欧美日韩一二三四区 | 97超级碰碰| 久久在现视频 | 国产一区电影在线观看 | 中文字幕一区二区三区四区久久 | av资源免费在线观看 | 成片免费观看视频大全 | 高潮久久久| 97在线观视频免费观看 | 7777精品伊人久久久大香线蕉 | 在线天堂中文www视软件 | 免费福利片| 欧美一级久久 | 亚洲精品乱码久久 | 色欧美视频 | 天堂在线一区二区三区 | 色在线观看网站 | 欧美一区二区日韩一区二区 | 国产精品美女视频 | 久久免费的视频 | 黄色片软件网站 | 国产一区在线精品 | 婷婷激情综合五月天 | 久久精品亚洲综合专区 | 四虎影视久久久 | 久久久官网 | 国产精品门事件 | 国产精品久久久久久久电影 | 国产一区二区三区在线免费观看 | 欧美日韩综合在线观看 | 视频在线播放国产 | 五月婷婷操 | 国产视频2区 | 国产免费观看久久黄 | 免费在线观看成年人视频 | 欧美激情视频一区 | 婷婷丁香在线视频 | 亚洲在线资源 | 五月天婷婷综合 | 激情亚洲综合在线 | 中文字幕在线观看免费观看 | 亚洲成aⅴ人片久久青草影院 | 欧美日韩国产精品爽爽 | 黄色三级在线看 | av黄网站| 国产高清久久久 | 亚洲成色777777在线观看影院 | 亚洲黄色激情小说 | 九九热视频在线 | 国产理论一区二区三区 | 亚洲久草视频 | 免费在线播放视频 | 国产欧美精品在线观看 | 亚洲激情电影在线 | 91视频 - 88av | 国产午夜激情视频 | 毛片永久新网址首页 | 91免费看黄色 | 国产美女黄网站免费 | 亚洲夜夜综合 | 久久久久亚洲国产精品 | 99热超碰在线 | 久久伊人免费视频 | 色综合 久久精品 | 久久精品成人热国产成 | 日日夜夜精品视频天天综合网 | wwwwww黄| 亚洲色视频 | 久久a久久 | 色中文字幕在线观看 | 中文字幕精品一区二区三区电影 | 一本大道久久精品懂色aⅴ 五月婷社区 | 狠狠做六月爱婷婷综合aⅴ 日本高清免费中文字幕 | 亚洲精品黄色在线观看 | 久久黄色免费观看 | 色就色,综合激情 | 国产在线2020 | 国产手机在线播放 | 97免费在线视频 | 亚洲最新视频在线播放 | 又黄又爽又色无遮挡免费 | 欧美日韩国产一区二区在线观看 | 国产精品久久久久国产精品日日 | 一级黄色大片在线观看 | 五月婷婷丁香激情 | 国产精品成人免费一区久久羞羞 | 久操中文字幕在线观看 | 香蕉91视频 | 人人干天天干 | 一区二区三区免费在线观看视频 | 五月婷婷视频在线 | 国产精品永久免费视频 | 久久影院午夜论 | 久久久男人的天堂 | 日韩一区精品 | 国内精品久久久久久久久久久 | 黄色国产在线 | av东方在线| av国产网站 | 久久艹在线观看 | 久久综合精品一区 | 成人电影毛片 | 国产美女精品人人做人人爽 | 久久这里有精品 | 国产一卡在线 | 久久久久免费精品国产 | 中文字幕av一区二区三区四区 | 一区二区三区动漫 | 福利网在线| 成人97视频 | 国产精品毛片一区二区 | 在线视频观看成人 | 国产91精品在线观看 | 777xxx欧美 | 国产黄视频在线观看 | 欧美午夜激情网 | 亚洲精品在线国产 | 人人爽人人爽人人爽学生一级 | 日本性xxxxx 亚洲精品午夜久久久 | 激情av资源 | 在线观看日韩国产 | se视频网址| 玖玖国产精品视频 | 99久精品视频 | 日韩手机在线观看 | zzijzzij日本成熟少妇 | 国产不卡在线播放 | 精品1区2区3区 | 国产福利91精品一区 | 懂色av一区二区在线播放 | 免费三级网 | 国产免码va在线观看免费 | 久久成人综合 | 狠狠色丁香 | 国产精品精品国产色婷婷 | 亚洲mv大片欧洲mv大片免费 | 国产视频一区二区在线观看 | 国产精彩视频一区 | 麻豆91在线观看 | 99免在线观看免费视频高清 | 久久a视频| 国产精品久久中文字幕 | 久久视频二区 | 狠狠躁夜夜躁人人爽超碰91 | 久久99精品国产99久久6尤 | 国产精品白丝jk白祙 | 美女视频永久黄网站免费观看国产 | 九色精品在线 | 国产精品成人一区二区 | 日韩av黄 | 一性一交视频 | 国产精品一区二区三区四区在线观看 | 天躁狠狠躁 | 国产无套一区二区三区久久 | 波多野结衣一区二区三区中文字幕 | 97操碰| 久久av伊人| 91久久久久久久一区二区 | 久久99精品一区二区三区三区 | www日韩| 亚洲国产福利视频 | 91麻豆看国产在线紧急地址 | 在线观看亚洲视频 | 国产精品麻豆欧美日韩ww | 精品一区二区免费在线观看 | 一二三区高清 | 久久精品综合一区 | 久久只精品99品免费久23小说 | 欧美少妇bbwhd | 一级做a爱片性色毛片www | 亚洲欧美成人综合 | 久久大香线蕉app | 天堂在线视频免费观看 | 欧美日韩视频免费看 | 一级做a爱片性色毛片www | 免费看精品久久片 | 综合久久影院 | 国语对白少妇爽91 | 国产免费久久久久 | 日韩三级中文字幕 | 丁香高清视频在线看看 | 菠萝菠萝蜜在线播放 | 国产亚洲欧美精品久久久久久 | 色com| 久久综合桃花 | 国产精品久久久久久久久毛片 | 中文字幕 国产精品 | 91大神精品视频在线观看 | 黄色成人av | 天天摸天天干天天操天天射 | 五月天婷婷丁香花 | 亚洲最大的av网站 | 中文字幕日韩免费视频 | 九九爱免费视频 | 国产精品久久久久久久久免费 | 97国产精品免费 | 国产色在线 | 国产免费一区二区三区网站免费 | 玖草影院 | 国产精品国产三级国产aⅴ9色 | 亚洲五月六月 | 青青河边草手机免费 | 成人九九视频 | 在线观看国产麻豆 | 国产精品18久久久久久不卡孕妇 | 五月天狠狠操 | 天天伊人狠狠 | 999国产| 亚洲激情校园春色 | av免费网页 | 亚洲视频在线免费看 | 在线视频亚洲 | 91av精品 | 国产精品欧美久久久久无广告 | 国产精品久久久久久久久久免费看 | 婷婷色网址 | 国产黄色在线看 | 97在线观看视频免费 | 在线观看你懂的网址 | 久久久久成人精品亚洲国产 | 免费看国产a | 91免费观看国产 | 日韩美女高潮 | 99热这里只有精品免费 | 在线一区二区三区 | 久久爽久久爽久久av东京爽 | h网站免费在线观看 | 中文字幕在线有码 | 91欧美在线 | 亚洲伊人第一页 | 日本一区二区免费在线观看 | 久久精品亚洲一区二区三区观看模式 | 免费观看完整版无人区 | 国产日韩视频在线播放 | h动漫中文字幕 | 黄在线 | 久久亚洲婷婷 | 久久久电影 | 国产91av视频在线观看 | 狠狠色噜噜狠狠狠合久 | 久久精品欧美 | 高潮久久久久久 | 日韩中文字幕第一页 | 国产精品高清一区二区三区 | 免费在线成人av | 天天天天射 | 91麻豆精品久久久久久 | 久久黄色片子 | 国产午夜三级一区二区三 | 99久精品视频 | 欧美日韩视频在线观看一区二区 | 久久伊人免费视频 | 日韩久久影院 | 欧美日韩精品免费观看视频 | 国产午夜视频在线观看 | 色综合亚洲精品激情狠狠 | 六月婷操| 国产一级片毛片 | 在线看一区二区 | 97在线观看免费高清完整版在线观看 | 国产91九色视频 | 99这里精品 | 国产视频在线观看一区二区 | 国产精品1区 | 日韩免费网址 | 成人a在线观看高清电影 | 国产精品精品久久久 | 911免费视频 | 成人在线免费视频观看 | 99精品在线免费 | 久久少妇免费视频 | 成人午夜电影在线播放 | 免费视频成人 | 麻豆视频免费入口 | 欧美一区影院 | 92国产精品久久久久首页 | 亚洲精品动漫在线 | 亚洲精品91天天久久人人 | 成人黄色视 | 久久久久高清 | 啪啪免费观看网站 | 97免费| 国产中文字幕三区 | 超级碰视频 | 91精品视频免费观看 | 婷婷色在线资源 | www亚洲视频 | 日韩三级视频在线观看 | 日韩毛片久久久 | 久久久国产精品成人免费 | a天堂一码二码专区 | 在线激情影院一区 | 精品在线视频播放 | 国产精品av免费在线观看 | 亚洲人成人天堂h久久 | 77国产精品 | 99免费看片 | 亚洲精品国产欧美在线观看 | 国产精品mv在线观看 | 亚洲成免费 | 在线观看视频99 | 日韩免费看片 | 在线播放 日韩专区 | 美女网站久久 | 超碰人人草人人 | 91精品国产高清自在线观看 | 在线看欧美 | 三级小视频在线观看 | 国产精品一区二区av日韩在线 | www.香蕉视频在线观看 | 日韩在线电影一区 | 国产精品资源在线 | 久久69精品久久久久久久电影好 | 综合在线观看色 | 日韩在线观看视频在线 | 久久久久久久免费看 | 国产在线自 | 91激情视频在线播放 | 国产成人精品av久久 | 久久综合色影院 | 成年人在线观看视频免费 | 欧美日韩综合在线观看 | 91精品1区 | 91精品视频在线观看免费 | 欧美精品久久久久久久亚洲调教 | 伊人狠狠色 | 四虎免费在线观看视频 | 国产中文在线字幕 | 亚洲综合视频在线 | 在线视频一二区 | 久久久久久久久久久免费视频 | 97超碰超碰久久福利超碰 | 精品久久久一区二区 | 亚洲自拍av在线 | 久久经典国产 | 手机av在线网站 | 五月婷婷激情网 | 色婷婷a | 在线观看黄色小视频 | 亚洲va男人天堂 | www.99av| 国产一区二区三区午夜 | 成人污视频在线观看 | 国产无吗一区二区三区在线欢 | 久久久久久草 | 最近中文字幕大全中文字幕免费 | 天天曰夜夜操 | 园产精品久久久久久久7电影 | 国产精品手机在线播放 | 中文字幕av在线电影 | 成人小视频在线观看免费 | 九九热视频在线免费观看 | 99精品亚洲| 波多野结衣视频在线 | 美女视频久久黄 | 天天干夜夜干 | 香蕉久久久久久av成人 | 97精品超碰一区二区三区 | 久久99精品久久只有精品 | 久久视影| 成人资源站 | 国产在线国产 | 六月丁香综合 | 91精品蜜桃 | 色黄视频免费观看 | 九色91在线 | 国产成人精品日本亚洲999 | 久久免费视频这里只有精品 | 99中文字幕视频 | 久久精品综合网 | 一区二区三区日韩在线 | 久久久久久久久电影 | 伊人热| 免费看污的网站 | 97超碰资源 | 人人干天天射 | 日韩免费不卡av | 日日夜夜精品视频天天综合网 | 色姑娘综合| 欧美日韩在线精品 | 亚洲视频综合在线 | 另类五月激情 | 青青河边草免费直播 | 永久免费精品视频 | 18pao国产成视频永久免费 | 五月婷婷综合网 | 国产精品欧美一区二区三区不卡 | 国产私拍在线 | 免费看麻豆 | 亚洲欧美国产视频 | 国产精品久久久免费 | 国产精品一区二区在线免费观看 | 免费91在线观看 | 欧美日比视频 | 美女国产在线 | 国产精品免费观看国产网曝瓜 | 精产嫩模国品一二三区 | 手机av网站 | 中文字幕一区二区三区视频 | 国产香蕉久久精品综合网 | 国产精品永久在线 | 韩国一区二区av | 中文字幕日韩在线播放 | 五月天六月婷 | 国产一级二级在线 | 日韩黄色在线 | 99免费视频| av片中文 | 黄色资源在线观看 | av黄色一级片 | 久久精品日本啪啪涩涩 | 欧美亚洲一区二区在线 | 狠狠地日 | 国产一级视屏 | 亚洲欧洲国产视频 | 国产精品亚| 久久超碰在线 | 伊人久久精品久久亚洲一区 | www天天操 | 国产高清免费 | 亚洲高清色综合 | 免费在线色 | 草久久久久| 久久久福利 | av成人免费网站 | 亚洲精品成人网 | www国产亚洲精品久久网站 | 亚洲国产一区av | 国产黄色片久久久 | 九九视频免费在线观看 | 国产精品99久久久久久宅男 | 成年人在线看视频 | 国产高清免费 | 黄色在线看网站 | www日韩精品| 狂野欧美激情性xxxx欧美 | 开心婷婷色 | 日本最新中文字幕 | 日本一区二区高清不卡 | 97视频资源 | 国产成人无码AⅤ片在线观 日韩av不卡在线 | 98精品国产自产在线观看 | 96av视频| 深爱五月激情五月 | 欧美日韩国产精品一区二区亚洲 | av天天色 | 久久久久久看片 | 日日躁你夜夜躁你av蜜 | 激情婷婷综合 | 五月天婷婷在线视频 | 久久中文视频 | 欧美在线1| 97精品超碰一区二区三区 | 91日韩国产 | 狠狠狠综合 | 激情五月激情综合网 | 国产视频在 | 在线观看完整版免费 | 日韩精品极品视频 | 国产剧情一区二区在线观看 | 在线播放视频一区 | 97自拍超碰 | 高清av影院 | 久久精品视频3 | 免费在线观看成人 | 一区二区三区免费在线观看视频 | 久久在线观看视频 | 中国一区二区视频 | 欧美天堂视频在线 | 色中色资源站 | 九七在线视频 | www91在线观看 | 午夜美女福利直播 | 一区二区三区四区五区在线 | 国产一级二级三级在线观看 | 欧美狠狠色 | 亚洲黄色在线播放 | 91污污视频在线观看 | 最新一区二区三区 | 久久你懂的 | 四虎成人在线 | 国产精品久久久久久一区二区 | 成人三级网站在线观看 | 久久tv| 日韩久久精品一区二区 | 国产永久免费 | 91九色在线观看视频 | 亚洲精品乱码久久久久久按摩 | 久久只有精品 | 色婷婷天天干 | 日韩精品一区二区不卡 | 久久国产精品影视 | 国产午夜精品理论片在线 | 人九九精品 | 丁香激情综合国产 | 国产精品久久久久久麻豆一区 | 2017狠狠干 | 日韩在线观看精品 | 国产精品一区二区三区在线播放 | 五月婷综合网 | 麻豆av电影 | 亚洲精品乱码久久久久久蜜桃欧美 | 久艹在线免费观看 | 九九免费在线观看视频 | 国产一区二区精品久久 | 中文字幕大全 | 色香蕉网| 最近2019年日本中文免费字幕 | 在线观看精品黄av片免费 | 中文字幕在线一二 | 激情九九 | 亚洲男女精品 | 人人爽人人乐 | 亚洲国产精品一区二区久久hs | 国产精品一区二区在线观看 | 91九色性视频 | 久久草网站 | 精品国产理论 | 视频成人永久免费视频 | 日韩精品一区二区不卡 | 在线观看日本韩国电影 | 欧美日韩成人 | 亚洲 欧美 变态 国产 另类 | 亚洲欧美少妇 | 日韩免费不卡视频 | 粉嫩高清一区二区三区 | 日批视频在线播放 | 日韩一区在线免费观看 | 黄色毛片一级片 | 色综合久久久久久久 | 91麻豆传媒 | 久草网视频在线观看 | 国产亚洲一级高清 | 黄色免费网站大全 | 狠狠狠色丁香综合久久天下网 | 亚洲精品综合一区二区 | 亚洲精品国产精品乱码在线观看 | 成人蜜桃网 | 五月婷婷电影网 | 亚洲最大的av网站 | 色狠狠狠| 欧美射射射 | 亚洲精品视频免费看 | 国产精品永久免费视频 | 国产精品黄色影片导航在线观看 | 天天射综合| 国产精品美女视频 | 婷婷午夜| 久久亚洲专区 | 中文在线免费一区三区 | 婷婷草| 国产综合香蕉五月婷在线 | 天天操夜夜操夜夜操 | 91久久黄色 | 人人射人人澡 | 亚洲精品在 | 日韩专区在线播放 | 色五月成人 | 一二区电影 | 国产精品va在线播放 | 国产一区二区三区高清播放 | 久久国产视频网 | 偷拍福利视频一区二区三区 | aaa黄色毛片 | 国产不卡视频在线播放 | 狠狠干婷婷色 | 91视频88av | 精品国产成人av | 亚洲免费在线观看视频 | 天天干,天天射,天天操,天天摸 | 制服丝袜成人在线 | 国产成人99久久亚洲综合精品 | 在线免费观看的av网站 | 中文在线字幕免费观看 | 日本少妇视频 | 欧美一区二区三区免费看 | 天天综合狠狠精品 | 久久精品99国产精品酒店日本 | 天堂在线一区二区 | 精品视频免费久久久看 | 国产91探花 | 亚洲蜜桃av | 97国产超碰在线 | avav片 | 婷婷色六月天 | 欧美一二区在线 | caobi视频 | 日本精品久久久久中文字幕5 | 91麻豆看国产在线紧急地址 | 欧美午夜精品久久久久久孕妇 | 婷婷伊人五月天 | 一区二区三区四区不卡 | 亚洲精品动漫在线 | 欧美日韩免费在线视频 | 国产成人精品亚洲日本在线观看 | av视屏在线 | 婷婷国产视频 | 免费看片在线观看 | 午夜资源站 | 天天色图| 免费瑟瑟网站 | 精品国产一区二区三区四区vr | 国产在线观看你懂得 | 久久爱影视i | 国产日产精品一区二区三区四区 | 一区二区三区视频 | 欧美日韩久久一区 | 天堂素人在线 | 欧美另类人妖 | 欧美aa一级片 | 欧美aⅴ在线观看 | 国产资源站 | 欧美成a人片在线观看久 | 免费网站在线观看人 | 夜夜操天天| 亚洲经典视频在线观看 | 国产亚洲久一区二区 | 91网页版在线观看 | 国产清纯在线 | 91精品啪在线观看国产线免费 | 五月婷网站 | 成人在线免费视频 | 欧美精品久久久久久久久免 | 久久这里只有精品久久 | 天天干天天操天天搞 | 国产精品亚州 | 黄色毛片大全 | 亚洲精品欧美成人 | 天天干干| 在线观看亚洲国产精品 | 久草精品在线观看 | 日韩免费在线网站 | 97热久久免费频精品99 | 东方av免费在线观看 | 三级在线视频观看 | 日韩一区二区三区高清在线观看 | 99精品久久久久久久久久综合 | 亚洲免费在线观看视频 | 久久久久国产一区二区三区四区 | 丁香色综合 | 色婷婷综合久久久久 | 欧美 日韩 国产 中文字幕 | 亚洲欧美日韩精品久久久 | 日韩午夜网站 | 97超碰在线人人 | 久久激情五月激情 | 日韩av男人的天堂 | 香蕉视频18| 安徽妇搡bbbb搡bbbb | 美女黄色网在线播放 | 久草在线观看视频免费 | 免费观看的av网站 | 精品国产一区二区三区不卡 | 高清视频一区二区三区 | 久久久久 免费视频 | 久久成人在线视频 | 欧美一级片免费观看 | 99久久99热这里只有精品 | 国产在线精品一区二区 | 久久另类小说 | 国产视频一二区 | www.干| 最新日本中文字幕 | 黄色一级免费电影 | av在线一二三区 | 免费观看成人网 | 久久久久久久久久福利 | 亚洲国产精品日韩 | www.激情五月.com| 日日干 天天干 | 狠狠躁日日躁夜夜躁av | 国产精品v a免费视频 | 黄网站色欧美视频 | 成人xxxx| 91免费的视频在线播放 | 久久高清视频免费 | 久久久久久久久久久久久国产精品 | 免费日韩 精品中文字幕视频在线 | 久久综合狠狠综合久久综合88 | 日本在线观看一区 | a视频免费看 | 免费一级黄色 | 国产成人三级在线 | 色噜噜日韩精品一区二区三区视频 | 国产精品破处视频 | 国内精品久久久久久久影视简单 | 亚洲视频 中文字幕 | 午夜影视剧场 | 国产成人一区二 | 色在线最新| 91在线精品播放 | 国产打女人屁股调教97 | 久久久久久久久艹 | 欧美一级片免费在线观看 | 可以免费看av | 成人av高清在线 | 国产九色在线播放九色 | 色婷婷狠狠五月综合天色拍 | 国产原创中文在线 | 亚洲国产成人在线观看 | 日韩精品免费一区二区 | 日日久视频 | 天天爱天天射天天干天天 | 在线观看片 | 欧美aa在线观看 | 国产亚洲欧美日韩高清 | 亚洲国产偷 | 97av.com| 久久精品一区二区国产 | 97精品国产97久久久久久粉红 | 香蕉视频在线免费 | 97人人爽人人 | 麻豆91视频| 欧美激情精品久久久 | 玖玖在线视频观看 | 91在线网站 | 色网站免费在线看 | 欧美一级在线观看视频 | 久久夜色精品国产欧美一区麻豆 | 成人免费看视频 | 深夜视频久久 | 国产精品国产精品 | av短片在线 | 精品视频在线免费观看 | 久久精品1区 | 国产精品久久久av | 日韩视频在线一区 | 亚洲精品美女久久17c | 91系列在线 | 国产午夜精品一区二区三区嫩草 | 日韩不卡高清 | 麻豆精品视频在线 | 国产一区二区三区四区大秀 | 麻豆播放 | av久久在线| 中文字幕在线观看你懂的 | 久久天堂精品视频 | 日本精品中文字幕在线观看 | 精品久久久久久久久中文字幕 | 国产a国产a国产a | 91亚色视频在线观看 | 成人免费一区二区三区在线观看 | 四虎国产精品成人免费4hu | 99久久99久久精品 | 又黄又爽又无遮挡的视频 | 国产精品情侣视频 | 久久在线视频在线 | 97国产一区 | 亚洲精品在线播放视频 | 天天干天天做天天操 | 国产精品综合久久久 | 最新av在线网站 | 欧美在一区| 999国产在线 | 国产精品久久久久一区二区三区 | 亚洲三级网 | 精品亚洲午夜久久久久91 | 国内精品久久久久影院优 | 国产精品久久一区二区三区不卡 | 国产成人亚洲在线观看 | 欧美有色| 久久成年人视频 | 欧美日韩视频在线播放 | 欧美另类交在线观看 | 精品在线观看一区二区 | 久久久黄视频 | 亚洲成人一区 | 黄色福利网 | av免费在线观看1 | 天堂在线视频免费观看 | 天堂va在线观看 | 久久精品国产亚洲aⅴ | 欧美日韩中文在线视频 | 国产一区免费在线 | 亚洲精品一区二区三区高潮 | 久艹视频在线免费观看 | 色噜噜日韩精品一区二区三区视频 | 国产精品自产拍在线观看桃花 | 欧美激情第28页 | 玖玖玖精品 | 91黄色视屏| 国产精品久久久久久久久久久久午夜片 | 狠狠综合久久 | 91九色蝌蚪 | 久久久久久久久影视 | 三级av免费看 | 精品一区av | 少妇高潮流白浆在线观看 | 亚洲精品自拍视频在线观看 | 亚洲 综合 精品 | 精品久久九九 | 亚洲乱亚洲乱妇 | 国产精品久久久久久久久久久免费看 | 在线免费高清一区二区三区 | 亚洲综合婷婷 | 粉嫩av一区二区三区入口 | 日本特黄一级片 | 91中文字幕视频 | 狠狠色丁香婷婷综合久小说久 | 亚洲丝袜中文 | 国内精品久久久久久久影视麻豆 | 午夜精品久久久久久久99 | 亚洲精品国偷拍自产在线观看 | 蜜桃传媒一区二区 | 国产日韩高清在线 | 99国内精品 | 国产糖心vlog在线观看 | 久久久久久久久久久久亚洲 | 国产一级视屏 | 九九热免费视频在线观看 | 中文字幕国语官网在线视频 | 视频直播国产精品 | 美女黄频| 久久久久久久av麻豆果冻 | 久久精品网 | 欧美一级视频一区 | 国产高清视频免费观看 | 色五月成人 | 日本mv大片欧洲mv大片 | 九九精品毛片 | 亚洲在线国产 | 久久99欧美 | 91亚洲精品乱码久久久久久蜜桃 | 成人av高清在线观看 | a级片韩国| 91精品国产99久久久久 | 国产一级片直播 | 99精品视频观看 | wwxxxx日本 | 国产精品xxxx18a99 | 五月激情站 | 亚洲国产人午在线一二区 | 婷婷激情5月天 | 精品91在线| 精品黄色视 | 亚洲一级黄色 | 成年人视频在线免费播放 | 韩国精品在线观看 | 国产一级做a爱片久久毛片a | 日韩av免费在线看 | 99在线精品视频在线观看 | 一区二三国产 | 成年人app网址 | 天天爽天天碰狠狠添 | 全久久久久久久久久久电影 | 国产乱对白刺激视频不卡 | 三级黄色在线观看 | 日韩激情第一页 | 人人爽人人爽人人片 | 国产精品自产拍在线观看网站 | 天天操天天干天天干 | 午夜三级影院 | 毛片888| 天天插天天色 | 99久久夜色精品国产亚洲 | 成人国产一区 | 欧美成年网站 | 中文字幕第一页在线视频 | 99日精品| 国产一二区免费视频 | 日韩在线免费小视频 | 在线播放国产一区二区三区 | 欧美久久久久久久久中文字幕 | 高清国产在线一区 | 成人黄大片 | 中文av日韩 | 一区二区视 | 伊人资源站 | 精品国产一区二区三区在线观看 | 国产美女精品在线 | 精品久久99 | 天海翼一区二区三区免费 | 国产女教师精品久久av | 国产精品一区二区视频 | a'aaa级片在线观看 | 欧美日韩精品久久久 | 99中文字幕视频 | 久久综合九色99 | 国产片免费在线观看视频 | 免费视频 三区 | 97人人模人人爽人人喊网 | 91在线精品视频 | www国产亚洲精品久久麻豆 | 国产精品久久久久久久久久白浆 | 婷久久 | 久久精品视频一 | 99久久99久久精品国产片果冰 | 在线免费观看国产黄色 | 欧美少妇xx | 日韩精品免费 | 午夜丰满寂寞少妇精品 | 国产黄色精品在线观看 | 亚洲日本精品 | 一级黄色免费网站 | 欧美精品二区 | 久久精品站| 97综合视频 | 91热在线| 天天干,天天操 | 在线观看日韩av | 亚洲精品456在线播放乱码 | 中文字幕精品一区二区精品 | 免费合欢视频成人app | 色综合咪咪久久网 | 久久久久在线观看 | 色妞久久福利网 | 日韩欧美高清一区二区三区 | 亚洲综合视频在线观看 | 最新日韩视频 | 夜夜夜夜操 | 日本精品久久久久久 | 欧美aaaxxxx做受视频 | 欧美在线aa | 国产九九在线 | 国产成人av在线 | 天天操夜夜拍 | 一区二区av| 久久久久久久久精 | 久久精品xxx | 五月婷亚洲 | 在线成人观看 | 91久久偷偷做嫩草影院 | 久久久精品网 | 中文视频在线 | 在线观看国产一区 | www狠狠 | 日韩欧美在线中文字幕 | 亚洲精品综合欧美二区变态 | 久草男人天堂 | 国产精品99精品 | 91成人网页版 | 亚洲精品在线一区二区三区 | 69精品在线观看 | 久久久久国产精品一区二区 | 日韩欧美精品在线观看 | 免费看的黄色 | 色精品视频| av在线短片 | 久久久久久久免费观看 | 日本黄色免费看 | 国产精品 日韩精品 | 久久久久99精品成人片三人毛片 | 丝袜制服综合网 | 国产日韩视频在线播放 | 免费福利视频网站 | 久久久久久久99精品免费观看 | 国产精品综合av一区二区国产馆 | 日三级在线 | 国产精品久久久 | 一二三区高清 | 少妇bbw撒尿| 亚洲黄色免费在线看 | 狠狠狠狠狠狠操 | 人人舔人人射 | 欧美一区二区三区激情视频 | 五月婷婷六月丁香 | 麻豆首页| 在线观看中文字幕2021 | 成人国产精品一区二区 | 日韩视频中文字幕 | 国产精品久久久一区二区三区网站 | 久久精品牌麻豆国产大山 | 国产精品99蜜臀久久不卡二区 | 中文在线www | 99久久99久久 | 国产精品国内免费一区二区三区 |