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

久久国产直播| 2021年精品国产福利在线| 欧美激情一区二区| 成人天堂噜噜噜| 国产精品a成v人在线播放| 亚洲另类av| 欧美日韩精品免费| 999久久欧美人妻一区二区| 亚洲av成人无码网天堂| 久久国产麻豆精品| 欧美激情免费看| 欧美多人猛交狂配| 一区二区三区四区精品视频| 日韩欧美在线视频日韩欧美在线视频 | 激情六月婷婷久久| 国内精品一区二区三区四区| 亚洲av毛片基地| xxxxxhd亚洲人hd| 欧美探花视频资源| 国产人妻777人伦精品hd| av中文字幕一区二区三区| 福利91精品一区二区三区| 国产成人精品免高潮费视频| 国产91视觉| 午夜福利三级理论电影| 69堂免费精品视频在线播放| 亚洲风情在线资源站| 一区不卡字幕| 欧美女优在线| 国产.欧美.日韩| 成人黄色影片在线| 自拍偷拍18p| 亚洲人成高清| 欧美激情性做爰免费视频| 极品尤物一区二区| 国产精品中文字幕亚洲欧美| 日韩精品一区二区三区四区视频 | 老司机精品视频在线| 欧美一级淫片aaaaaaa视频| 欧美成人一二三区| 午夜激情久久| 最近2019中文字幕大全第二页| 美国黄色一级毛片| 国产伦理久久久久久妇女| 欧美一级免费大片| 色网站在线视频| 久久精品嫩草影院| 欧美日韩精品一区二区三区蜜桃| 亚洲色成人一区二区三区小说| 俺来俺也去www色在线观看| 一区二区三区中文字幕电影| 影音先锋在线亚洲| 成年人视频在线看| 国产精品天干天干在线综合| 日韩动漫在线观看| 久久久久久久久亚洲精品| 91视频.com| 久久99精品久久久水蜜桃| 四虎精品一区二区三区| 成人网男人的天堂| 国产美女精品在线观看| 欧美 日韩 国产 成人 在线 91| 日韩精品卡一| 91麻豆国产自产在线观看| 久久超碰亚洲| 色哟哟在线观看| 久久日一线二线三线suv| 欧美一区二区高清在线观看| 国产在线观看网站| 国产亚洲1区2区3区| 日本公妇乱淫免费视频一区三区| 国产在线观看黄| 中文字幕的久久| 一区二区三区av在线| 黄色的网站在线观看| 亚洲黄色性网站| av网站大全免费| 在线成人av观看| 欧美性色黄大片| 亚洲日本黄色片| 99re8这里有精品热视频8在线| 日韩成人免费视频| 韩国三级hd中文字幕| 欧美xxav| 久久青草福利网站| 这里只有精品免费视频| 久久99久久99| 国产99午夜精品一区二区三区| 四虎影院在线域名免费观看| 亚洲国产岛国毛片在线| 国产制服91一区二区三区制服| xxxx在线视频| 欧美性色黄大片| 黄页网站在线看| 国内黄色精品| 久热99视频在线观看| 日本一区二区欧美| 欧美aaa在线| 国产精品日韩高清| 黄色在线视频观看网站| 亚洲精品视频在线看| 欧美一级片免费播放| 日韩免费小视频| 欧美专区18| 欧美一卡二卡三卡四卡| 国产精品第七页| 99久久综合狠狠综合久久aⅴ| 久久久之久亚州精品露出| 亚洲av无码乱码国产精品fc2| 国产精品白丝av| 欧美一级二级三级九九九| 黄视频网站在线看| 色八戒一区二区三区| 人妻少妇偷人精品久久久任期| 妖精视频一区二区三区| 欧美高清在线视频观看不卡| 五月婷婷激情五月| 91在线观看高清| www.黄色网址.com| 成人1区2区| 精品视频久久久久久| 欧美 日韩 国产 一区二区三区| 久久久久久夜| 国产精选一区二区| 中文字幕在线三区| 欧美日韩一区在线| 中文字幕高清视频| 夜夜嗨一区二区三区| 亚洲一区二区三区在线视频| а天堂8中文最新版在线官网| 五月激情综合色| 午夜诱惑痒痒网| 日韩电影免费网址| 国产精品99久久久久久久久| 天天综合网在线观看| 亚洲乱码日产精品bd| 在线能看的av网站| 成人直播大秀| 国产精品美女久久| 国产在线黄色| 在线观看日韩国产| 国产三级av在线播放| 久久aⅴ乱码一区二区三区| 国产乱子伦精品| 欧美6一10sex性hd| 精品三级av在线| 欧美日本亚洲| 国产精品欧美亚洲| 国产精品天天看| 午夜精品久久久久久久99热影院| 日韩欧美精品一区| 国产美女久久久| 一级毛片视频在线观看| 欧美日韩一区在线| а天堂中文在线资源| 久久se这里有精品| 特级毛片在线免费观看| 精品国产麻豆| 欧美美女操人视频| 亚洲国产欧美另类| 亚洲一区二区免费视频| www.555国产精品免费| 亚洲午夜极品| 久久久99爱| 快播电影网址老女人久久| 亚洲桃花岛网站| 中文字幕免费高清网站| 中文字幕精品综合| 日本一本在线视频| 在线欧美一区| 久久精品aaaaaa毛片| 国精产品一区二区三区有限公司| 一区二区亚洲欧洲国产日韩| 在线视频 中文字幕| 亚洲婷婷国产精品电影人久久| 香蕉网在线视频| 亚洲人成高清| 午夜午夜精品一区二区三区文| 96视频在线观看欧美| 久久久久久久999精品视频| 日韩中文字幕免费在线观看| 黑人欧美xxxx| 亚洲精品天堂网| 国产精品911| 欧美日韩激情视频在线观看| 精品免费av| 91成人在线看| 欧美成人影院| 久久综合免费视频| 日韩欧美电影在线观看| 欧美日韩一本到| 久久这里只有精品免费| 成年人国产在线观看| 精品国产91久久久久久久妲己| 久久人妻免费视频| 亚洲免费色视频| 亚洲乱码国产乱码精品精大量 | 午夜免费看视频| 欧美精品日本| 日韩电影免费观看高清完整| 欧美三级一区| 国产盗摄xxxx视频xxx69| 成人在线视频亚洲| 国产亚洲视频在线| 黑人精品一区二区三区| 欧美日韩和欧美的一区二区| 国产一级片视频| 中文字幕欧美日韩一区| 国产黑丝在线观看| 精品中文字幕一区二区小辣椒| 精品国产免费av| 午夜精品久久久久99热蜜桃导演 | 中文字幕精品视频在线| 另类的小说在线视频另类成人小视频在线| 成人在线观看你懂的| 欧美电影《睫毛膏》| 欧美成人免费在线| av动漫精品一区二区| 国产一区二区丝袜高跟鞋图片| 桃色av一区二区| 欧美精品xxx| a篇片在线观看网站| 日韩在线视频中文字幕| 国产综合在线观看| 亚洲国产精品va在线| 国内老熟妇对白hdxxxx| 欧美日韩国产高清一区二区| 精品国产一区二区三区四| 午夜影视日本亚洲欧洲精品| 看片网站在线观看| 亚洲欧美一区二区在线观看| 91麻豆制片厂| 国产丝袜在线精品| 性欧美丰满熟妇xxxx性仙踪林| 成人高清免费观看| 午夜影院福利社| 国产盗摄精品一区二区三区在线 | 88久久精品| 亚洲已满18点击进入在线看片| 丁香婷婷久久| 国产精品嫩草影院久久久| 婷婷综合六月| 国产97在线|亚洲| 亚洲wwww| 日本久久亚洲电影| 成人美女黄网站| 国产成人鲁鲁免费视频a| 日韩免费小视频| 国产精品视频久久久| 精品三级在线| 国产欧美精品va在线观看| 国产成人福利夜色影视| 国产女人18毛片水18精品| 国产麻豆一区| 亚洲综合色av| 一区二区三区四区精品视频| 国产女人水真多18毛片18精品 | 午夜偷拍福利视频| 午夜伦理一区二区| 久草视频在线观| 色噜噜狠狠色综合中国| 中文字幕xxxx| 欧美亚日韩国产aⅴ精品中极品| 亚洲视频中文字幕在线观看| 欧美片网站yy| 亚洲精品国产手机| 亚洲国产精品va在线看黑人| 国产在线视频资源| www欧美日韩| 日韩伦理av| 奇米一区二区三区四区久久| 香蕉成人影院| 亚洲精品日韩av| 2023国产精华国产精品| 欧美日韩高清在线一区| 成人午夜国产| 欧美大黑帍在线播放| 性久久久久久| 污污的网站免费| 丰满岳乱妇一区二区三区| 久久人妻少妇嫩草av无码专区| 国产欧美一区二区三区鸳鸯浴| 国产黄a三级三级| 亚洲一区二区影院| 无码人妻精品一区二区三区不卡| youjizz国产精品| 视频在线一区二区三区| 欧美综合久久| 青青草国产免费| 天堂久久一区二区三区| 色婷婷一区二区三区在线观看| aaa国产一区| 国产又粗又长又黄的视频| 亚洲成人精品一区| 中文在线免费看视频| 亚洲黄页网在线观看| 调教视频免费在线观看| 97视频网站入口| 亚洲国产aⅴ精品一区二区三区| 国产一区二区三区四区hd| 999视频精品| 成年人视频观看| 国产在线乱码一区二区三区| 中文字幕人妻一区二区| 亚洲激情男女视频| 久久人人爽人人爽人人片av免费| 欧美不卡一区二区| 亚洲免费视频一区二区三区| 欧美一级电影免费在线观看| 国产精品2区| 日韩免费av一区二区三区| 精品99视频| 在线观看网站黄| 国产精品无圣光一区二区| 欧美激情亚洲综合| 日韩欧美国产高清| 欧美精品日韩少妇| 国产98色在线| 农村少妇一区二区三区四区五区 | 99久久国产免费免费| 成人三级视频| 91淫黄看大片| 91在线精品一区二区三区| 丰满少妇高潮久久三区| 欧美日韩国产影片| www黄在线观看| 4k岛国日韩精品**专区| 久久久伦理片| 成品人视频ww入口| 国产黄色91视频| 中文字幕在线2021| 欧美一区二区三区在线视频| 最新电影电视剧在线观看免费观看| 欧美一级电影在线| 欧美综合精品| 每日在线更新av| av一区二区三区四区| 国产无码精品在线观看| 日韩免费高清av| 欧美亚洲系列| 国产99在线免费| 91久久中文| 久久九九精品99国产精品| 污片在线免费观看| 97碰碰视频| 国内精品久久久久国产盗摄免费观看完整版 | 欧美日韩一区二区三区四区五区| 国产69久久| 国产欧美一区二区三区在线 | 91在线视频免费91| 青青青国产在线| 国产视频精品在线| 欧美黄色三级| 亚洲v日韩v欧美v综合| 老司机午夜精品99久久| 日韩在线中文字幕视频| 日韩精品中文字幕一区二区三区| 美女航空一级毛片在线播放| 国产伦精品一区二区三区照片| 在线亚洲伦理| 中文字幕国产综合| 欧美日本视频在线| 污视频网站免费在线观看| 国产一区自拍视频| 久久一区二区三区四区五区| 怡红院一区二区三区| 欧美精选午夜久久久乱码6080| 麻豆视频在线观看免费网站| 91在线在线观看| 亚洲影音一区| 波多野结衣家庭教师在线观看 | 三级网站在线看| 国产成人一区二| 999国产精品视频| 国产艳妇疯狂做爰视频| 日韩欧美在线字幕| 在线视频1区2区| julia一区二区中文久久94| 国产视频久久| 日本美女黄色一级片| 欧美tk—视频vk| 自拍网站在线观看| 一级一片免费播放| 99re成人在线| 在线观看国产成人| 久久久久久久一区二区| 欧美精品色图| 性高潮久久久久久| 日本国产一区二区| 污的网站在线观看| 亚洲国产成人不卡| 成人午夜看片网址| 一级黄色免费片| 57pao成人国产永久免费| 性欧美69xoxoxoxo| 四虎永久免费影院| 日韩视频免费观看高清在线视频| 校园春色亚洲色图| 精品人妻人人做人人爽| 中文字幕第一页久久|