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

如何開發一個移動跨平臺庫

移動開發
本文中,我介紹了我在探索開發移動跨平臺庫(例如一個codebase,可成為不同移動平臺上的app的一部分)時積累的經驗:從移動跨平臺開發工具(PhoneGap,Titanium之類的),到代碼移植工具;從無法滿足需求的 WebView,到可以滿足需求的 C++ 和 JavaScript 引擎。在這個問題上,現有的教程資源比較匱乏,因此我們想分享一些經驗可能會有幫助。

“一次編寫,到處運行” 是為闡明 Java 的跨平臺功能而編寫的著名標語。程序員都希望他們的代碼能到處運行。盡管如此,要跟上 CPU 體系結構的變化是如此困難,新的程序語言日日涌現,框架來了又去,并且如果你想跟操作系統打交道,代碼的重用性就不必再提。

但是也許,如果我們只把范圍限制在移動設備,可能還有機會!近年來移動化的趨勢日趨明顯,所以開發一個移動跨平臺的一定會對一些開發者有所幫助。

如果我們要進一步縮小,到iOS和Android上,它們目前的市場占有率為93.9%。 這給我們鎖定了7個目標CPU架構/ABI(ARMv7、armv7s、IOS的arm64、armeabi、armeabi-V7A、x86和針對 Android的MIPS),以及兩種編程語言(iOS的Objective-C和Android的Java)。至于框架和操作系統,支持最新的兩個 iOS版本應該就足夠了,因為新的iOS版本有著較高的使用率,但當涉及到Android時,要有一個不錯覆蓋率的話我們需要支持Froyo(或者Gingerbread)以后的所有版本。正如你所看到的,這不是件容易的事,但我們需要這樣做。 

我們想要做的總結在下圖中;在有一些適配特定平臺膠水代碼的情況下在兩個平臺間共享一個庫。由于Skyscanner嚴重依賴在于互聯網,一些網絡函數是不可少的。

The high-level architecture of the mobile apps

通常情況下,在iOS中,一個庫可以通過Objective-C源代碼或預編譯的靜態二進制庫 中導入,并要有相應的頭文件。在Android中,除了Java源代碼,一個庫也可以通過.class(字節碼)文件和靜態/共享二進制庫導入。然而,由 于這些選擇是限制性的,這里的研究將更進一步,去探索在Android和iOS中導入代碼的替代方法。 

那么,我們該如何開始呢?有什么選項呢?是否有簡化的工具呢?

選項1-移動跨平臺開發工具

如果你是一名移動開發者,你一定聽說過大量的移動跨平臺開發工具,比如PhoneGap,Appcelerator Titanium 和Xamarin。它們中的一些工具允許我們開發類庫,對嗎?

具備這一功能的工具通常存在的主要問題如下:

 1輸出到終端產品(.app/ .ipa或者 .apk)而不是類庫中

 2嵌入到運行時的環境中運行跨平臺的代碼,這些代碼與在環境中的本地代碼交互非常的困難.

  • 網頁視圖工具-這些工具使用視圖做為運行時環境,用JavaScript/HTML5來編寫代碼.如果它們與運行在網頁視圖的代碼交互困難時,它們將會立即失效.(然而,它總是試圖這樣,你隨后將會發現.)這樣的工具包括PhoneGap, RhoMobile,Secha Touch,appMobi, Telerik.

  • Adobe AIR--這的運行時環境中Adobe集成運行時環境.它的失效取決與與AIR中代碼交互的困難程度.

  • Xamarin--它只能輸出到中間的Xamarin 庫中,而不是本地庫中.

  • Appcelerator Titanium--創建的本地類庫并不是官方支持的,但是它可能是可以工作的,如果我們寫Titanium的擴展,這些擴展允許與本地代碼交互.太多的麻煩,存在問題的那些結果,同時不確保在下一個版本Titanium的升級中這些功能是否保留.

  • Corona--Corona的員工聲稱它已支持Android,同時它未來將支持iOS.

  • MoSync--與Corona類似

  • Kony--不支持.

  • Trigger.io--不支持

  • OpenFL--不支持

  • DragonRad--已過時,似乎不支持

因此,失敗了,沒什么真正可行的:(

但是等一下,難道C/C++的代碼不能訪問iOS和Android嗎?

選項2--C++

使用C++來開發類庫是可行的兩個解決方案之一。

在Android平臺,本地開發套件(NDK)和Java本地套件框架(JNI)允許Java與C/C++的代碼運行和交互.NDK的負責為 Android的每個目標對象(armeabi,armeabi-v7a,x86和mips)編譯C++代碼; 而JNI允許這兩種語言溝通交流.使用JNI相當的啰唆;程序員必須遵守命名規則,而且需要用Java和c++兩層包裝.一方面,通過用Java語言暴露 所有的c++類和方法(包括了本地關鍵字),Java封裝提供了一個用于c++類庫的Java的接口.另一方面,c++封裝提供了Java封狀與c++類 庫之間的橋梁,這兩種語言的對象可以相互轉化。

在iOS中,事情就變得簡單多了。在此系統中,沒有命名規則,只需要采用 “Objective-C++”進行額外一層的封裝就可以。“Objective-C++”是一種允許變量在單一的源文件中既使用“Objective- C”代碼,也可以使用“C++”代碼的語言。所以,所有的對象翻譯都只發生在這個單一封裝層中。你可以查看略微修改后的Android/iOS應用的流程 圖如下:

引入第三方庫也是不常規的,因為程序員不能直接訪問JRE/Android以及Cocoa Touch框架。在這種情況下,第三方庫可以通過兩種方式引入,源代碼或預編譯的二進制文件(或者找到它們,或者編譯它們)。其中的一個特例是執行網絡操 作(HTTP請求),在標準模板庫(STL)中它是不被支持的,所以我們整合了libcurl到跨平臺庫中。libcurl不能以源代碼引入,只能作為一 個可執行的配置腳本。幸運的是能夠找到為iOS預編譯的二進制文件。在Android中,我們使用NDK工具鏈/編譯器為每個Android目標系統編譯 libcurl。為7個目標架構(3適用于iOS,4為Android)編譯庫是很費時的,但這個過程的一部分可以用腳本實現自動化。

這個措施相當奏效,C++是種流行的語言,它有一個龐大數量的可用的第三方庫,并且所有使用的 工具(Android的NDK、JNI、Objective-C++)都有官方的解決方案,由谷歌和蘋果的支持。這個措施的唯一的缺點是在Android 上,如果我們想保持Java包裝對象對C++對象的引用,我們必須在Java對象釋放前手動回收C++對象(通常叫刪除C++對象)。然而,如果沒有理由 保留C++對象的話,它們可以在被復制成Java中對應部分后立即銷毀。

選項 3 - 代碼移植

另一個考慮過的選擇是,只維護一個代碼庫,然后用適當的工具把代碼翻譯為平臺對應的語言。這種選擇也有它的缺陷:

  • 生成代碼效率不會像原生開發者寫的那樣高。

  • 翻譯過程很容易引入Bug,而且必須手動修復。

  • 導入的二進制文件很難被翻譯,因為大多數的工具只能翻譯源代碼。

以下是幾種移動平臺代碼移植工具。遺憾的是,沒有一種能滿足需求:

  • J2ObjC - Google 開發的工具,用于翻譯 Java 代碼為 Objective-C 。看起來質量比較高(與以下其他相比)。目前為止,它能把部分 Java 類翻譯為 Objective-C ,但開發還沒有完成。不幸的是,它目前翻譯不了 Java 的 HTTP 請求,但是如果我們為每個平臺單獨實現這部分功能,也有實現的可能。這個項目從2012年9月建立至今。

  • Hyperloop - 將 JavaScript 翻譯為平臺原生代碼的工具。目前為止,它只支持 iOS ,而且并不穩定,但他們的計劃是擴展到所有流行的平臺。這個項目從2013年8月建立至今。

  • ObjC2J - 將 Objective-C 翻譯為 Java 的工具。這本來也是個很好的思路,但不幸的是,它還不夠成熟,含有很多bug,經常輸出不能編譯的代碼。

  • XMLVM - 將 JVM 字節碼交叉編譯為 Objective-C 的工具。這個工具不僅不夠完善,用起來很復雜,并且需要下載/導入很多legacy jar。

  • Apportable - 將 iOS 應用轉化為 Android 應用的工具。不幸的是,它達不到我們的要求,因為它只能翻譯整個應用,無法翻譯庫,而且直接輸出 .apk(Android 應用安裝包)文件。

  • Avian - 輕量級的 Java 虛擬機,可以嵌入 iOS app bundle 并運行 Java 代碼。這個方案滿足不了需求,因為想要讓 iOS 上跑的 UI 代碼與虛擬機中跑的 Java 庫代碼交互非常困難。

  • in the box - 在 iOS 上運行的移植 Dalvik 虛擬機和 Android Gingerbread (2.3) API。這個選項被否決了,因為這個項目已經失效。

選項4 - WebView中的JavaScript

JavaScript是近幾年普及很快的語言,其初衷是作為客戶端的腳本語言,但是現在也用于服務器端應用程序(node.js),并成為了上述的移動跨平臺工具的一部分。它可能成為解決我們問題的跨平臺語言嗎?

所有的移動跨平臺都能在web-browser視圖里執行JacaScript腳本 (WebViews),并且WebView的API通常都呈現在開發者眼前。

我們在JavaScript中需要的最少功能如下:

  • 執行函數

  • 調用腳本

  • 計算全局變量和返回的結果

  • 執行回調 (到本地代碼)

我們來單獨地探討各個平臺。

在Android中,WebView能執行腳本串。回調到Java代碼是JavaScript實現的,它注解(用 @JavascriptInterface)可以調用的Java類中的確定方法,并添加這些類的實例到WebView的JavaScript全局作用域的 引用(用addJavascriptInterface()方法)。然而計算變量或者函數調用,并不是這么簡單,因為沒有一種像腳本一樣直接計算的方法。 應對這個問題的唯一措施是向JavaScript傳遞一個回調函數,這樣當結果計算出來之后,回調函數被調用,傳遞結果到Java的方法作為參數。詳見這里

在iOS中,UIWebView能執行腳本串。與Android不同的是,IOS中可以計算全 局變量和函數調用(用stringByEvaluatingJavaScriptFromString:),,但是要作為字符串返回,因此當結果不是字符 串的時候要做一些適當的轉換。然而,回調函數卻不像Android中的那樣簡單,這是因為在UIWebView中沒有這種機制。從JavaScript中 調用Objective-C的唯一應對方案,是試圖在JavaScript中打開一個帶有定制協議的URL(例如skycallback://) ,并在Objective-C中捕捉這一事件,然后解析URL,看協議中是否含有回調協議的名稱,或者解析URL的資源路徑的字符串值,或者計算存放結果 的全局變量。詳見這里answer.

你可以看到,JavaScript和本地代碼之間的交互是十分困難的,并因平臺而已,而且當代碼量的增長,這種交互很容易導致bug,并不可避免地變得難以維護。因此,這個選項被拋棄掉。

選項5 - JS引擎中的Javascript

讓JavaScript運行在一個獨立的JavaScript引擎中也可以工作。

和Web視圖的方式相比,Javascript直接與Js引擎交互更為直接。但不幸的是,純凈的JS引擎缺少網絡功能。JS中處理Http請求的 XMLHttpRequest對象無效,原因是它是web瀏覽器的一部分而并非嚴格的JavaScript規范。因此,通過代理特定平臺(膠水)代碼的網 絡功能,一個與眾不同的架構應運而生。雖然這使得有些事情變得錯綜復雜,但是我們特別感興趣的是可以開發跨平臺的JavaScript庫。下面是它的工作 原理:

在 iOS 中,JavaScriptCore 引擎通過極佳的 JavaScriptCore 框架被使用。這個框架在 iOS 7 中被引入,并且它在幾秒鐘之內就可以很容易的可以集成到應用中,就如你處理任何 Cocoa Touch framework 一樣。它的 API 非常簡單,所需的綁定代碼也很簡潔。

在 Android 中,事情還是有些復雜,因為沒有 JavaScript 引擎,所以我們必須手工嵌入一個。兩個 JavaScript 引擎都可以被嵌入成功,Rhino 和 V8。Rhino 用 Java 編寫,所以它很容易嵌入,并且它僅僅增加了 2.6MB 的應用程序大小。它由 Mozilla 基金會開發,但它的開發現在有一段時間不活躍了。 V8 嵌入難度要大些,它用 C++ 編寫。因此,必須使用 Android NDK 和 JNI 來供 Java 與其交互,又增加了一個轉換層(Java<->C++<->JavaScript,而非 Java<->JavaScript)。此外,應用程序大小增加了 7.1MB,這對于一些應用程序并不是可以忽略的。不管怎樣,它的開發非常活躍

跨平臺庫以Http請求處理為存根由JavaScript開發。這個存根一開始工作為一個占位符,而在庫載入到JavaScript引擎中后會被重新寫入。它被一個調用實現這個請求的本地方法(特定平臺)的方法替換。

“JavaScript引擎中的JavaScript"解決方案的全部說明將出現在這個系列文章的第三部分,這些文章將在接下來的幾周內發布。

結論

雖然研究了很多工具和技術,但是其中只有兩個可以工作。在一方面,C + +的解決方案是一種廣泛使用的,可靠的,靈活的解決方案,但在Java中手動垃圾收集(提出了一種解決方法的)的一個顯著的缺點。另一方 面,JavaScript的解決方案更容易實現,但在復雜的體系結構缺少功能,并且是依賴于并非積極開發中的Rhino,或在V8這對應用程序大小有顯著 影響。如果您使用這些方法中的一種,請對這些缺點統籌考慮,謹慎行事。

一些項目看上去很有前途,將來值得重復查看:

  • Corona

  • MoSync

  • J2ObjC

  • Appcelerator Hyperloop

  • Nashorn (Oracle用Java重寫的Javascript引擎)

責任編輯:徐川 來源: oschina
相關推薦

2024-12-06 15:07:42

Python開發

2011-06-14 10:05:41

UDEAndroidJ2ME(K-Java

2012-03-16 13:43:29

2010-10-09 15:01:27

PhoneGapiPhoneAndroid

2011-07-06 11:16:32

Unity3DCocos2dSparrow Fra

2015-03-28 19:18:47

線下公開課51CTO沙龍MDSA

2014-07-08 09:37:28

跨平臺Webhtml5

2010-11-11 09:04:05

跨平臺移動開發

2013-05-27 09:47:33

Java開發Java跨平臺

2014-03-24 10:30:38

盧建暉跨平臺開發

2022-11-21 07:57:56

cmake工程模板

2015-03-17 09:59:41

跨平臺

2013-01-23 09:15:58

SaaS移動開發平臺

2012-08-22 13:34:30

移動開發跨平臺

2015-01-14 09:41:28

跨平臺移動應用Linux開發

2014-12-08 10:03:47

IonicHybrid混合應用

2015-05-13 10:09:39

移動跨平臺開發

2013-07-04 10:06:32

AppCan

2020-08-06 08:17:52

FaaS平臺Serverless
點贊
收藏

51CTO技術棧公眾號

日韩视频在线观看| 国产3p露脸普通话对白| 色噜噜狠狠永久免费| 亚洲精品无码专区| 成人精品天堂一区二区三区| 亚洲大片在线观看| 在线观看日韩欧美| 久久视频这里有精品| 国产又爽又黄又嫩又猛又粗| 亚洲人成网亚洲欧洲无码| 一区二区三区中文在线观看| 国产精品直播网红| 手机免费看av| 中文字幕一区久| 99久久精品免费看国产 | 在线丨暗呦小u女国产精品| 日韩极品视频在线观看 | 波多野结衣视频一区二区| 首页国产精品| 欧美性大战久久久| 欧美在线一二三区| 草久视频在线观看| 丝袜美腿一区二区三区动态图| 一区二区三区高清在线| 9a蜜桃久久久久久免费| 欧美国产日韩在线观看成人| www久久久| 亚洲欧美另类图片小说| 亚洲综合中文字幕在线观看| 欧美日韩国产精品综合| 亚洲成人影音| 婷婷一区二区三区| 欧美日韩在线播放一区二区| 午夜婷婷在线观看| 九九综合久久| 欧美色图一区二区三区| 亚洲一区三区视频在线观看| 91国内精品久久久| 欧美日韩国产色综合一二三四| 日韩精品中文字幕在线不卡尤物| 日韩在线视频在线| 天堂在线视频网站| 日韩 欧美一区二区三区| 视频直播国产精品| 日本人dh亚洲人ⅹxx| 欧美1234区| 26uuu国产一区二区三区| 国产精品99一区| 国产亚洲精品久久久久久豆腐| 四虎影视国产精品| 亚洲一区二区在线免费看| 久久国产一区二区| 中文字幕自拍偷拍| 欧美色图麻豆| 精品中文字幕在线观看| 黄色污在线观看| 欧美三区四区| 亚洲一线二线三线久久久| 国产91av视频在线观看| 97人妻精品一区二区三区软件| 水野朝阳av一区二区三区| 中文字幕精品av| 亚洲精品视频网址| 成人动态视频| 欧美日韩精品欧美日韩精品一综合| 中文字幕精品—区二区日日骚| 波多野结衣在线影院| 国产69精品久久久久毛片| 日韩av理论片| 久久亚洲成人av| 日韩午夜电影网| 久久久999国产精品| 久久人人妻人人人人妻性色av| 成功精品影院| 日韩激情视频在线| 精品国产午夜福利在线观看| 三级在线看中文字幕完整版| 中文字幕日本不卡| 久久久精彩视频| 青青草在线免费视频| 国产精品亚洲一区二区三区在线| 日本电影亚洲天堂| 妺妺窝人体色www婷婷| 亚洲国产裸拍裸体视频在线观看乱了中文 | 欧美乱大交xxxxx| 黄网站免费在线| 日韩国产欧美| 欧美激情第1页| 91久久久久久久久久久久久久| 欧美五码在线| 精品精品国产高清一毛片一天堂| 亚洲黄色小视频在线观看| av中文字幕电影在线看| 亚洲品质自拍视频网站| 久久久久久99| 日本亚洲精品| 国产精品免费网站在线观看| 欧美一区免费视频| 麻豆影院在线| 国产精品久久久久7777按摩| 欧美性bbwbbwbbwhd| 午夜激情在线观看| 亚洲成人精品一区二区| 天美星空大象mv在线观看视频| 密臀av在线播放| 欧美日韩性生活| 国模私拍在线观看| 国产精品丝袜在线播放| 日韩一区二区三免费高清| 天天操狠狠操夜夜操| 懂色aⅴ精品一区二区三区| 一本色道a无线码一区v| 亚洲色成人一区二区三区小说| 日本天码aⅴ片在线电影网站| 日韩理论在线观看| 每日在线更新av| 日韩在线伦理| 精品日韩欧美一区二区| 亚洲色图日韩精品| 99热在线成人| 欧美成年人网站| 久草视频免费在线播放| 日本亚洲最大的色成网站www| 国产成人精品免费视频大全最热| 亚洲成a人片在线| 国产欧美综合在线观看第十页| 手机看片福利永久国产日韩| 最新av网站在线观看| 国产精品护士白丝一区av| 国产中文字幕免费观看| 亚洲图色一区二区三区| 亚洲精品在线电影| 色哟哟视频在线| 亚洲电影一级片| 久久久久国产视频| 国产美女激情视频| 国产不卡免费视频| 欧美 日韩 国产 在线观看| 在线观看涩涩| 欧美浪妇xxxx高跟鞋交| 性色av浪潮av| 亚洲乱码免费伦视频| 久久久久久久色| 国产露脸无套对白在线播放| 国产精品全国免费观看高清| 99草草国产熟女视频在线| 国产成年精品| 精品视频久久久久久久| 91禁男男在线观看| 日本美女视频一区二区| 欧美久久综合性欧美| 一个人www视频在线免费观看| 日韩av在线网页| 日本免费观看视| 蜜桃视频免费观看一区| av蓝导航精品导航| 亚洲淫性视频| 日本韩国精品一区二区在线观看| av噜噜在线观看| 国偷自产av一区二区三区| 久久久久中文字幕| 最近中文字幕在线观看| 国产91精品欧美| 91精品国产91久久久久麻豆 主演| jizz性欧美23| 欧美亚洲另类在线| 国产日本精品视频| 久久人人97超碰com| 成人在线免费观看网址| 日日av拍夜夜添久久免费| 亚洲片在线资源| 亚洲一区二区91| 99国产精品视频免费观看| 国产精品丝袜久久久久久消防器材| 西野翔中文久久精品国产| 国产精品xxx视频| 免费的黄色av| 亚洲欧美电影院| 黑森林av导航| 影视一区二区| 国产91社区| 在线亚洲人成| 久久精品精品电影网| 东京干手机福利视频| 亚洲欧洲精品一区二区精品久久久| 日本黄色福利视频| 亚洲视频精品| 98国产高清一区| 9色在线视频| 日韩视频在线永久播放| 波多野结衣国产| 国产精品久久久久影视| 亚洲国产精品第一页| 丝袜美腿成人在线| 欧美 日韩 国产精品| 天天做夜夜做人人爱精品 | 被灌满精子的波多野结衣| 狂野欧美性猛交xxxx| 亚洲网站在线播放| 人妻 日韩精品 中文字幕| av资源网一区| 伊人影院综合在线| 亚洲精选久久| gogogo免费高清日本写真| 日韩高清电影免费| 91久久久久久国产精品| 看黄网站在线观看| 在线不卡一区二区| 国产情侣自拍av| 亚洲欧美另类久久久精品 | 日韩在线观看视频一区二区三区| 欧美性感一区二区三区| 青青国产在线观看| 亚洲欧美成人一区二区三区| www.99热| 蜜桃av一区二区三区电影| 欧美狂野激情性xxxx在线观| 成人在线视频免费观看| 看高清中日韩色视频| 不卡一二三区| 久久久久国产精品免费| av在线app| 精品国产乱码久久久久久免费| 国产情侣免费视频| 欧美午夜精品久久久久久人妖| 搡老熟女老女人一区二区| 国产精品亚洲欧美| 日韩欧美第二区在线观看| 国产情侣一区二区三区| 5566成人精品视频免费| 波多野结衣久久| 亚洲欧洲国产精品| 日韩专区第一页| 欧美tickling挠脚心丨vk| 国产喷水福利在线视频| 欧美日韩国产小视频在线观看| 国产污视频网站| 国产精品久久久久久久蜜臀| 日本黄色免费观看| 成人av电影免费在线播放| 50路60路老熟妇啪啪| 一本久久青青| 精品在线观看一区二区| 国产成人精选| 国产精品久久久久久久一区探花| 国产午夜精品久久久久免费视| 在线观看欧美日韩| 国产福利在线观看| 日韩一区二区三区在线视频| 国产又粗又大又爽| 67194成人在线观看| 久久久久久久久久免费视频| 亚洲国产va精品久久久不卡综合| 久久精品www| 亚洲一二三专区| 国产精品成人久久| 欧美日韩裸体免费视频| 永久免费看片直接| 日韩一区日韩二区| 国产免费无码一区二区视频| 久久精品男人天堂av| 一级片免费在线观看视频| 国产制服丝袜一区| 日本www高清视频| 日韩 欧美一区二区三区| 艹b视频在线观看| 精品一区二区三区视频| 国内外成人免费激情视频| 欧美片第1页综合| www.国产在线视频| 久久精品人人| 欧美日韩成人免费视频| 噜噜噜91成人网| 亚洲a级黄色片| 成人综合激情网| 日韩欧美理论片| 日日摸夜夜添夜夜添亚洲女人| 人人妻人人做人人爽| 香蕉久久久久久久av网站| 国产精品69久久久| 国产亚洲激情| 手机av在线网| jlzzjlzz亚洲日本少妇| 黄色片在线观看免费| 樱花影视一区二区| 六月丁香婷婷综合| 欧美另类变人与禽xxxxx| 天堂在线中文网| 久久久精品欧美| 蜜桃视频m3u8在线观看| 国产精品爽爽ⅴa在线观看| 91成人精品在线| 日韩黄色影视| 91久久亚洲| 日本中文字幕观看| 久久蜜桃香蕉精品一区二区三区| 午夜三级在线观看| 日韩欧美aaa| 99久久99久久久精品棕色圆| 亚洲欧美激情精品一区二区| 五月婷婷六月激情| 亚洲成人a**站| 少妇精品视频一区二区| 中文字幕免费精品一区| 成人福利电影| 成人高清视频观看www| 伊人久久大香伊蕉在人线观看热v| 国产精品日韩高清| 欧美三级自拍| 小说区视频区图片区| 久久久夜夜夜| 久久久久亚洲AV成人网人人小说| 欧美国产一区在线| 性无码专区无码| 精品久久久久久最新网址| 欧美一区二区三区| 日本一区二区三区四区视频| 97久久综合区小说区图片区| 在线视频一区观看| 日日噜噜夜夜狠狠视频欧美人| 亚洲av成人无码一二三在线观看| 亚洲色图.com| 91黄色在线视频| 中文字幕在线日韩| 日本一区二区三区视频在线| 国产欧美日韩中文字幕在线| 大胆国模一区二区三区| 任我爽在线视频精品一| 国产日韩一区| 2一3sex性hd| 亚洲成人高清在线| www.色视频| 日韩大片免费观看视频播放 | 国内精品久久影院| 在线日韩成人| 乱熟女高潮一区二区在线| 国产在线精品一区二区| 乱老熟女一区二区三区| 欧美性色综合网| 黄色美女网站在线观看| 日韩在线视频免费观看高清中文| 偷拍精品精品一区二区三区| 91精品久久久久久| 成人vr资源| 国内国产精品天干天干| 中文字幕日韩一区| 99精品在线看| 久久久久日韩精品久久久男男| 亚洲精品午夜| 免费在线观看视频a| 成人免费视频播放| 日韩精品在线免费看| 欧美色男人天堂| 黄色视屏网站在线免费观看| 日韩av免费在线| 日韩高清欧美| 在线一区二区不卡| 亚洲综合一二区| 五月婷婷六月激情| 国产91色在线| 日韩精品一卡| 日韩精品xxx| 亚洲成人高清在线| 久久经典视频| 成人黄色网免费| 亚洲天堂偷拍| 自拍偷拍亚洲天堂| 亚洲风情在线资源站| 天天干天天草天天射| 国产成人精品一区二区在线| 色喇叭免费久久综合| 亚洲av无码久久精品色欲| 午夜视频一区二区| 国产精品久久久久久久久毛片 | 成人18视频免费69| 制服丝袜av成人在线看| av在线理伦电影| 日韩美女一区| 国产精品 日产精品 欧美精品| 丰满的亚洲女人毛茸茸| 51久久夜色精品国产麻豆| 国产极品人妖在线观看| 久久视频在线观看中文字幕| 蜜臀久久99精品久久久画质超高清 | 97精品在线视频| 亚洲日本va中文字幕| 日韩av黄色网址| 自拍偷拍亚洲综合| 色视频在线观看| 91精品啪在线观看麻豆免费| 日韩视频在线一区二区三区 | 欧美一级视频在线观看| 久久国产精品成人免费观看的软件| 下面一进一出好爽视频| 在线观看区一区二| 日本福利片高清在线观看| 国产精品视频网| 亚洲激情婷婷| 国产探花在线视频| 亚洲欧美精品suv|