精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

OpenHarmony系統之Service代碼一鍵生成工具介紹

系統 OpenHarmony
Service代碼生成工具能夠幫助使用者生成框架代碼,提升開發效率。用戶只需提供一個定義遠程方法的.h頭文件,工具會自動生成整個Service框架的代碼,包含Ability注冊、proxy/stub類實現、MessageParcel數據包構造、Service子系統編譯及開機自啟動相關配置文件。

想了解更多關于開源的內容,請訪問:

51CTO 開源基礎軟件社區

https://ost.51cto.com

前言

當開發者為OpenHarmony系統框架開發某些功能時,有時需要將這個功能包裝成一個獨立的服務進程運行在系統中,為了其它應用進程能夠調用此服務,開發人員需要基于系統IPC通信框架編寫一套遠程接口調用實現。實現Service遠程調用接口需要開發人員熟悉IPC通信框架,了解proxy/stub的繼承與實現方式,掌握C++類型轉為MessageParcel數據包的各種API方法,有一定的學習成本。而Service代碼生成工具能夠幫助使用者生成框架代碼,提升開發效率。用戶只需提供一個定義遠程方法的.h頭文件,工具會自動生成整個Service框架的代碼,包含Ability注冊、proxy/stub類實現、MessageParcel數據包構造、Service子系統編譯及開機自啟動相關配置文件。

1、工具原理

Service框架代碼生成工具包含工具入口、工具框架、公共模塊、運行環境、系統平臺。其中,工具入口描述調用Service框架代碼生成工具的入口方式,支持命令行調用、VS Code插件(即VS插件)調用,從而可以根據開發環境的不同,采用相對應的調用Service框架代碼生成工具的入口方式,實現Service框架代碼生成工具的入口多樣性,便于調用Service框架代碼生成工具。工具框架包含C語法解析器、代碼生成器兩部分,C語法解析器支持包括但不限于對class、function、properties、parameter等內容的解析,代碼生成器支持包括但不限于對proxy、stub、service、interface等服務框架代碼的生成。公共模塊描述通用的、在不同部分均會使用的公共接口與模塊,可以包括通用的正則校驗、類型映射、代碼模板、文件操作等模塊,運行環境描述Service框架代碼生成工具運行的環境,包括Nodejs與Python,由于Nodejs本身具有跨平臺性特點,故Service框架代碼生成工具可以在Windows、linux、mac、OpenHarmony等不同系統平臺靈活使用,Service框架代碼生成工具的運行環境另一部分是python,針對不同平臺做python適配,Service框架代碼生成工具即可實現跨平臺使用。

架構圖

OpenHarmony系統之Service代碼一鍵生成工具介紹-開源基礎軟件社區

2、使用說明

環境

visual studio code 版本需1.62.0及以上。

步驟

1、 打開VS Code,在左側邊欄中選擇插件安裝。

OpenHarmony系統之Service代碼一鍵生成工具介紹-開源基礎軟件社區

2、 在應用商店搜索service-gen插件,再單擊安裝。

OpenHarmony系統之Service代碼一鍵生成工具介紹-開源基礎軟件社區

3、 安裝完成后就會在VS Code的插件管理器中能看到service-gen這個插件了。

OpenHarmony系統之Service代碼一鍵生成工具介紹-開源基礎軟件社區

4、 在VS Code中找到需要轉換的.h文件,待轉換的.h文件內容如下所示:

#ifndef TEST_H
#define TEST_H

namespace OHOS {
    namespace Example {
    /**
     * @brief service服務,提供IPC調用接口
     * @ServiceClass
     */
        class test {
        public:
            int testFunc(int v1, int v2, bool v3);
        };
    }  // namespace Example
}  // namespace OHOS
#endif  // TEST_H

5、 右鍵單擊.h文件,選擇“ Service Generate Frame”選項。

OpenHarmony系統之Service代碼一鍵生成工具介紹-開源基礎軟件社區

6、 工具打開 Service Generate Frame窗口,.h文件選擇框默認填寫被操作的.h文件的絕對路徑;輸出路徑選擇框默認填寫.h文件所在文件夾路徑,可修改為任意路徑;serviceID范圍是1-16777215之間的整數,超出范圍會提示錯誤,填入正確的serviceID,然后點擊ok。

OpenHarmony系統之Service代碼一鍵生成工具介紹-開源基礎軟件社區

7、 轉換成功后,在輸出路徑下生成service框架代碼文件。

輸出文件說明

service工具生成文件說明如下圖所示:

OpenHarmony系統之Service代碼一鍵生成工具介紹-開源基礎軟件社區

其中消息調用流程為:

  1. 服務端實現SystemAbility接口OnStart(),將自己的serviceId注冊到SystemAbility Manager管理類。
  2. 客戶端根據serviceId向SystemAbility Manager管理類獲取該service的proxy對象。
  3. 客戶端使用proxy對象調用服務端的遠程接口。
  4. proxy將客戶端傳入的c++參數打包成消息數據,通過系統提供的dbinder進程間通信能力發送到服務端進程。
  5. 服務端OnRemoteRequest()接收到遠程調用消息,根據消息id分發給不同的innerFunction()處理。
  6. 服務端innerFunction()將遠程消息數據包還原成C/C++參數,傳入業務入口方法供業務開發人員處理。

3.集成說明

本集成說明針對的是OpenHarmony 3.2release系統,其他系統可能存在差別,開發者可自行調試修改。

修改編譯文件

  1. 修改testservice/BUILD.gn文件,將utils/native 改為 commonlibrary/c_utils,將samgr_standard改為samgr。修改后的BUILD.gn文件內容如下所示:
import("http://build/ohos.gni")

ohos_shared_library("testservice") {
  sources = [
    "http://testservice/src/i_test_service.cpp",
    "http://testservice/src/test_service_stub.cpp",
    "http://testservice/src/test_service.cpp"
  ]
  include_dirs = [
    "http://testservice/include",
    "http://testservice/interface",
    "http://commonlibrary/c_utils/base/include"
  ]

  deps = [
    "http://base/startup/syspara_lite/interfaces/innerkits/native/syspara:syspara",
    "http://commonlibrary/c_utils/base:utils",
  ]

  external_deps = [
    "hiviewdfx_hilog_native:libhilog",
    "ipc:ipc_core",
    "safwk:system_ability_fwk",
    "samgr:samgr_proxy",
    "startup_l2:syspara",
  ]

  part_name = "testservice_part"
  subsystem_name = "testservice"
}

ohos_executable("testclient") {
    sources = [
    "http://testservice/src/i_test_service.cpp",
    "http://testservice/src/test_service_proxy.cpp",
    "http://testservice/src/test_client.cpp"
  ]

  include_dirs = [
    "http://testservice/include",
    "http://testservice/interface",
    "http://commonlibrary/c_utils/base/include"
  ]

  deps = [
    "http://commonlibrary/c_utils/base:utils",
  ]

  external_deps = [
    "hiviewdfx_hilog_native:libhilog",
    "ipc:ipc_core",
    "samgr:samgr_proxy",
  ]

  part_name = "testservice_part"
  subsystem_name = "testservice"
}
  1. 修改testservice/bundle.json文件,將"name": “@ohos/testservice"修改為 “name”: “@ohos/testservice_part”;將"samgr_standard"改為"samgr”,“utils_base"修改為"c_utils”;修改的bundle.json文件內容如下所示:
{
    "name": "@ohos/testservice_part",
    "description": "system ability framework test",
    "homePage": "https://gitee.com/",
    "version": "3.1",
    "license": "Apache License 2.0",
    "repository": "",
    "publishAs": "code-segment",
    "segment": {
        "destPath": "testservice"
    },
    "dirs": {},
    "scripts": {},
    "component": {
        "name": "testservice_part",
        "subsystem": "testservice",
        "adapted_system_type": [
            "standard"
        ],
        "rom": "2048KB",
        "ram": "~4096KB",
        "deps": {
            "components": [
                "hiviewdfx_hilog_native",
                "ipc",
                "samgr",
                "c_utils",
                "safwk",
                "startup_l2"
            ],
            "third_party": [ "libxml2" ]
        },
        "build": {
            "sub_component": [
                "http://testservice:testservice",
                "http://testservice/sa_profile:testservice_sa_profile",
                "http://testservice:testclient",
                "http://testservice/etc:test_service_init"
            ],
            "inner_kits": [
            ],
            "test": [
            ]
        }
    }
}

修改系統公共文件

基本配置

  1. 服務配置foundation/systemabilitymgr/samgr/interfaces/innerkits/samgr_proxy/include/system_ability_definition.h增加以下兩行(ID說明: TEST_SERVICE_ID值與用戶指定的ID一致;TEST_SERVICE_ID宏值定義必須為這個,因為代碼中使用的就是這個)。
TEST_SERVICE_ID                                = 9016,
{TEST_SERVICE_ID, "testservice" },
  1. 子系統配置build/subsystem_config.json增加以下內容:
"testservice": {
"path":"testservice",
"name": "testservice"
 }
  1. 產品配置,如rk3568vendor/hihope/rk3568/config.json增加以下內容:
{
  "subsystem": "testservice",
  "components": [
    {
      "component": "testservice_part",
      "features": []
    }
  ]
}

注意:若用戶需要配置selinux相關配置,則將開關改為true,再根據自身需求進行相關配置

  1. 權限配置
    在相應產品目錄下vendor/hihope/rk3568/security_config/high_privilege_process_list.json增加以下內容:
{
    "name": "testservice",
    "uid": "system",
    "gid": ["root", "system"]
}

selinux安全配置

testservice/etc/sample_service.cfg。

"secon" : "u:r:testservice:s0"

base/security/selinux/sepolicy/base/public/service_contexts。

9016                 u:object_r:sa_testservice:s0

base/security/selinux/sepolicy/base/public/service.te。

type sa_testservice, sa_service_attr;

base/security/selinux/sepolicy/base/te/init.te。

allow init testservice:process { getattr rlimitinh siginh transition };

base/security/selinux/sepolicy/base/public/type.te。

type testservice, sadomain, domain;

/base/security/selinux/sepolicy/base/te目錄下增加新service的te文件,新增文件名即為服務名,例如:testservice。

allow testservice init_param:file { map open read };
allow testservice sa_testservice:samgr_class { add get };

4、示例演示

服務端修改

test_service.cpp在testservice/src/test_service.cpp注釋“// TODO: Invoke the business implementation”處添加各個接口的服務端實現代碼。本例實現一個簡單的加減法,服務端代碼如下所示:

int testService::testFunc(int v1, int v2, bool v3)
{
    // TODO: Invoke the business implementation
    int ret = 0;
    printf("service test begin \r\n");
    if (v3) {
        printf("service test v3 = true\r\n");
        ret = v1 + v2;
    } else {
        printf("service test v3 = false \r\n");
        ret = v1 - v2;
    }
    printf("service test end \r\n");
    return ret;
}

遠程方法的參數包裝已在生成代碼test_service_stub.cpp中統一處理,開發人員無需關注。

客戶端修改

test_client.cpp 為自動生成的客戶端樣例代碼。編譯燒錄后,會在/system/bin/目錄下生成可執行程序test_client
在testservice/src/test_client.cpp的main函數中使用proxy對象進行遠程方法調用,參考注釋示例。本例實現一個簡單的加減法,客戶端代碼如下所示:

int main(int argc, char *argv[])
{
    printf("---functest begin---\r\n");
    auto proxy = getRemoteProxy();
    uint32_t result = 0;
    // TODO: Invoke remote method by proxy
    result = proxy->testFunc(8, 5, false);
    printf("result is : %u\r\n", result);
    printf("---functest end---\r\n");

    IPCSkeleton::JoinWorkThread();
    return 0;
}

遠程方法的參數包裝已在生成代碼test_service_proxy.cpp中統一處理,開發人員無需關注。

編碼完成后,執行鏡像編譯命令。

./build.sh --product-name 產品名

若編譯rk3568開發板,則執行。

./build.sh --product-name rk3568

運行

將編譯好的鏡像燒錄到開發板后,使用hdc_std shell登錄開發板。
查看服務端進程是否已正常啟動。

ps -ef | grep testservice
system         682     1 0 08:00:08 ?     00:00:00 testservice_sa  --- 服務進程已正常運行

如下圖所示:

OpenHarmony系統之Service代碼一鍵生成工具介紹-開源基礎軟件社區

運行客戶端。

/system/bin/testclient

運行結果如下所示:

---functest begin---
result is : 3
---functest end---

(客戶端具體執行哪些遠程調用方法請在test_client.cpp的main方法中實現)。

總結

service生成工具是一個開源項目,我們歡迎有興趣的開發者試用該工具,并提出寶貴的改進意見,我們將繼續不斷優化和完善該工具軟件。我們相信,該工具會成為OpenHarmony生態圈中一個有用的補充。

想了解更多關于開源的內容,請訪問:

51CTO 開源基礎軟件社區

https://ost.51cto.com

責任編輯:jianghua 來源: 51CTO 開源基礎軟件社區
相關推薦

2024-06-21 10:27:21

Service生成工具鴻蒙

2024-06-21 10:07:06

鴻蒙service生成工具

2024-01-03 15:41:49

2020-10-10 14:57:16

代碼開發工具

2024-03-26 15:25:55

應用接口文件轉換工具鴻蒙

2020-06-30 15:10:58

命令行應用開發工具

2025-10-09 02:00:00

2021-11-30 08:09:52

PostgreSQLPGTune工具數據庫

2022-08-02 14:27:01

HDF驅動框架驅動開發

2024-03-15 14:34:12

Oracle數據庫一鍵巡檢

2019-10-11 11:00:53

Nginx神器前端

2015-02-09 15:25:52

換膚

2025-03-03 03:35:00

DeepSeekXmind思維導圖

2020-05-11 09:40:47

IDEA代碼神器

2023-12-19 15:45:07

Linux工具

2025-09-12 14:39:00

AI數字人視頻

2023-06-20 15:45:15

服務卡片鴻蒙

2023-03-05 23:11:07

Go語言服務

2022-01-09 23:09:08

Windows 10Windows微軟

2011-09-15 19:05:49

windows 7一鍵關機
點贊
收藏

51CTO技術棧公眾號

精品亚洲国产成av人片传媒 | 偷拍精品一区二区三区| 国产一区二区精品| 国产91亚洲精品久久久| 国产精品你懂的在线| 91丨九色丨国产在线| 日韩特黄一级片| 青青草国产成人a∨下载安卓| 日韩欧美久久一区| 性生交免费视频| 伦理在线一区| 中文字幕日本不卡| 欧美成人dvd在线视频| 国产偷人妻精品一区二区在线| 成人福利av| 国产三级欧美三级| 岛国一区二区三区高清视频| 少妇一级淫片日本| 夜夜嗨网站十八久久| 精品国产一区二区三区久久狼5月 精品国产一区二区三区久久久狼 精品国产一区二区三区久久久 | 91精品在线视频观看| 99精品欧美| 久久视频免费观看| 亚洲色图欧美色| 一区二区三区视频免费观看| 日韩欧美自拍偷拍| mm131亚洲精品| 456亚洲精品成人影院| 亚洲成人免费电影| www.亚洲成人网| 毛片在线看网站| 欧美国产激情一区二区三区蜜月| 精品不卡在线| 国产成人自拍一区| 国产精品中文字幕一区二区三区| 国产乱肥老妇国产一区二 | 开心激情五月网| 国产日韩欧美一区二区三区| 日韩精品在线观看一区| 成熟妇人a片免费看网站| 日韩视频在线直播| 日韩一区二区三区在线| 视频免费1区二区三区| 亚洲电影有码| 欧美午夜一区二区三区| mm1313亚洲国产精品无码试看| 一根才成人网| 色拍拍在线精品视频8848| 黄色动漫网站入口| 伊人色综合一区二区三区影院视频| 午夜在线成人av| 国产一区二区视频播放| 国产黄大片在线观看| 亚洲国产色一区| 一二三四视频社区在线| 男人天堂视频在线观看| 欧美日韩精品在线| av免费在线播放网站| 午夜激情成人网| 欧美影院午夜播放| 在线黄色免费看| 在线不卡一区| 精品久久久久一区| 亚洲av无码一区二区三区观看| 亚州av一区| 中文字幕一区二区三区电影| 日韩av手机在线免费观看| 亚洲综合自拍| 久久久久久久久久久91| 精品国产乱码一区二区| 日韩激情视频网站| 亚洲aⅴ男人的天堂在线观看 | 四虎成人永久免费视频| 日韩福利电影在线| 亚洲sss综合天堂久久| 六月婷婷综合网| 久久亚洲春色中文字幕久久久| 神马影院我不卡| av电影免费在线观看| 亚洲一区二区av电影| 成人在线观看a| 国产aⅴ精品一区二区四区| 精品久久久久一区| 久久久视频6r| 欧美视频四区| 国产精品av网站| 精品人妻无码一区二区| 91免费看视频| 男女激烈动态图| 麻豆免费在线| 337p亚洲精品色噜噜噜| 欧美熟妇精品黑人巨大一二三区| 999视频精品| 97人人爽人人喊人人模波多| 中文字幕久久久久| 处破女av一区二区| 亚洲人成人77777线观看| 欧美1234区| 欧美视频在线观看一区二区| 女性生殖扒开酷刑vk| 欧美亚洲精品在线| 91黑丝高跟在线| 国产精品色综合| 91麻豆蜜桃一区二区三区| ijzzijzzij亚洲大全| 伊人久久国产| 精品盗摄一区二区三区| 九九热久久免费视频| 亚洲国产二区| 91香蕉亚洲精品| 国产精品免费观看| 亚洲大片免费看| 亚洲第一成肉网| gogogo高清在线观看一区二区| 久久免费国产视频| a天堂视频在线| 亚洲国产精品ⅴa在线观看| 日本韩国欧美在线观看| 欧美日韩午夜电影网| 综合网日日天干夜夜久久| 天堂网av手机版| 成人蜜臀av电影| 久久国产精品免费观看| 91麻豆精品| 中文字幕日韩高清| 天天干,天天干| 91小视频免费观看| 日韩国产欧美亚洲| 国产三级精品三级在线观看国产| 久久99热精品| 国产av一区二区三区| 亚洲欧洲一区二区三区| 国产精品久久久毛片| 精品国产一区二区三区| 日韩美女福利视频| 欧美成熟毛茸茸| 日韩欧美在线免费| 四虎国产精品成人免费入口| 久久黄色网页| 欧美在线视频二区| 一呦二呦三呦精品国产| 亚洲日本成人女熟在线观看| 日韩中文字幕高清| 国产欧美日韩在线视频| 99视频在线视频| 日韩一区二区三区免费播放| 成人a在线视频| 国产超级va在线视频| 日韩欧美亚洲一区二区| 久久网中文字幕| 成人美女视频在线观看18| 国产二区视频在线| 欧美有码在线| 国产精品99久久久久久人| eeuss影院www在线播放| 欧美伦理视频网站| 免费在线视频一区二区| av电影天堂一区二区在线 | 日韩免费电影| 色爱av美腿丝袜综合粉嫩av | 国产成人综合网| av无码久久久久久不卡网站| 美女视频免费精品| 国产成人免费av电影| 香蕉视频网站在线观看| 日韩午夜激情视频| 日韩视频在线观看一区| 欧美国产在线观看| 91精品视频国产| 一区在线免费观看| 日本一区高清不卡| 国产一区二区三区免费在线 | 99热播精品免费| 麻豆成人在线看| 天堂中文字幕在线| 欧美高清激情brazzers| 国产无遮挡aaa片爽爽| 国产亚洲欧美激情| 欧美精品 - 色网| 国产情侣一区| 亚洲欧洲一区二区福利| 亚洲国产精品免费视频| 欧美孕妇与黑人孕交| 精品视频在线一区二区| 日韩av在线导航| 一区二区视频网站| 亚洲成在线观看| 国产又粗又硬视频| 99天天综合性| 色网站在线视频| 男人的天堂亚洲| 亚洲精品少妇一区二区| 国产亚洲欧美日韩在线观看一区二区| 成人在线免费观看视视频| av资源中文在线天堂| 色偷偷噜噜噜亚洲男人| 天天操天天舔天天干| 91精品国产色综合久久久蜜香臀| 日韩色图在线观看| 亚洲欧美日韩一区| 精品人妻一区二区三区蜜桃视频| 成人永久看片免费视频天堂| 精品亚洲一区二区三区四区| 在线观看一区| 50度灰在线观看| 欧美oldwomenvideos| 久久精品一区二区三区不卡免费视频 | 欧美/亚洲一区| 亚洲精品一区二区三| 欧美丝袜美腿| 国产精品大全| 高清精品久久| 91精品国产综合久久香蕉922| 欧美成人性网| 欧美在线视频一二三| 丝袜国产在线| 操日韩av在线电影| 日本三级在线视频| 在线播放日韩精品| 裸体xxxx视频在线| 日韩精品视频在线观看网址| 风流老熟女一区二区三区| 欧美猛男男办公室激情| 久久久精品毛片| 狠狠躁夜夜躁人人爽天天天天97| 免费一级片视频| 亚洲综合色网站| 手机在线免费看毛片| 一色桃子久久精品亚洲| 亚洲一级黄色录像| 国产精品污网站| 波多野吉衣中文字幕| xnxx国产精品| 国产精品1000部啪视频| 91热门视频在线观看| 国产精品无码专区| av不卡免费在线观看| 黑森林av导航| 波多野结衣精品在线| 一区二区三区四区影院| 成人午夜激情片| 在线黄色免费网站| a美女胸又www黄视频久久| 97人妻精品一区二区三区免费 | 国产欧美一区二区三区沐欲 | 成人欧美一区二区三区小说| 99精品视频在线免费播放| 亚洲视屏一区| 国产99在线免费| 亚洲啊v在线免费视频| 亚洲直播在线一区| 日韩中文字幕无砖| 国产精品9999久久久久仙踪林| 9国产精品午夜| 国产精品一区视频| 女同久久另类99精品国产| 欧美高清视频一区| 国产一区二区三区日韩精品| 日韩欧美一区二区在线观看| 日韩一区自拍| 国产精品视频二| 1000部精品久久久久久久久| 啊啊啊一区二区| 日韩av网站在线观看| 亚洲第一成肉网| 亚洲成人av片| 久久精品国产成人av| 日韩欧美在线播放| 在线观看国产精品入口男同| 欧美二区三区的天堂| 精品国产九九九| 日韩国产一区三区| а√天堂中文在线资源bt在线| 久久九九免费视频| 丁香花在线观看完整版电影| 国产91|九色| 色天使综合视频| 91观看网站| 久久超碰99| 超碰97在线看| 日日夜夜免费精品| 免费不卡av网站| 久久久美女艺术照精彩视频福利播放| 成人18视频免费69| 精品久久久久久中文字幕大豆网| 亚洲 国产 日韩 欧美| 日韩精品在线一区二区| 国产女主播在线写真| 欧美激情极品视频| 国精品产品一区| 精品国产一区二区三区麻豆小说 | 国产精品久久久99| 国产精品成人久久| 欧美美女一区二区在线观看| 欧美熟妇另类久久久久久不卡 | 好看的日韩精品视频在线| 久久精品av| 欧美成人免费高清视频| 国产成人综合在线| 国产又粗又硬视频| 天天综合天天综合色| 国产视频一区二区三区四区五区| 亚洲免费电影一区| 欧美xxxxhdvideosex| 成人国产精品色哟哟| 香蕉人人精品| 欧美一级免费播放| 国产资源精品在线观看| 国产av自拍一区| 午夜精品久久久久久久久久久 | 成人午夜免费视频| 中国毛片直接看| 欧美特级限制片免费在线观看| 凸凹人妻人人澡人人添| 欧美国产中文字幕| av在线精品| 日韩第一页在线观看| 另类小说一区二区三区| xxxx日本黄色| 日本精品免费观看高清观看| 天堂8在线视频| 久久久久久亚洲精品不卡| 高清精品久久| 欧美亚洲视频一区| 捆绑调教一区二区三区| 91精品国自产在线| 日韩欧美在线视频免费观看| 天天干在线观看| 97婷婷涩涩精品一区| 老司机精品在线| 国产伦精品一区二区三区四区视频_| 国产成人av福利| 免费中文字幕在线观看| 日韩一区二区三免费高清| 日韩子在线观看| 91精品视频大全| 999精品视频| а 天堂 在线| 一区二区三区精品| www.色视频| 久久久久久中文| 红杏aⅴ成人免费视频| 黄色大片中文字幕| 99精品欧美一区二区蜜桃免费| 国产一级做a爱片久久毛片a| 日韩成人网免费视频| 伊人久久精品一区二区三区| 欧美亚洲丝袜| 日本伊人色综合网| 99自拍偷拍视频| 制服丝袜在线91| 九色91在线| 久久精品午夜一区二区福利| 美女91精品| 蜜桃av免费在线观看| 制服丝袜中文字幕一区| 色呦呦久久久| 久久久久久九九| 免费成人美女在线观看| 国产一区二区三区视频播放| 欧美一卡二卡三卡四卡| 成人性生交大片免费看网站| 国产女人水真多18毛片18精品| 美日韩精品视频| 任你操精品视频| 亚洲变态欧美另类捆绑| 69久成人做爰电影| 日本黄色片在线播放| 亚洲欧洲国产专区| 国产高清视频免费观看| 97久久精品人搡人人玩| 欧美午夜精品一区二区三区电影| 亚洲欧美自拍另类日韩| 亚洲欧美日韩国产另类专区| 人成网站在线观看| 国产精品久久久精品| 欧美日韩综合| 五月天精品视频| 欧美成人精精品一区二区频| 久久sese| 亚洲国产欧美一区二区三区丁香婷| 日本免费不卡视频| 国产成人精品在线播放| 欧美.www| 91资源在线播放| 亚洲高清福利视频| 欧美高清影院| a级黄色一级片| 国产精品久久久久影院色老大| 国产一二三四区在线观看| 免费精品99久久国产综合精品| 九九在线观看视频| 国产一区二区三区在线| 51vv免费精品视频一区二区| 日本成人在线免费视频| 亚洲最新视频在线播放| 91网在线播放| 久久久人人爽| 国产成人精品影视| 中文字幕在线观看1|