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

Titanium中Android模塊開發指南

移動開發 Android
本指南教你如何在Titanium中開發Android模塊從而擴展Titanium的功能. 在本指南中,你將會學習到以下幾點:設置你的環境能夠構建Android模塊;構建一個Android模塊;打包一個Android模塊;理解Android模塊API.
  1. @Kroll.proxy   
  2. public class MyProxy extends KrollProxy {   
  3.   @Kroll.method(runOnUiThread=true)   
  4.   public int doSomething() {   
  5.     return 100;   
  6.   }   
  7. }   

官方地址:Android Module Development Guide

摘要

本指南教你如何在Titanium中開發Android模塊從而擴展Titanium的功能. 在本指南中,你將會學習到以下幾點:

  • 設置你的環境能夠構建Android模塊
  • 構建一個Android模塊
  • 打包一個Android模塊
  • 理解Android模塊API

Titanium Android模塊開發指南

為了使用Android模塊SDK, 你必須具有Android SDK相關的知識. 本指南將假定你知道如何使用原生的Android SDK進行開發.

前提條件

  • Titanium Mobile SDK 1.5 及以上版本
  • 最新版的Python( >= 2.5), 必須在PATH路徑中, 或定義PYTHONHOME常量 在Windows中, Titanium Developer / Desktop綁定了Python2.5,因此不需要額外配置
  • Oracle JDK
  • Android SDK
  • Ant 1.7.1 或以上版本,必須包含在PATH中. 如果你不想單獨安裝Ant,你可以使用Eclipse

環境設置

參照 Titanium命令行工具 完成環境設置.

創建一個模塊

要創建一個模塊,我們需要傳遞一些參數給titanium命令行工具.

  • 模塊的名字 ($MODULE_NAME) 和ID ($MODULE_ID)
  • 模塊的目標運行平臺 (android)
  • Android SDK的安裝目錄 ($ANDROID_SDK) 例如 /opt/android-sdk

對于一個Android, 我們以如下參數創建一個模塊:

引用
  titanium create --platform=android --type=module --name=$MODULE_NAME --id=$MODULE_ID --android=$ANDROID_SDK

作為一個示例,我們創建了一個運行簡單的加減操作的模塊,命名為“calc”,給定其ID為“org.appcelerator.calc”,并把Android SDK的路徑指向/path/to/android-sdk

引用

titanium create --platform=android --type=module --name=calc --id=org.appcelerator.calc --android=/path/to/android-sdk

如果運行成功,應該能在當前目錄下看到新創建的 calc 子目錄了.

模塊項目目錄布局

在模塊目錄中, 你可以看到剛生產的文件和目錄樹:

  • LICENSE – 模塊的版權說明
  • build.properties – Ant的properties文件,包含Titanium SDK和Android SDK的路徑
  • build.xml – Ant 構建腳本 – 用于構建, 分發和測試模塊
  • manifest – 包含模塊的版本,作者,許可,版權,名稱,ID,GUID和平臺信息的清單文件
  • timodule.xml – 放置自定義的activities和想插入到AndroidManifest.xml文件的配置
  • hooks – 腳本目錄,在模塊被添加/安裝/刪除/卸載的時候調用
  • documentation – 生成的Markdown文件,包含了你的模塊的例子文檔
  • assets – 模塊所需的其他資源比如圖像等放這里(詳看README)
  • lib – 放置需要的第三方JAR文件,他們將會被自動的追加到你的工程和模塊zip中[*]src – 模塊源代碼目錄
  • example – 模塊例子工程

Eclipse集成

TItanium 會創建導入為Eclipse項目所需要的文件, 在Eclipse 執行如下操作導入calc項目:

  • 在頂部菜單中單擊 “File > Import…”
  • 打開General文件夾后,雙擊“Existing Project into Workspace”
  • 點擊“Select root directory”之后的“Browse…”
  • 選擇模塊項目目錄
  • 在 Projects 列表中可以看到你的模塊了:
  • 按下“Finish”后,就應該能夠在Eclipse的”Package Explorer “下看到你的模塊工程了.

構建模塊zip

dist目錄下的zip包是模塊的可分發形式, 它通常遵循的命名模式為$MODULE_ID-android-$MODULE_VERSION.zip

其中包含:

  • 編譯的包含類,生成的綁定,以及資源文件的JAR包
  • lib目錄中的第三方JAR包
  • 模塊清單, 包括作者,版本,許可,版權等部署需要的元數據
  • 模塊的timodule.xml文件

通過Ant從命令行構建

如果ant已經在PATH中, 你可以簡單地在模塊頂層目錄執行, 你會看到如下輸出:

引用
  $ ant
Buildfile: /Users/marshall/Code/test/test_modules/calc/build.xml

init:
  [mkdir] Created dir: /Users/marshall/Code/test/test_modules/calc/build/classes
  [mkdir] Created dir: /Users/marshall/Code/test/test_modules/calc/dist

process.annotations:
  [javac] Compiling 2 source files to /Users/marshall/Code/test/test_modules/calc/build/classes
  [javac] Note: [KrollBindingGen] Running Kroll binding generator.
  [javac] Note: [KrollBindingGen] No binding data found, creating new data file.
  [javac] Note: [KrollBindingGen] Found binding for module Calc
  [javac] Note: [KrollBindingGen] Found binding for proxy Example

compile:
  [javac] Compiling 2 source files to /Users/marshall/Code/test/test_modules/calc/build/classes
  [copy] Copying 1 file to /Users/marshall/Code/test/test_modules/calc/build/classes

dist:
  [jar] Building jar: /Users/marshall/Code/test/test_modules/calc/dist/calc.jar
  [zip] Building zip: /Users/marshall/Code/test/test_modules/calc/dist/org.appcelerator.calc-android-0.1.zip

BUILD SUCCESSFUL
Total time: 1 second

從Eclipse構建

如果你米有安裝Ant,或者你更愿意使用Eclipse,參照下面的步驟:

  • 在模塊目錄中右擊build.xml文件
  • 點擊RunAs>AntBuild
  • 你將看到類似的輸出

模塊分發

要再TitaniumMobile應用程序中使用模塊,參照下面的步驟:

[list]

  • 復制模塊的zip文件到Titanium應用程序的根目錄,或TitaniumSDK的根目錄
  • 在應用程序的tiapp.xml文件的標簽內添加如下XML:

Xml代碼

  1. <!-- $MODULE_VERSION should be the same as "version" in the module manifest -->    
  2. [*]<modules>    
  3. [*]    <module version="$MODULE_VERSION">$MODULE_ID</module>    
  4. [*]    <!-- For example, if we were adding the calc module: -->    
  5. [*]    <module version="0.1">org.appcelerator.calc</module>    
  6. [*]</modules>    
  • 在應用程序代碼中使用require函數包含模塊代碼到應用程序中,例如:
    1. var Module = require('$MODULE_ID');   
    2. [*]// For example, to load the calc module:   
    3. [*]var Calc = require('org.appcelerator.calc');   
  •  下一次應用程序啟動或構件時, 模塊應該被包含在應用程序中了.[/list]

    用嵌入的Example項目進行測試

    使你的模塊能夠工作,最簡單的方法是在example/app.js文件中編寫代碼,并使用ant運行和測試模塊代碼.example目錄等同于應用程序的Resources目錄.

    運行示例項目的過程非常簡單:

  • 運行android模擬器
  • 模擬器啟動后便可運行你的模塊代碼了.

運行Android模擬器

從命令行在模塊項目木下運行:

引用

  ant run.emulator

你應該會在控制臺中看到模擬器的輸出!

在Eclipse中配置調用信息:

  • 右擊build.xml, 點擊Run As > Ant Build… (第二個選項)
  • 為了一個新的啟動配置將會打開一個配置設置的窗口
  • 然后選擇execute對象,去掉**dist對象,選擇run.emulator對象
  • 重命名啟動配置,然他跟明顯的看的出來含義,比如“run emulator”
  • 窗口長啥樣的一個例子,calc module:
  • 點擊Apply然后運行
  • 這樣你就可以通過外部工具菜單(或者工具欄)的run運行這個啟動配置
  • 你應該能看到在Eclipse的控制臺窗口,emulator有輸出信息

運行Example項目

Once the emulator is up and running, you just need to wait for the unlock screen to appear, and you can start running your project. Make sure to unlock the screen so you’ll see the example project when it launches.

From command line, run this inside your module project:

引用
  ant run

在Eclipse中設置啟動配置:

Follow the same steps from the Launch configuration setup above, but use the run target instead of the run.emulator target. You should also name the configuration something different, for example run calc project

疑難排除技巧:

如果你運行對象是超時,試著找到emulator,然后通過以下命令重啟ADB服務:

  $ $ANDROID_SDK/tools/adb kill-server
$ $ANDROID_SDK/tools/adb start-server

 

到這里,如果你成功的運行了模塊例子工程的話,你將在模擬器中看到默認的”hello world“應用:

生成模塊和Example代理

作為初始創建項目的一部分,Titanium產生兩個示例項目中使用的類:

  • module類, 如: src/org/appcelerator/calc/CalcModule.java
  • proxy類, 如: src/org/appcelerator/calc/ExampleProxy.java

產看這些代碼來了解一下Modules和Proxies是怎么樣跟Javascript通信的,在下一節將簡要介紹了Titanium 和Kroll的API。

Android Titanium API

模塊和代理(Kroll part 1)

  • 一個模塊是一個靜態的、可選的頂級接口點,總是可以通過相同的名字訪問.Titanium.UI 和 Titanium.App 就是兩個在頂級API TItanium對象下的兩個Module例子.
  • 代理是能夠被用于通過一個模塊或其他代理創建和查詢的動態對象.當你使用 “Titanium.UI.createView”:http://developer.appcelerator.com/apidoc/mobile/latest/Titanium.UI.createView-method.html 創建一個原生視圖時, 視圖對象本身就是一個代理
  • 模塊和代理都能夠向Javascript API導出方法,屬性,常量以及getters/setters方法.

模塊

  • 必須使用 @Kroll.module 符號標注,并繼承 KrollModule 類
  • 模塊可以有父模塊, 比如 “Titanium.App.Properties“http://developer.appcelerator.com/apidoc/mobile/latest/Titanium.App.Properties-module 模塊就存在于 Titanium.App 下
  • 可以給定一個唯一的ID用于require()
  • 可以導出為頂級對象(與Titanium同級)

代理

  • 必須使用 @Kroll.proxy 符號標注, 并繼承 KrollProxy 類
  • 當使用 @Kroll.proxy#creatableInModule() 時, 有一個生成的 “create” 方法.
  • 有內置的事件管理

導出方法和屬性(Kroll part 2)

方法

代理和模塊的方法通過 @Kroll.method 符號標注進行導出. 下面是一個簡單的例子:

Java代碼

  1. @Kroll.method    
  2. public String getMessage() {    
  3.     return "Hello World";    
  4. }    

如果你導出的方法要求當前Activity, 你可以添加 KrollInvocation 作為第一個參數:

Java代碼

  1. @Kroll.method   
  2. public String getMessage(KrollInvocation invocation) {   
  3.     Activity activity = invocation.getTiContext().getActivity();   
  4. }   

方法還有許多其他的選項,詳細信息可查看@Kroll.methodJavadoc

屬性

屬性可以以兩種不同的形式導出:

1,getter/setter方法通過@Kroll.getProperty和@Kroll.setProperty符號導出,Getter/setter方法還可以被導出為Kroll方法(這是在Titanium中常用的模式)

2,使用Kroll.property符號導出為一個對象字段(使用反射,速度稍慢)

該示例為message屬性導出了一個getter和setter,以及同名的方法:

Java代碼

  1. @Kroll.getProperty @Kroll.method   
  2. public String getMessage() {   
  3.         return "Hello World";   
  4. }   
  5. @Kroll.setProperty @Kroll.method   
  6. public void setMessage(String message) {   
  7.     Log.d(TAG, "Tried setting message to: " + message);   
  8. }   

在Javascript中可以這樣使用:

Js代碼

  1. var object = //..   
  2. object.message = "hi"// or   
  3. object.setMessage("hi");   

常量

常量是 @Kroll.module 中的以及靜態屬性, 該字段以 “@Kroll.constant” 符號標注, 必須是static和final, 這兒有一個例子:

Java代碼

  1. @Kroll.module   
  2. public class MyModule extends KrollModule {   
  3.     @Kroll.constant   
  4.     public static final int CONSTANT = 100;   
  5. }  

常量可以直接使用: Ti.My.CONSTANT == 100

視圖

在Titanium中視圖必須要有2個class::

視圖代理: TiViewProxy的子類

  • 負責視圖屬性和方法暴露給JavaScript(和一般代理做的一樣).
  • 實現TiUIView的createView(Activity activity)方法來返回一個TiUIView的實例
  • 很多時候,你想在UI線程中調用你的UIView,參考 @Kroll.method#runOnUiThread

視圖實現: TiUIView的子類

  • 必須用視圖的一個實例來調用setNativeView,無論是在構造函數中,或在processProperties
  • 視圖實現負責從視圖代理的獲取數據,并直接應用到本地View
  • 這個類可以選擇性的實現propertyChanged 和 processProperties,當用戶在proxy中設置了屬性的話會的得到通知。

作為了一個簡單的例子,參考Button 的實現方法ButtonProxy TiUIButton

重量級和輕量級窗口

當用戶使用Titanium.UI.createWindow API 創建一個窗口時, 運行一些檢查來告知是否創建應該是 heavy weight:

  • 如果一個窗口被設置了以下任何一個屬性的話,他就是”heavyweight“: fullscreen, navBarHidden, modal, windowSoftInputMode, 或者tabOpen:true
  • 相反的話, 他就是”lightweight“
  • Heavyweight窗口會在棧中生成一個新的Activity,而且也一直為窗口創建新的Javascript Context
  • Lightweight窗口創建的時候一個全屏的View(調用代碼是相同的Activity) ,如果設置了url屬性的話,也會為每個窗口創建新的Javascript Context

線程安全

從Javascript的Context(潛在的任何Activity或Thread)調用一個方法或者屬性的話,在設計你的API的時候,很重要的一點是保證線程安全。

為了確保一個方法是在UI線程上執行, 可以參考 @Kroll.method#runOnUiThread(). 以下是例子:

Java代碼

責任編輯:佚名 來源: rensanning的博客
相關推薦

2012-05-18 11:16:42

@Kroll注解詳解TitaniumAndroid模塊

2012-05-18 10:52:20

TitaniumAndroid模塊自定義View模塊

2012-05-18 10:56:40

TitaniumAndroid模塊

2014-09-18 09:27:32

AndroidTransition框

2011-07-25 16:21:22

Sencha touc

2022-08-02 08:01:09

開發插件Chrome前端技術

2022-12-25 10:53:47

2012-03-26 09:27:40

谷歌安卓開發谷歌安卓

2011-06-09 18:24:36

QT Wince

2023-05-15 18:44:07

前端開發

2009-06-24 16:30:21

JSF組件模型

2015-11-12 16:14:52

Python開發實踐

2019-10-31 08:00:00

機器學習人工智能AI

2015-12-16 10:30:18

前端開發指南

2010-06-13 09:27:56

Widget開發

2021-06-21 15:21:52

鴻蒙HarmonyOS應用開發

2011-12-29 10:48:49

移動Web

2021-08-09 09:47:34

Blazor 路由開發

2011-04-18 11:00:34

使用音頻BlackBerry

2012-04-20 11:07:12

Titanium
點贊
收藏

51CTO技術棧公眾號

亚洲欧美丝袜| 国产精品美女主播在线观看纯欲| 折磨小男生性器羞耻的故事| 小h片在线观看| 国产欧美日韩在线视频| 亚洲一区二区三区成人在线视频精品 | 日韩免费电影一区二区| 91国内精品视频| 国产日韩1区| 爱福利视频一区| a天堂视频在线观看| 久久亚洲资源中文字| 亚洲小说欧美激情另类| 亚洲欧美日韩精品在线| 五月婷婷开心中文字幕| 激情久久五月天| 欧美一区二区视频97| 日本一级特级毛片视频| 天天做夜夜做人人爱精品 | 欧美在线观看一区二区三区| 91久久久久久久久久久久久久| 成人爽a毛片| 91精品国产综合久久久蜜臀粉嫩| 精品国产一区三区| 国产三区视频在线观看| 国产亚洲欧美一区在线观看| 国产精品手机视频| 国产精品呻吟久久| 日韩电影在线观看一区| 性日韩欧美在线视频| 69xx绿帽三人行| 日韩伦理视频| 亚洲视频日韩精品| 免费的av网站| 粉嫩av一区二区| 欧美日韩高清不卡| 国产自偷自偷免费一区| 僵尸再翻生在线观看| 一区二区三区四区国产精品| 中文字幕av日韩精品| 国产在线观看精品一区| 2024国产精品| 久久综合狠狠综合久久综青草| 精品久久人妻av中文字幕| 久久爱www久久做| 国产精品高潮呻吟视频| aaaaaa毛片| 销魂美女一区二区三区视频在线| 韩国美女主播一区| 久久精品国产亚洲av麻豆色欲| 欧美.日韩.国产.一区.二区| 精品国产自在精品国产浪潮 | 亚洲精品国产一区二区精华液| 一区二区精品在线| 黄色小网站在线观看| 国产精品福利av| 亚洲在线欧美| 久久久久久久久免费视频| 中文字幕在线不卡| 自拍偷拍视频在线| 高清免费电影在线观看| 亚洲欧洲日韩av| 91制片厂免费观看| 最新国产在线拍揄自揄视频| 夜夜精品视频一区二区| 国产日韩欧美精品在线观看| √8天堂资源地址中文在线| 亚洲大片一区二区三区| 91视频最新入口| 日日夜夜天天综合| 欧美日韩在线播放三区| 精品亚洲视频在线| 88久久精品| 精品偷拍一区二区三区在线看| 久久精品一区二区免费播放| 国产一区三区在线播放| 色伦专区97中文字幕| 亚洲国产成人精品综合99| 亚洲精品在线二区| 国产精品成人va在线观看| 中文字幕一区二区免费| 国产成人综合自拍| 蜜桃av久久久亚洲精品| 91大神在线网站| 一区二区在线电影| 久久久999免费视频| 福利一区在线| 精品国产免费久久| 免费观看a级片| 欧美永久精品| 欧美孕妇性xx| 国产一区二区麻豆| www.日韩大片| 一本久道久久综合狠狠爱亚洲精品| 黄色网页在线免费看| 香蕉成人伊视频在线观看| 大香煮伊手机一区| 久久伊人精品| 亚洲人高潮女人毛茸茸| 国产精品三区在线观看| 亚洲综合精品| 91免费综合在线| 欧美日韩伦理片| 亚洲男女一区二区三区| 久久精品一区二| 136国产福利精品导航网址应用| 亚洲人成在线观| 久久久国产精华液| 久久综合综合久久综合| 久久人人九九| 羞羞视频在线观看不卡| 在线中文字幕一区| 在线免费看黄色片| 亚洲精彩视频| 国产精品成av人在线视午夜片| aaa一区二区| 欧美国产视频在线| 波多野结衣家庭教师在线| **日韩最新| 中文字幕一区二区精品| 久久久久久久久久久久久久av| 极品少妇一区二区| 涩涩日韩在线| 美女福利一区二区三区| 精品久久久久久最新网址| 91动漫免费网站| 久热re这里精品视频在线6| 国产精品一区二区你懂得| 二区在线播放| 欧美日韩在线三级| 欧美激情亚洲色图| 久久九九精品| 蜜桃传媒视频麻豆一区| 97在线视频免费观看完整版| 欧美一区二区福利在线| 午夜激情福利电影| 美国欧美日韩国产在线播放| 日韩亚洲不卡在线| 欧美男体视频| 亚洲网站视频福利| 精品久久久久久久久久久久久久久久 | 大片网站久久| 国产成人午夜视频网址| 蝌蚪视频在线播放| 色婷婷国产精品久久包臀 | 亚州av日韩av| 18一19gay欧美视频网站| 天堂网av2014| 精品免费在线视频| 久久中文字幕人妻| 久久精品免费| 午夜一区二区三区| 九九久久国产| 久久视频精品在线| 国产亲伦免费视频播放| 亚洲精品日日夜夜| 日本少妇xxx| 欧美日韩伊人| 好吊妞www.84com只有这里才有精品| 久久电影网站| 精品伊人久久97| 看黄色一级大片| 国产精品视频免费看| 中文字幕日韩综合| 在线一区免费| 国产在线精品一区二区三区》| 国产无遮挡裸体视频在线观看| 亚洲精品成a人在线观看| 你懂的国产在线| 中文字幕高清不卡| 国产999免费视频| 伊人久久久大香线蕉综合直播| 精品国产乱码久久久久久久软件 | 天堂资源在线中文| 日韩一区二区三区免费观看| 国产精品18p| 91毛片在线观看| 一区二区三区 欧美| 综合激情婷婷| 久久精品女人的天堂av| 欧美xnxx| 久久99国产综合精品女同| 少妇人妻精品一区二区三区| 色综合色综合色综合色综合色综合 | blacked蜜桃精品一区| 国产在线观看精品| av福利导福航大全在线| 在线电影av不卡网址| 精品人妻久久久久一区二区三区 | 神马久久影院| 成人av在线天堂| av漫画网站在线观看| 曰本色欧美视频在线| 性中国xxx极品hd| 日本韩国精品在线| 欧美激情图片小说| 久久久久久久精| 国产xxxxhd| 天堂va蜜桃一区二区三区漫画版 | 国产调教在线观看| 成人精品视频一区二区三区| 黄色aaa级片| 亚洲激情女人| 自拍偷拍一区二区三区| 一道本一区二区三区| 亚洲一区二区三区成人在线视频精品 | 日韩.com| 欧美日韩电影一区二区| 亚洲精品一区二区三区在线| 国产精品久久久久高潮| 超碰成人av| 欧美成人精品在线观看| av播放在线观看| 亚洲欧美国产日韩天堂区| 成人1区2区3区| 制服丝袜亚洲精品中文字幕| 天码人妻一区二区三区在线看 | 国产高清www| 亚洲成人最新网站| 手机在线观看国产精品| 成人午夜大片| 91精品天堂| 国产精品99| 国产精品88a∨| 爱草tv视频在线观看992| 欧美夫妻性视频| 免费在线观看黄色| 日韩在线资源网| 国产香蕉在线| 日韩精品一区二区三区第95| 日本精品999| 精品少妇一区二区三区在线播放| 一级特黄aaa| 欧美剧情电影在线观看完整版免费励志电影 | 在线看的av网站| 亚洲网站在线看| 国产私人尤物无码不卡| 亚洲欧美另类中文字幕| 亚洲男人第一天堂| 精品免费国产一区二区三区四区| 国产免费久久久| 欧美另类变人与禽xxxxx| 最新在线中文字幕| 欧美日韩午夜精品| 中文字幕视频一区二区| 欧美亚洲免费在线一区| 中日韩在线观看视频| 在线观看欧美精品| 中文字幕日韩国产| 欧美日韩在线电影| 一道本在线视频| 91麻豆精品91久久久久同性| 97视频免费在线| 欧美一级二级在线观看| 精品人妻少妇嫩草av无码专区| 欧美一级片在线看| 国产成年妇视频| 精品国精品自拍自在线| 欧洲av在线播放| 亚洲欧美日韩直播| 国产精品久久久久一区二区国产 | 日韩电影在线观看中文字幕| 日本天堂在线| 在线视频精品一| 黄色网在线播放| 国产+成+人+亚洲欧洲| 伊人久久精品一区二区三区| 国产精品成久久久久三级 | 欧美一区二区三区视频免费播放| av中文在线观看| 日韩av影片在线观看| 国产美女性感在线观看懂色av| 综合久久五月天| 羞羞电影在线观看www| 97国产一区二区精品久久呦 | av不卡免费看| 激情五月婷婷久久| 国产一区二区三区免费在线观看| 欧美熟妇精品一区二区| xfplay精品久久| 老司机深夜福利网站| 亚洲综合一区在线| 久久国产黄色片| 欧美日韩第一区日日骚| 日本高清视频网站| 色妞一区二区三区| 美女av在线免费看| 国产精品天天狠天天看 | 青青影院一区二区三区四区| 久久综合成人| 免费 成 人 黄 色| 久久国产生活片100| 欧美夫妇交换xxx| 国产精品久久久久影院色老大| 免费在线观看日韩| 欧美午夜精品理论片a级按摩| www.四虎在线观看| 亚洲香蕉成视频在线观看| 青青青国内视频在线观看软件| 国产不卡av在线| 国产ts一区| 日本三级福利片| 久久男女视频| 日本天堂在线播放| 国产精品污污网站在线观看| 日本一级黄色录像| 欧美一区二区三区播放老司机| 精品资源在线看| 欧美黄色片在线观看| 国产一区二区三区四区五区3d | 久久国产小视频| 国产原创中文在线观看| 国产久卡久卡久卡久卡视频精品| 国产交换配乱淫视频免费| 亚洲综合免费观看高清在线观看| 中文字幕一区二区三区四区视频 | 嫩草香蕉在线91一二三区| 欧美一级片一区| 国产精品115| 国产人妻互换一区二区| 免费精品99久久国产综合精品| 亚洲天堂网一区二区| 亚洲综合在线五月| 国产黄a三级三级三级| 精品国产视频在线| 国产欧美自拍| 亚洲成人第一| 日韩精品免费专区| 一级片视频免费看| 欧美性开放视频| 色综合成人av| 国产91精品久久久久久久| 欧美变态网站| av免费观看国产| av亚洲精华国产精华精| 国产一级二级三级| 欧美精品一区二区蜜臀亚洲| 性欧美video高清bbw| 97人摸人人澡人人人超一碰| 中出一区二区| 亚洲成人手机在线观看| 亚洲图片欧美激情| 99国产精品久久久久久久成人| 日韩三级成人av网| 日韩美女在线| 成人性做爰片免费视频| 国产精品一区在线观看乱码| 久久久精品国产sm调教| 精品国产一区二区三区久久影院| 黄色小说在线播放| 精品国产一区二区三区四区vr| 夜夜爽av福利精品导航| aaaaaav| 福利一区福利二区微拍刺激| 邻家有女韩剧在线观看国语| 国产91在线播放| 成人在线免费观看网站| 特黄视频免费观看| 亚洲三级电影网站| 性生活视频软件| 2020久久国产精品| 精品国产a一区二区三区v免费| 最近免费中文字幕中文高清百度| 国产精品网站在线| 99热这里只有精品99| 久久男人av资源网站| 中日韩免视频上线全都免费| www.99av.com| 亚洲精品视频观看| 亚洲人视频在线观看| 国产精品精品一区二区三区午夜版 | 韩国一区二区三区| 久久久久久久久久久久久久免费看| 亚洲精品成人免费| 欧美日韩视频免费观看| 日韩最新中文字幕| 91在线观看一区二区| 在线免费av片| 欧美精品精品精品精品免费| 美日韩中文字幕| 精品国产鲁一鲁一区二区三区| 亚瑟在线精品视频| 91在线不卡| 国产精品免费在线播放| 日韩精品每日更新| 免费一级片视频| 在线电影中文日韩| 精品国内亚洲2022精品成人| 手机在线看福利| 亚洲一区二区在线视频| 国产免费永久在线观看| 91在线看www| 肉色丝袜一区二区| 免费在线视频一区二区| 在线成人一区二区| 日本中文字幕在线一区| www.午夜av| 色综合天天性综合| 黄色成人在线网| 亚洲欧洲中文|