精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

3atv在线一区二区三区| 国产精品高潮久久久久无| 911国产网站尤物在线观看| 中文字幕av观看| 国产综合av| 亚洲乱码一区二区三区在线观看| 国产伦理久久久| 91麻豆精品在线| 中文字幕免费一区二区| 日韩精品视频观看| 中文av字幕在线观看| 蜜桃视频在线网站| 亚洲婷婷综合色高清在线| 精品亚洲欧美日韩| 91欧美日韩麻豆精品| 中文久久精品| 欧美大片va欧美在线播放| 加勒比一区二区| 麻豆精品一区| 欧美午夜一区二区三区 | 中文字幕成人在线视频| brazzers在线观看| 中文无字幕一区二区三区 | 一本岛在线视频| av免费不卡国产观看| 中文字幕在线一区| 欧美精品在线一区| 丰满岳乱妇国产精品一区| 美国三级日本三级久久99| 97视频在线看| 欧美成人黄色网| 欧美xxxxx视频| 亚洲人成毛片在线播放| 亚州av综合色区无码一区| 欧美日韩国产一区二区在线观看| 欧洲一区二区三区在线| 黄色一级片播放| 欧美videosex性欧美黑吊| 国产精品美女视频| 相泽南亚洲一区二区在线播放 | 国产九色porny| 超碰porn在线| 国产精品成人在线观看| 日韩在线第一区| 久久天堂电影| 久久亚洲私人国产精品va媚药| 国产精品传媒毛片三区| 精品黑人一区二区三区国语馆| 另类欧美日韩国产在线| 国产精品av电影| 无码免费一区二区三区| 久久国产日本精品| 日本亚洲欧洲色α| 国产成人无码av| 久久精品官网| 国产精品久久久久久久久影视| 无码人妻一区二区三区免费| 免费一区视频| 国产成人精品视频在线观看| 伊人久久久久久久久久久久| 久久亚洲风情| 国产精品免费一区豆花| 又骚又黄的视频| 美女精品一区二区| 91久久久久久久久| 国产成年妇视频| 国产91在线|亚洲| 国产精选一区二区| 五十路在线视频| 久久久美女毛片| 亚洲欧洲三级| 免费大片在线观看www| 亚洲欧美日韩中文字幕一区二区三区 | 欧美电影在线观看完整版| 日韩电视剧免费观看网站| 中文字幕狠狠干| 九九免费精品视频在线观看| 在线视频亚洲欧美| 日韩影院一区二区| 激情综合亚洲| 欧美又大又硬又粗bbbbb| 亚洲av无码乱码国产精品fc2| 久久国产成人午夜av影院| 97超碰人人模人人爽人人看| 天堂av资源在线| 国产日韩欧美激情| 一本色道久久88亚洲精品综合 | 香蕉久久一区二区不卡无毒影院| www.四虎成人| 91麻豆精品| 亚洲高清久久网| 精品无码在线观看| 欧美午夜在线| 国产精品高清在线| www.黄色一片| 久久精品人人做人人综合| 日本三日本三级少妇三级66| 蜜桃视频在线网站| 538在线一区二区精品国产| 国产xxxxxxxxx| 99re66热这里只有精品8| 久久青草精品视频免费观看| 中文字幕免费观看视频| 国产成人av电影在线观看| 日本一区视频在线| 日本性爱视频在线观看| 在线看日韩精品电影| av在线天堂网| 欧美独立站高清久久| 777午夜精品福利在线观看| 91欧美日韩麻豆精品| 久久蜜臀中文字幕| 日韩精品久久一区二区| 成人免费在线观看视频| 亚洲精品97久久| 成人高潮免费视频| 视频一区二区中文字幕| 国产色综合一区二区三区| av在线天堂播放| 狠狠久久亚洲欧美专区| 丰满人妻一区二区三区大胸| 欧美国产偷国产精品三区| 97av在线视频免费播放| 亚洲av无码乱码国产精品久久| 国产视频在线观看一区二区三区| 亚洲国产精品成人天堂| 深夜福利一区| 久久久精品影院| 亚洲图片中文字幕| 久久久久久久久99精品| 成人一对一视频| 97久久综合区小说区图片区| 操91在线视频| 国产免费av电影| 亚洲欧洲日韩综合一区二区| 九九热免费精品视频| 蜜桃一区二区三区| 日韩美女激情视频| 青草久久伊人| 欧美丝袜第一区| 国产一级伦理片| 在线精品亚洲| 韩国一区二区三区美女美女秀| 毛片网站在线看| 日韩精品一区二区三区中文不卡 | 受虐m奴xxx在线观看| 亚洲精品三级| 精品一区2区三区| av漫画网站在线观看| 亚洲成人久久网| 国产无码精品一区二区| av在线一区二区| 欧美一级免费播放| 国产毛片久久久| 午夜精品一区二区三区在线视频 | 国产原创中文在线观看| 国产精品久久久久久久久久白浆| 欧美激情亚洲一区| 欧美一区二区三区黄片| 五月综合激情日本mⅴ| 丰满少妇一区二区三区| 乱码第一页成人| 日韩欧美一区二区三区四区| 国产精品亚洲成在人线| 久久精品久久久久电影| 不卡的日韩av| 午夜精品免费在线观看| 一级性生活毛片| 蜜臀91精品一区二区三区| 午夜啪啪免费视频| 99国产精品免费网站| 欧美亚洲视频在线观看| 成年人在线视频免费观看| 精品视频色一区| 久久国产美女视频| 北条麻妃国产九九精品视频| 99精品视频播放| 91免费精品| 国产高清精品一区二区| 免费观看一级欧美片| 中文欧美日本在线资源| 精品国产伦一区二区三| 福利微拍一区二区| 成人黄色短视频| 成人在线视频一区二区| 18岁视频在线观看| 亚洲精品tv久久久久久久久久| 99中文字幕| 精品3atv在线视频| 欧美成人激情图片网| 头脑特工队2免费完整版在线观看| 日本韩国欧美一区| 久久久久久久久久久久久久免费看 | 美女网站在线免费欧美精品| 日本天堂免费a| 一本久久青青| 91精品久久久久久蜜桃| 性感女国产在线| 欧美成人性生活| 韩国中文免费在线视频| 精品日韩欧美在线| 免费视频网站在线观看入口| 亚洲一区二区3| 欧美美女性生活视频| aa级大片欧美| 日本r级电影在线观看| 丝袜a∨在线一区二区三区不卡 | 成人免费高清观看| 综合欧美国产视频二区| 婷婷五月综合久久中文字幕| 777色狠狠一区二区三区| 日本视频在线观看免费| 亚洲在线视频一区| 久久成人小视频| 国产亚洲成aⅴ人片在线观看| 韩国三级hd中文字幕有哪些| 男人的j进女人的j一区| 国产免费黄色av| 欧美日韩免费观看一区=区三区| 色女孩综合网| 蜜桃一区二区三区| 精品一区二区三区视频日产| 亚洲精品影片| 91精品视频免费看| ww久久综合久中文字幕| 啪一啪鲁一鲁2019在线视频| aa国产成人| 久久久免费精品| 91高清在线观看视频| www.日韩av.com| 成人性爱视频在线观看| 亚洲欧美国内爽妇网| 天堂中文资源在线观看| 精品少妇一区二区三区日产乱码 | 99精品女人在线观看免费视频| 国产成人aa精品一区在线播放| 九九色在线视频| 欧美久久精品午夜青青大伊人| 麻豆传媒在线免费| 日韩中文字幕精品视频| 天堂аⅴ在线地址8| 伊人av综合网| av网页在线| www.xxxx精品| v片在线观看| 美女福利视频一区| yellow91字幕网在线| 欧美另类在线观看| 久久不射影院| 韩国一区二区电影| 伊人网在线播放| 欧美影院久久久| 日韩精品免费观看视频| 国产精品久久一区| 外国成人毛片| 99久久99| 成人午夜三级| 老司机精品福利在线观看| 国产精品欧美三级在线观看| 日本不卡一二三区| 欧美r级电影| 少妇一晚三次一区二区三区| 伊人天天综合| 116极品美女午夜一级| 日韩电影一区二区三区四区| 日韩成人精品视频在线观看| 国产精品中文字幕日韩精品| 91超薄肉色丝袜交足高跟凉鞋| av成人免费在线观看| 丰满少妇高潮一区二区| 亚洲欧洲成人自拍| 国产真人真事毛片| 欧美性猛交xxxxx水多| 中文字幕在线视频免费| 欧美一级电影网站| 天天射,天天干| 中文字幕久热精品在线视频| 成人黄色在线电影| 欧美一级大片在线观看| 日本一区二区中文字幕| 国产精品国模大尺度私拍| 亚洲深夜福利在线观看| 中文字幕在线观看一区二区三区| 国产精品av久久久久久麻豆网| 99精品视频在线看| 国产一区中文字幕| 特大黑人巨人吊xxxx| 一区视频在线播放| 日本熟女一区二区| 欧美色欧美亚洲另类二区| 亚洲黄色精品视频| 亚洲性线免费观看视频成熟| 人人澡人人添人人爽一区二区| 日韩美女福利视频| 99香蕉久久| 中文字幕久精品免| 亚洲永久视频| 特种兵之深入敌后| 欧美激情综合网| 久久久久亚洲AV| 欧美日韩一区二区在线观看| 黄色一级a毛片| 久久精品影视伊人网| 亚洲精品成人图区| 99在线视频首页| 我不卡手机影院| 日韩中文字幕组| 国产69精品久久99不卡| 亚洲色图27p| 日韩欧美一区二区三区久久| 亚洲国产精品suv| www.久久撸.com| 992tv国产精品成人影院| 国产欧美亚洲日本| 欧美成人精品| 99sesese| 国产清纯白嫩初高生在线观看91| 国产无套内射又大又猛又粗又爽| 91精品免费观看| h视频在线观看免费| 欧美一性一乱一交一视频| 91精品日本| 国产成年人在线观看| 日韩中文字幕亚洲一区二区va在线 | 亚洲欧美在线视频免费| 日韩欧美你懂的| 久久黄色美女电影| 国产欧美日韩亚洲精品| 国产一区二区亚洲| www.com毛片| 成人av网站在线观看| 欧美日韩精品在线观看视频 | 中文字幕伦理免费在线视频| 国产精自产拍久久久久久| 国产一区二区三区四区五区传媒 | 国产精品suv一区二区69| 欧美一区二区视频在线观看 | 久久免费视频在线| 中文字幕一区二区三区中文字幕| 在线视频91| 国产一区二区导航在线播放| 色欲一区二区三区精品a片| 欧美丰满嫩嫩电影| 岛国中文字幕在线| 亚洲一区二区中文字幕| 在线中文字幕第一区| 91热视频在线观看| 一区二区三区中文免费| 亚洲av永久无码国产精品久久 | 少妇一级淫片免费放中国 | 91精品人妻一区二区三区| 黑人巨大精品欧美一区二区一视频| 色视频在线观看| 日本国产精品视频| 精品日韩免费| 午夜不卡福利视频| 一区二区三区在线观看国产| 亚洲第一页综合| 97视频在线免费观看| 少妇精品久久久| 天天干天天草天天| 亚洲人成人一区二区在线观看 | 一区二区三区日本视频| 国产美女视频免费| 成人av午夜电影| 久久精品五月天| www.久久久久| 国产精品玖玖玖在线资源| 日韩av资源在线| 国产精品久久久久桃色tv| 国产欧美日韩成人| 久久久久久久久亚洲| 欧美欧美黄在线二区| 亚洲一区二区三区四区五区| 亚洲一区二区在线观看视频 | 国产欧美综合在线| 国产精品欧美综合亚洲| 欧美极品少妇全裸体| 亚洲影院天堂中文av色| gai在线观看免费高清| 亚洲图片一区二区| 成人在线观看免费| 国产经典一区二区三区| 日本亚洲最大的色成网站www| 成人在线观看小视频| 亚洲国产成人av在线| 91国内外精品自在线播放| 波多野结衣 作品| 国产校园另类小说区| 99久久精品日本一区二区免费| 97视频在线观看成人| 99久久夜色精品国产亚洲96| www国产视频| 欧美高清视频一二三区| 在线观看福利电影| 中文字幕中文字幕在线中心一区| av不卡一区二区三区| 国产深喉视频一区二区| 日本精品久久久久久久| 欧美福利视频|