• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            ++wythern++

            X presents Y for a better Z

            #

            【轉(zhuǎn)】編譯運(yùn)行android emulator

            原文在這里


            source buile/envsetup.sh

            lunch sdk-eng

            make sdk -j2

             

            編譯完之后,sdk安裝在了下面的目錄里

            ANDROIID_DIR/out/host/linux-x86/sdk

            在這個(gè)目錄下有一個(gè)壓縮包,里面就是我們從eclipse里下載的sdk的包。

            如果你做過(guò)app開(kāi)發(fā)都會(huì)知道,我們只有下載了不同版本的sdk之后才能創(chuàng)建不同版本的模擬器,我們編譯完sdk之后就可以創(chuàng)建模擬器了

            $ cd ANDROIID_DIR/out/host/linux-x86/sdk/android-sdk_eng.linux_linux-x86/tools

            首先,查看當(dāng)前sdk的Id號(hào),用于創(chuàng)建一個(gè)模擬器

            $ ./android list targets

            Available Android targets:
            ----------
            id: 1 or "android-14"
                 Name: Android 4.0
                 Type: Platform
                 API level: 14
                 Revision: 2
                 Skins: WXGA800, WQVGA400, WXGA720, HVGA, WVGA854, WQVGA432, WVGA800 (default), QVGA, WSVGA
                 ABIs : no ABIs.

             

            創(chuàng)建一個(gè)模擬器

            $ ./android create avd -n mydroid -t 1

            -n 表示指定模擬器的名字, -t表示指定創(chuàng)建模擬的版本id

            啟動(dòng)模擬器

            $ ./emulator &

            由于模擬器要啟動(dòng)android系統(tǒng),他要使用幾個(gè)映像文件,分別是:kernel-qemu , system.img, userdata.img, ramdisk.img

            kernel-qemu:內(nèi)核映像文件,它是linux操作系統(tǒng)針對(duì)qemu模擬器編譯的內(nèi)核文件,里面安裝有qemu的仿真硬件驅(qū)動(dòng),如果將來(lái)在開(kāi)發(fā)板或手機(jī)上移植android,那么,第一步就是要先make出一個(gè)支持開(kāi)發(fā)板或手機(jī)的kernel來(lái)

            system.img:是android系統(tǒng)的文件系統(tǒng),里面包含了android系統(tǒng)的應(yīng)用程序(apk),系統(tǒng)用到的各種庫(kù)(jar, so, a)和資源, 配置文件(etc目錄下),系統(tǒng)命令(bin, usr/bin, xbin) ,該映像文件是由out/target/product/PRODUCT/system目錄打包生成的,我們可以對(duì)這個(gè)目錄里的東西進(jìn)行定制 化,比如,你要想讓android系統(tǒng)默認(rèn)為安裝一個(gè)應(yīng)用程序,那么可以將要安裝的apk文件拷貝到out/target/product /PRODUCT/system/app目錄下

            userdata.img:用戶數(shù)據(jù)映像,里面包含有程序安裝信息,好比如是windows的C:/Program Files/目錄

            ramdisk.img:內(nèi)存磁盤(pán)映像,這個(gè)文件對(duì)于沒(méi)有做過(guò)Linux移植的人來(lái)說(shuō),不好理解,linux內(nèi)核啟動(dòng)起來(lái),要掛載一個(gè)文件系統(tǒng)作為 自己的根文件系統(tǒng),通常文件系統(tǒng)是存放在塊設(shè)備上的,也就是硬盤(pán)或flash上的。一個(gè)linux的根文件系統(tǒng)里面通常包含有以下內(nèi)容:

            usr:最大的目錄,存放應(yīng)用程序和文件

            bin:常用的命令目錄

            etc:系統(tǒng)相關(guān)配置文件目錄

            dev:系統(tǒng)設(shè)備目錄

            opt:主機(jī)額外安裝的軟件目錄

            boot:存放系統(tǒng)啟動(dòng)時(shí)必須讀取的配置文件,包括核心 (kernel) 在內(nèi)

            home:普通用戶家目錄

            lib:系統(tǒng)使用庫(kù)目錄

            var:日志文件目錄

            lost+found:系統(tǒng)不正常產(chǎn)生錯(cuò)誤時(shí),會(huì)將一些遺失的片段放置于此目錄下

            mnt:外設(shè)的掛載點(diǎn)目錄

            proc:虛擬文件目錄,是系統(tǒng)信息的映射

            root:root用戶家目錄

            sbin:超級(jí)命令所在目錄

            tmp:一般使用者或者是正在執(zhí)行的程序暫時(shí)放置文件的地方

            而ramdisk.img這個(gè)映像,其實(shí)里面就是上述目錄和一些基本配置文件的打包映像,ramdisk是將映像加載到內(nèi)存里,然后將內(nèi)存當(dāng)做一個(gè)塊設(shè)備(硬盤(pán))來(lái)使用,所以說(shuō)通常ramdisk.img通常比較小。當(dāng)然,除了上面的FHS標(biāo)準(zhǔn)的Linux文件系統(tǒng)目錄以外,android系統(tǒng)里,還增加了data,system目錄。

            前面所述的userdata.img和system.img映像,其實(shí)就是掛載到data,system目錄下的。

            我們可以通過(guò)下面的命令,來(lái)指定模擬器,啟動(dòng)哪個(gè)內(nèi)核,使用哪些文件系統(tǒng):

            ./emulator -avd mydroid -system ANDROIID_DIR/out/target/product/generic/system.img  -data ANDROIID_DIR/out/target/product/generic/userdata.img -ramdisk ANDROIID_DIR/out/target/product/generic/ramdisk.img  -kernel ANDROIID_DIR/prebuilt/android-arm/kernel/kernel-qemu-armv7
            -system指定system.img

            -data指定userdata.img

            -ramdisk指定ramdisk.img

            -kernel指定內(nèi)核映像

            實(shí)驗(yàn):對(duì)androd系統(tǒng)進(jìn)行瘦身

            android系統(tǒng)抽屜里顯示的應(yīng)用存放在out/target/product/PRODUCT/system/app目錄里,我們可以將一些不 常用的,不想用的apk文件刪除,一來(lái)減小Android的體積,二來(lái)可以加快系統(tǒng)啟動(dòng)速度,因?yàn)樵谙到y(tǒng)啟動(dòng)時(shí),會(huì)掃描system/app目錄下的 apk文件,對(duì)比有沒(méi)有安裝更新。

            刪除一些apk,去掉計(jì)算器,日歷,電話,短信

            $ rm -f ANDROIID_DIR/out/target/product/PRODUCT/system/app/Calculator.*

            $ rm -f ANDROIID_DIR/out/target/product/PRODUCT/system/app/Calendar.*

            $ rm -f ANDROIID_DIR/out/target/product/PRODUCT/system/app/Email.*

            $ rm -f ANDROIID_DIR/out/target/product/PRODUCT/system/app/Message.*

            $ rm -f ANDROIID_DIR/out/target/product/PRODUCT/system/app/Telephone.*

            刪除了之后,執(zhí)行下面的命令,只編譯system.img,而不去檢查依賴關(guān)系,這樣很快就能編譯完

            $ make snod

            注:上述命令必須要保證執(zhí)行了source buile/envsetup.sh和lunch full-eng之后,以后只要是說(shuō)make,都指已經(jīng)執(zhí)行了前述兩步驟

            snod的意思是編譯system imge no dependency

            然后,再重新啟動(dòng)模擬器,指定自己編譯的system.img,查看抽屜里有沒(méi)有我們刪除的應(yīng)用

            ./emulator -avd mydroid -system ANDROIID_DIR/out/target/product/generic/system.img  -data ANDROIID_DIR/out/target/product/generic/userdata.img -ramdisk ANDROIID_DIR/out/target/product/generic/ramdisk.img  -kernel ANDROIID_DIR/prebuilt/android-arm/kernel/kernel-qemu-armv7

            思考:我們能不能將全部的system/app下的apk刪除掉,如果不能,哪些必須要保留,為什么?

            posted @ 2013-01-06 16:34 wythern 閱讀(3512) | 評(píng)論 (0)編輯 收藏

            畫(huà)了幾張圖,關(guān)于Android DisplayManagerService.

            1. DisplayManageService 的簡(jiǎn)單類關(guān)系圖


            2. Time Flow of Overlay Display Simulation in Android 4.2 Setting





            嗯,隨便畫(huà)畫(huà),不懂的好多。。。。。

            posted @ 2012-12-27 18:19 wythern 閱讀(1179) | 評(píng)論 (0)編輯 收藏

            去掉Android屏幕周邊閃爍的紅框

            disable StrictMode,在Setting->Developer Options下面。
            如果不成功,試試
            setprop persist.sys.strictmode.visual 0

            setprop persist.sys.strictmode.disable 1


            重啟以后看看生效了沒(méi)有。

            posted @ 2012-12-18 16:26 wythern 閱讀(616) | 評(píng)論 (0)編輯 收藏

            [轉(zhuǎn)] 為Gnome-shell或Unity添加程序啟動(dòng)圖標(biāo)

            http://qing.weibo.com/1544809353/5c13eb8933001usw.html

            為Gnome-shell或Unity添加程序啟動(dòng)圖標(biāo)

            2012年07月21日 14:19

            使用Gnome-shell或Unity桌面時(shí),我喜歡直接按win鍵,輸入程序的英文名稱,(通常只需要打幾個(gè)字母)把程序過(guò)濾出來(lái)之后,按回車就啟動(dòng) 了,比起點(diǎn)開(kāi)”開(kāi)始菜單“去找,快速很多。但如果自己手工下載或編譯的程序,也要通過(guò)打名稱來(lái)啟動(dòng)的話,就需要為Gnome-shell或Unity或開(kāi) 始菜單創(chuàng)建一個(gè)入口。通常系統(tǒng)都自帶了一個(gè)工具叫”主菜單編輯器“,直接輸入命令:”alacarte“ 啟動(dòng),可以很容易地編輯程序的分類,刪除程序入口,創(chuàng)建新的程序入口。

            posted @ 2012-12-17 17:12 wythern 閱讀(452) | 評(píng)論 (0)編輯 收藏

            在家怎么訪問(wèn)公司網(wǎng)絡(luò)

            做個(gè)記號(hào)先~

            穿越內(nèi)網(wǎng),在家訪問(wèn)公司內(nèi)部網(wǎng)絡(luò)
            http://blog.csdn.net/panpanloveruth/article/details/6394834

            家里怎么才能遠(yuǎn)程桌面連接公司的電腦?介紹一個(gè)軟件"應(yīng)用虛擬網(wǎng) Gport"

            http://coolerfeng.blog.51cto.com/133059/55528/

            posted @ 2012-12-13 14:06 wythern 閱讀(346) | 評(píng)論 (0)編輯 收藏

            一些lib頭文件找不到的解決辦法

            幾個(gè)編譯問(wèn)題:

            1.XText.h
            X11/extensions/XTest.h:沒(méi)有那個(gè)文件或目錄 編譯中斷。
            sudo apt-get install xorg-dev

            2.openssl.h
            sudo apt-get install libssl-dev

            3.SDL.h
            sudo apt-get install libsdl1.2-dev

            順便看了看SDL的介紹:SDL是Simple DirectMedia Layer(簡(jiǎn)易直控媒體層)的縮寫(xiě)。它是一個(gè)跨平臺(tái)的多媒體庫(kù),以用于直接控制底層的多媒體硬件的接口。主要用在開(kāi)發(fā)游戲上。
            以后有機(jī)會(huì)研究一下!

            4.jack.h
            sudo apt-get install libjack-dev

            5.videodev.h
            sudo apt-get install libv4l-dev; #注意這里是 libv4L 而不是 libv41;

            可是,現(xiàn)在你繼續(xù)安裝,依然會(huì)出現(xiàn)上述錯(cuò)誤。這是由于這樣安裝的 libv4L 庫(kù)把頭文件名稱改為

            /usr/include/libv4l1-videodev.h

            等。知道了原因,解決辦法也很簡(jiǎn)單,只需要把出錯(cuò)這行代碼的 #include 頭文件改掉,即把

            #include <linux/videodev.h>

            改為

            #include <libv4l1-videodev.h>

            或者創(chuàng)建一個(gè)軟鏈接

            sudo ln -s /usr/include/libv4l1-videodev.h /usr/include/linux/videodev.h


            6. bzlib.h

            sudo apt-get install libbz2-dev


            7. faac.h

            sudo apt-get install libfaac-dev


            8. lame.h

            sudo apt-get install liblame-dev


            9. theoraenc.h:

            sudo apt-get install libtheora-dev


            10. x264.h

            sudo apt-get install libx264-dev 


            11. xvidcore.h
            sudo apt-get install libxvidcore-dev 


            12. vdpau.h
            sudo apt-get install libvdpau-dev 


            sudo apt-get install yasm








            posted @ 2012-11-21 11:25 wythern 閱讀(3082) | 評(píng)論 (0)編輯 收藏

            [轉(zhuǎn)]給firefox火狐添加自定義搜索引擎

            原文請(qǐng)猛擊這里

            http://mycroft.mozdev.org/

            在這里有火狐自帶的10個(gè)搜索引擎分地區(qū)和分語(yǔ)言的搜索代碼,直接點(diǎn)擊你要添加的代碼,就ok了。。

            例如添加Google搜索引擎:

            點(diǎn)擊進(jìn)入網(wǎng)頁(yè)上Google頁(yè)面有如下顯示

            A9 √  Google (google.com) by Mycroft Project [Review]

            直接點(diǎn)擊Google就行了。。。

            A9 √  Google CN - 中文網(wǎng)頁(yè) (google.cn) by Mycroft Project [Review]

            直接點(diǎn)擊Google CN - 中文網(wǎng)頁(yè)就行了。。。

             

            另外,雖然這些是火狐的官方網(wǎng)站的代碼,ie下添加也可用~

            posted @ 2012-10-01 22:33 wythern 閱讀(1181) | 評(píng)論 (0)編輯 收藏

            [轉(zhuǎn)]Android系統(tǒng)systemProperties設(shè)置分析

            作者:徐建祥(netpirate@gmail.com)
            日期:2009/11/11
            網(wǎng)址:http://www.anymobile.org

            Android 的系統(tǒng)屬性包括兩部分:文件保存的持久屬性和每次開(kāi)機(jī)導(dǎo)入的cache屬性。前者主要保存在下面幾個(gè)文件中:

            bionic/libc/include/sys/_system_properties.h
            1     #define PROP_SERVICE_NAME "property_service"
            2     #define PROP_PATH_RAMDISK_DEFAULT  "/default.prop"
            3     #define PROP_PATH_SYSTEM_BUILD     "/system/build.prop"
            4     #define PROP_PATH_SYSTEM_DEFAULT   "/system/default.prop"
            5     #define PROP_PATH_LOCAL_OVERRIDE   "/data/local.prop"

            后者則通過(guò)frameworks/base/core/java/android/os/SystemProperties.java的接口定義,

             1     private static native String native_get(String key);
             2     private static native String native_get(String key, String def);
             3     private static native void native_set(String key, String def);
             4     public static void set(String key, String val) {
             5         if (key.length() > PROP_NAME_MAX) {
             6             throw new IllegalArgumentException("key.length > " + PROP_NAME_MAX);
             7         }
             8         if (val != null && val.length() > PROP_VALUE_MAX) {
             9             throw new IllegalArgumentException("val.length > " +
            10                 PROP_VALUE_MAX);
            11         }
            12         native_set(key, val);
            13     }

            該接口類在初始化運(yùn)行環(huán)境中注冊(cè)對(duì)應(yīng)的cpp接口android_os_SystemProperties.cpp,實(shí)際操作通過(guò)JNI調(diào)用的是cpp文件對(duì)應(yīng)的接口:

            frameworks/base/core/jni/AndroidRuntime.cpp
            1     namespace android {
            2     extern int register_android_os_SystemProperties(JNIEnv *env);
            3     }

            frameworks/base/core/jni/android_os_SystemProperties.cpp
             1     static void SystemProperties_set(JNIEnv *env, jobject clazz, jstring keyJ, jstring valJ)
             2     {
             3         int err;
             4         const char* key;
             5         const char* val;
             6         key = env->GetStringUTFChars(keyJ, NULL);
             7         if (valJ == NULL) {
             8             val = "";       /* NULL pointer not allowed here */
             9         } else {
            10             val = env->GetStringUTFChars(valJ, NULL);
            11         }
            12         err = property_set(key, val);
            13         env->ReleaseStringUTFChars(keyJ, key);        
            14         if (valJ != NULL) {
            15             env->ReleaseStringUTFChars(valJ, val);
            16         }
            17     }

            設(shè)置key的value時(shí),需要作鑒權(quán),根據(jù)設(shè)置程序所在進(jìn)程的fd獲知uid值,比如system server進(jìn)程可以設(shè)置net打頭的key,不可以設(shè)置gsm打頭的key,相關(guān)的定義如下:

            system/core/include/private/android_filesystem_config.h
            1     #define AID_ROOT             0  /* traditional unix root user */
            2     #define AID_SYSTEM        1000  /* system server */
            3     #define AID_RADIO         1001  /* telephony subsystem, RIL */
            4     #define AID_DHCP          1014  /* dhcp client */
            5     #define AID_SHELL         2000  /* adb and debug shell user */
            6     #define AID_CACHE         2001  /* cache access */
            7     #define AID_APP          10000 /* first app user */

            system/core/init/property_service.c
             1     #define PERSISTENT_PROPERTY_DIR  "/data/property"
             2     struct {
             3         const char *prefix;
             4         unsigned int uid;
             5     } property_perms[] = {
             6         { "net.rmnet0.",    AID_RADIO },
             7         { "net.gprs.",      AID_RADIO },
             8         { "ril.",           AID_RADIO },
             9         { "gsm.",           AID_RADIO },
            10         { "net.dns",        AID_RADIO },
            11         { "net.usb0",       AID_RADIO },
            12         { "net.",           AID_SYSTEM },
            13         { "dev.",           AID_SYSTEM },
            14         { "runtime.",       AID_SYSTEM },
            15         { "hw.",            AID_SYSTEM },
            16         { "sys.",        AID_SYSTEM },
            17         { "service.",    AID_SYSTEM },
            18         { "wlan.",        AID_SYSTEM },
            19         { "dhcp.",        AID_SYSTEM },
            20         { "dhcp.",        AID_DHCP },
            21         { "debug.",        AID_SHELL },
            22         { "log.",        AID_SHELL },
            23         { "service.adb.root",    AID_SHELL },
            24         { "persist.sys.",    AID_SYSTEM },
            25         { "persist.service.",   AID_SYSTEM },
            26         { NULL, 0 }
            27     };
            28     int property_set(const char *name, const char *value)
            29     {
            30         property_changed(name, value);
            31         return 0;
            32     }
            33     int start_property_service(void)
            34     {
            35         int fd;
            36 
            37         load_properties_from_file(PROP_PATH_SYSTEM_BUILD);
            38         load_properties_from_file(PROP_PATH_SYSTEM_DEFAULT);
            39         load_properties_from_file(PROP_PATH_LOCAL_OVERRIDE);
            40         /* Read persistent properties after all default values have been loaded. */
            41         load_persistent_properties();
            42 
            43         fd = create_socket(PROP_SERVICE_NAME, SOCK_STREAM, 066600);
            44         if(fd < 0return -1;
            45         fcntl(fd, F_SETFD, FD_CLOEXEC);
            46         fcntl(fd, F_SETFL, O_NONBLOCK);
            47 
            48         listen(fd, 8);
            49         return fd;
            50     }
            51     void handle_property_set_fd(int fd)
            52     {
            53         switch(msg.cmd) {
            54         case PROP_MSG_SETPROP:
            55             msg.name[PROP_NAME_MAX-1= 0;
            56             msg.value[PROP_VALUE_MAX-1= 0;
            57 
            58             if(memcmp(msg.name,"ctl.",4== 0) {
            59                 if (check_control_perms(msg.value, cr.uid)) {
            60                     handle_control_message((char*) msg.name + 4, (char*) msg.value);
            61                 } else {
            62                     ERROR("sys_prop: Unable to %s service ctl [%s] uid: %d pid:%d\n",
            63                             msg.name + 4, msg.value, cr.uid, cr.pid);
            64                 }
            65             } else {
            66                 if (check_perms(msg.name, cr.uid)) {
            67                     property_set((char*) msg.name, (char*) msg.value);
            68                 } else {
            69                     ERROR("sys_prop: permission denied uid:%d  name:%s\n",
            70                           cr.uid, msg.name);
            71                 }
            72             }
            73             break;
            74 
            75         default:
            76             break;
            77         }
            78     }

            在開(kāi)機(jī)啟動(dòng)后的init操作中,會(huì)執(zhí)行一個(gè)loop循環(huán),當(dāng)檢測(cè)到有新的設(shè)置時(shí),進(jìn)入設(shè)置流程,鑒權(quán)失敗會(huì)提示相關(guān)的異常,如sys_prop: permission denied uid:1000  name:gsm.phone.id

            system/core/init/init.c
             1     void property_changed(const char *name, const char *value)
             2     {
             3         if (property_triggers_enabled) {
             4             queue_property_triggers(name, value);
             5             drain_action_queue();
             6         }
             7     }
             8     int main(int argc, char **argv)
             9     {
            10         parse_config_file("/init.rc");
            11         qemu_init();
            12         device_fd = device_init();
            13         property_init();
            14         fd = open(console_name, O_RDWR);
            15         property_set_fd = start_property_service();
            16         ufds[0].fd = device_fd;
            17         ufds[0].events = POLLIN;
            18         ufds[1].fd = property_set_fd;
            19         ufds[1].events = POLLIN;
            20         ufds[2].fd = signal_recv_fd;
            21         ufds[2].events = POLLIN;
            22         fd_count = 3;
            23         for(;;) {
            24             if (ufds[0].revents == POLLIN)
            25                 handle_device_fd(device_fd);
            26 
            27             if (ufds[1].revents == POLLIN)
            28                 handle_property_set_fd(property_set_fd);
            29             if (ufds[3].revents == POLLIN)
            30                 handle_keychord(keychord_fd);
            31         }
            32         return 0;
            33     }

            posted @ 2012-09-29 10:35 wythern 閱讀(378) | 評(píng)論 (0)編輯 收藏

            給Android JellyBean添加internal resource

            想給Androird JellyBean 4.1.0的framework里面添加一個(gè)res,把xml寫(xiě)好以后編譯時(shí)候報(bào)錯(cuò)

                    int ticker = com.android.internal.R.string.xxxxxxxxxx;
                                                              ^
            frameworks/base/services/java/com/android/server/StatusBarManagerService.java:143: cannot find symbol
            symbol  : variable xxxxxxxxxx
            location: class com.android.internal.R.drawable

            解決辦法很簡(jiǎn)單,在MakeJavaSymbols.sed里面有:
            # Run this on the errors output by javac of missing resource symbols,
            # to generate the set of <java-symbol> commands to have aapt generate
            # the symbol for them.
            #
            # For example: make framework 2>&1 | sed -n -f MakeJavaSymbols.sed | sort -u

            重新編譯會(huì)產(chǎn)生
              <java-symbol type="string" name="xxxxxxxxxx" />
            把這個(gè)copy到publlic.xml。再重新編譯一次就搞定了。

            public.xml也提到
            <!-- Private symbols that we need to reference from framework code.  See
                   frameworks/base/core/res/MakeJavaSymbols.sed for how to easily generate
                   this.
              -->

            看起來(lái)所有private的internal res都必須在這里聲明一下。JellyBean以前貌似沒(méi)有這么麻煩。好在他提供了一個(gè)sed,免得全部手寫(xiě)。





            posted @ 2012-09-20 14:40 wythern 閱讀(2265) | 評(píng)論 (2)編輯 收藏

            [轉(zhuǎn)]解決eclipse鍵盤(pán)輸入無(wú)響應(yīng)的問(wèn)題

            原文在這里

            很簡(jiǎn)單,在終端輸入:
            im-switch -s scim-bridge
            然后注銷重新登錄即可。

            具體詳情請(qǐng)參考一下國(guó)外網(wǎng)站的鏈接:
            https://bugs.launchpad.net/ubuntu/+sour ... bug/293001

            posted @ 2012-08-22 16:14 wythern 閱讀(520) | 評(píng)論 (0)編輯 收藏

            僅列出標(biāo)題
            共6頁(yè): 1 2 3 4 5 6 
            亚洲人成电影网站久久| 亚洲AV无码久久精品成人| 亚洲国产成人久久精品影视| 97久久久久人妻精品专区 | 国产高潮国产高潮久久久91| 国产99久久久久久免费看 | 欧美大香线蕉线伊人久久| 久久AV高清无码| 久久亚洲精品无码观看不卡| 色狠狠久久AV五月综合| 久久国产香蕉视频| 亚洲午夜无码久久久久| 观看 国产综合久久久久鬼色 欧美 亚洲 一区二区 | 国产精品美女久久久免费| 伊人久久精品无码av一区| 91久久国产视频| 一本色道久久99一综合| 久久国产成人午夜AV影院| 久久久久久国产精品无码超碰| 久久精品99无色码中文字幕| 久久国产色AV免费看| 国产精品一区二区久久精品涩爱| 99久久精品午夜一区二区| 久久久久青草线蕉综合超碰 | 久久91这里精品国产2020| 国内精品久久久人妻中文字幕| 久久久久久久综合狠狠综合| 国产视频久久| 久久99国产精品成人欧美| 久久福利青草精品资源站免费| 久久丫精品国产亚洲av| 久久亚洲春色中文字幕久久久| 亚洲中文久久精品无码ww16| 久久久久久国产精品美女| 久久久久人妻一区精品| 久久久91人妻无码精品蜜桃HD| 久久久精品人妻无码专区不卡| 久久久久国色AV免费观看| 色婷婷噜噜久久国产精品12p| 亚洲国产精品成人久久蜜臀| 亚洲欧美一区二区三区久久|