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

Android和iOS孰優孰劣:真實應用開發過程告訴你答案

移動開發 iOS Android
從上面的分析來看,做GQueues的過程中,并沒有出現平臺A完勝平臺B的情況。Android和iOS在某些領域各有千秋,也都有需要改進的地方。

隨便搜索一下“Android vs. iOS”,都會出現很多關于哪個平臺更好的爭論,大多數的爭論點都是關于市場占有率、易用性和設備分化等問 題。當然也有一些“以開發者的角度”去比較這兩個平臺的文章,但是很少有從技術上做深入的比較,通常也只是用一個簡單的示例應用介紹一些基本的特性。缺少 這種深入的比較其實是有原因的:一個公司要做一個足夠復雜的移動應用,通常需要一個人或團隊做Android,另外一個人或團隊做iOS。這兩個平臺使用 不同的編程語言(Java和Objective-C),提供不同的SDK,使用不同的開發工具,所以人力資源分配上各做各的平臺也就不奇怪了。

GQueues是一個在線任務管理器,之前只有一個HTML5版本。最近我完成了GQueues for Android 和GQueues for iPhone & iPad 的開發。雖然這兩個應用的復雜程度不能和***人稱射擊游戲相提并論,但也絕不簡單 – 為用戶存儲和管理數以千計的任務信息、支持多賬戶、提供到WEB端 的后臺同步、復雜的過濾、排序和分組功能。通過這次的實踐,我希望透過獨特的視角,分析和比較為這兩個平臺開發GQueues應用的過程。

統計概況

  Android App iOS App
啟動日期 Sept 21, 2012 Mar 2, 2013
***個可測的Beta版本 Dec 22, 2012 June 10, 2013
應用發布日期 Jan 31, 2013 July 18, 2013
項目總耗時 4.25 months 4.5 months
Ramp Up Time 1 week 2 weeks
開發耗時 870 hours (approx) 960 hours (approx)
Beta測試&Bugfix 34 days 38 days
Beta測試人員人數 92 people 48 people
代碼行數 26,981 lines 23,872 lines
應用大小 1.1 MB 3.5 MB
視頻預覽 GQueues for Android Video GQueues for iOS Video
下載  sfgegrg  sdfsgrgrer242

學習曲線

我已經寫了12年的代碼,但這是我寫的***個Android應用,也是我寫的***個偏向數據處理的iOS應用(2010年我做過兩個iOS 3上的 游戲,但那兩個游戲主要只涉及一些動畫和藍牙連接)。 我***一次用Java是在研究生階段,而我的Objective-C也僅限于那兩個游戲。所以對于 這兩個平臺,我基本上可以算是從零開始。

簡單講,只需要花一半學習iOS的時間來學習Android,我就能開始Android開發。對于Android,我花了一周時間用來看書、跟著一 些教程做一些測試應用,這些測試應用包含了GQueues將會用到的一些核心功能。做完這些,我基本上算是打好了為GQueues設計架構的基礎,同時也 可以開始為這個項目寫代碼了。在接下來的一周我可以很輕松自如地基于Android做開發,而不再需要依賴某個資源去實現新特性了。

對于iOS,我同樣按照上面的流程,但我花了兩周時間做各種測試/實驗,才讓自己覺得可以開始為這個項目寫一些基礎代碼了。其中大部分的時間都花在研究CoreData各種復雜的API上面。搞清楚怎么設置、怎么在線程安全的前提下,為每個用戶集中管理PersistentStoreCoordinatorsManagedObjectContexts也花了些功夫,最重要的是要支持多賬戶(這個話題可能需要另一篇博客來單獨講講)。為FetchedResultsControllers開發一個可擴展的架構花了更多時間,FetchedResultsControllers用于支持可被用戶查看以及操作的任務表單、隊列和分類。***又過了兩周(總共花了一個月)自己才能比較輕松自如地基于iOS寫代碼。

總的來說,Android的文檔(官方文檔、第三方教程、圖書、代碼示例、StackOverflow)質量都非常高。我從一些著名的開源 Android應用中學到了很多架構上的***實踐,如Google開放給開發者的2012 Google I/O app。此外,Android本身就是 開源的,必要時我可以自己查看Android的平臺代碼,弄清楚一些疑難問題。雖然iOS也有很多文檔,但由于iOS5和iOS6相比之前的版本改動非常 大,大部分文檔都已經過時,其中包括ARC入門一文(introduction of Automatic Reference Counting)。因此,大部分的示例代碼(包括Apple官方示例)和一些問題的解決方法都是不正確的,需要使用新的方法取而代之。搞清楚這些肯定也需要花更多的時間。

從上面的統計表中也可以看出,開發GQueues for Android要比開發 iOS 版的快十分之一的時間,盡管在開發Android版的期間我重新實現了之前用于支持GQueues HTML5版的整個后端服務器同步代碼。而開發一個不 采用原始iOS6風格UI的應用也需要多花些時間,單單比較這個數據,Android開發就是比iOS開發快。

用到的資源

Android App

iOS App

上面列出來的書其實用處很有限,因為跟大部分的技術類書籍一樣,書的內容都有點過時了,而且大部分書只停留在入門級別的概念介紹。不過,在一開始的前幾天看一下這些書,能夠比較快地理解平臺上的一些核心功能。就目前來講,對于這兩個平臺,在線資源仍然是最有價值的。

工具

接下來我只簡單說一下這兩個平臺的開發工具,因為關于這個話題已經有很多的討論。我不是Eclipse或者XCode的腦殘粉,它們有各自的強項和 弱點(其實我最喜歡的還是Vim)。Eclipse的搜索暴慢而且很繁瑣。XCode Organizer的文檔搜索也卡爆了。Eclipse中使用 log tags(通過Android插件的logcat集成)過濾日志超級實用。兩個IDE的代碼補全都很不錯,XCode的 Interface Builder一點用處都沒有(后面細講)。不過XCode Instruments就非常有用了,可以用它做優化分析、調試等等。 我開始做GQueues for Android的時候,Google還沒發布Android Studio,不過在GQueues的后續更新版本中我會 拿它來試試。

如果你一邊寫代碼一邊測試,用Android的模擬器簡直就是浪費時間(真不敢相信它能慢成這個鳥樣)。在開發過程中,我都是直接部署到真機上測試 的,用真機快很多。iOS的模擬器則很不同,跟Android相比簡直就是火箭跟蝸牛賽跑,這也讓整個開發過程更加高效。每寫一小段代碼我都會在模擬器上 跑一下,等到整個功能完成了我就會部署到真機上玩玩。

對于Android,我有各個版本的測試機器(除了Gingerbread,即Android 2.3),除此之外,就要倚靠beta測試過程中各種設備的覆蓋了。對于iOS來講就要簡單很多了,我只需要拿GQueues需要支持的最舊的和***的機器來測試就夠了。

測試設備

Android App

iOS App

  • Samsung Infuse (Froyo 2.2)
  • Nexus S (ICS 4.0.3)
  • Galaxy Nexus (Jelly Bean 4.2)
  • Samsung Galaxy Tab 10.1 (Honeycomb 3.2)
  • Nexus 7 (Jelly Bean 4.2)
  • iPhone 4 (iOS 6)
  • iPhone 5 (iOS 6)
  • iPad 2 (iOS 6)
  • iPad 4th generation (iOS 6)
  •  

設計

布局

GQueues的其中一個需求就是必須同時支持任意尺寸的手機和平板,并且針對不同的表單元素進行優化布局。由于各種各樣的設備都運行著 Android系統,Android也理所當然地有著成熟的UI組件幫助開發者支持各種尺寸。例如從Android***個版本開 始,RelativeLayout提供了View之間相對布局的支持,可用于創建靈活、響應迅速的布局。另外,在Android中所有的布局都由XML定 義,這設計界面的方式非常簡潔、簡單并且高效,試過iOS中創建布局之后這種體會就更加深刻了。

相對于Android的RelativeLayout,iOS有Auto Layout,這種布局方式比較新(iOS 6新引入的),集成到了 Interface Builder(IB)中,但是太難用了。我花了好多天學習IB中怎么用Auto Layout,跟任何iOS 6開發者一樣,僅靠 IB為視圖(View)設定各種精確的約束,完全改變了我自己的標準,這是因為IB所謂的“智能”系統時刻維持(糾正)著視圖布局相對位置。我學了很多技 巧,想著彌補IB的短板,但是沒啥作用。***我只能放棄IB,轉而用冗長的代碼實現所有布局。如果你放棄IB和富有極客范的 ASCII art style來寫布局,使用Auto Layout來實現還是很強大、很直接的。希望蘋果在iOS 7中已經改善這些,不過我還木有試 過。

如果一個應用需要同時針對小屏設備和大屏設備進行優化,最關鍵的就是基于屏幕的真實尺寸進行動態組合視圖,這種方式被稱作“適配性布局 (Adaptive Layout)”,平板電腦可以在一屏中顯示兩個或三個視圖,而手機上一屏則只顯示一個視圖。Android通過Fragments 支持這種設計,Fragment是一個獨立的、自包含的的模塊,能夠在需要的時候直接丟到Activity中去用。通過使用Fragments,只需要調 整幾行XML代碼就可以讓GQueues的布局適配不同分辨率的屏幕。對于我來講,Fragments是一種非常自然的解決方案,因為它是基于面向對象里 面兩個眾所周知的準則設計的 - 高內聚和低耦合。

[[111803]]

通過Custom Container View Controller(你也可以用Master-Detail模板,當然這種方式寬度是固定的, 也不支持個性化定制),iOS支持一屏使用多個ViewController。對于這個不成熟的特性,我覺得Apple的文檔顯得很復雜和不完整,***的 資源還要數Ray’s iOS5 tutorials和WWDC視頻。我花了比預計要多的時間,終于搞好了在iPad上同時顯示多個View、在 iPhone上顯示單個View的布局架構。

設備翻轉

簡單說,在Android上支持設備翻轉需要做很多工作,這些工作也是最終導致很多bug的源頭,而在iOS上,支持屏幕翻轉只需要做一點點工作, 剩下就是系統幫我們搞定了。在Android上,屏幕翻轉會直接銷毀現有整個視圖棧(Activity棧),屏幕翻轉完成后再重建每個視圖。所以在 GQueues中支持屏幕翻轉,我需要無時無刻保存好所有當前狀態,隨時保證翻轉后能正常恢復狀態。而在iOS上,系統會幫你管理所有屏幕翻轉相關的細 節,唯一需要我關心的就是翻轉之后,我需要調整那些沒有被Auto Layout處理好的視圖的位置。

“復雜”布局

網頁開發上有一些常見的布局在GQueues上實現起來非常困難,不管是Android還是iOS。其中一個例子是在任務詳細界面顯示標簽。每個標 簽都是變長的,在必要時標簽需要自動換行。在網頁上實現這個只需要設置CSS的float值就可以了。但不管是Android還是iOS對這種“流式布 局”(Flow Layout)都沒有原生的支持,這也意味著我需要寫很多代碼自己去計算和擺放這些標簽,以達到“流式布局”的效果。***Android 的代碼是基于Romain Guy的演講內容和Artem Votincev的flow layout實現的。在iOS上也采用了類似的方法,基于容器的總寬度,計算每個標簽的寬度,***設置auto layout的參數。對于這個布局的實現在兩個平臺上都耗了很大的工作量。

舊設備支持

關于Android的生態系統常被人吐槽的就是嚴重的系統分化。運營商推送更新的步伐總是很慢,所以現在仍有大量運行著舊系統的設備,這也就意味著 如果要保證應用足夠大的設備覆蓋率,開發者就不能使用新版系統帶來的新特性。不過好在現在針對這個問題,Android社區做了很大的努力,提供了一些用 于在舊系統上支持新特性的庫。通過使用Android官方的 Support Library和Jake Wharton的ActionBarSherlock Library,我幾乎可以在Android 2.2上使用Jelly Bean(4.2)中所有的新特性。

對于iOS來說,支持舊系統一說幾乎不存在,或者說根本就不是關鍵。在準備階段我花了一些時間考慮從哪個iOS版本開始支持,而當時的統計數據顯示使用iOS 6系統的設備已經達到83%, 而當時對于放棄支持iPad一代我也有一些疑慮,因為我老爸老媽老姐用的就是iPad一代,他們將是GQueues的鐵桿支持者。***我決定還是只支持 iOS 6+,這樣我可以放開手使用Auto Layout,而不需要浪費大量時間實現任何過時的布局技術。當然,我解決了iPad一代的問題(至少對我 家里人說來說已經解決),就是換掉他們的iPad一代,給他們每人買一個iPad四代(作者有錢銀)。

架構

數據存儲和管理

對于GQueues來說,數據是核心 - 把數據保存到設備上然后同步到WEB端。Android和iOS有著完全不同的數據管理系統。 Android提供了ContentProvider,它是SQLite數據庫上層的一個可被繼承的應用接口,作為一個結構化框架被用于所有應用的數據處 理。ContentProvider學習起來比較難,搞定一個GQueues可用的實現,前期需要花很多工作。一旦搞定了***步后面的擴展和個性化定制都 變得簡單多了。

一些背景信息,GQueues的web service是基于Google App Engine’s Datastore的, 這是一個高擴展性的分布式NoSQL存儲系統,而SQLite則是一個標準的關系型數據庫,擴展性明顯也比較差,但這完全不需要考慮,因為這個應用只存儲 一個用戶的數據。(順便說一下,架構上我采用了“一個用戶對應一個數據庫”的設計,這對于快速簡單地實現多用戶切換有重要意義,不過實現細節可能得再開一 博來聊了)。不管怎么說,Android的一個很大的優點就是可以創建SQLite Views來支持Smart Queues。為了支持Smart Queues,搞清楚各種復雜的表關聯查詢和子查詢也花了寫功夫,但是這也讓Smart Queues的加載更加高效和快速,因為過濾不是在代碼里面實現的(在SQL里面)。

在iOS上,我用的是Core Data, 它是iOS上的“schema驅動數據圖形管理和持久化框架”,基本上它可以被看做是一個NoSQL存儲,不過有趣的是,Core Data背后實際上是 SQLite數據庫(呃…實際上SQLite也是幾個可選項中最合理的選擇)。iOS也允許用戶直接創建SQLite數據庫,但只支持通過純C代碼來操 作,對于其他iOS組件沒有原生集成。Core Data的學習起來也比較困難,但***我還是選擇Core Data而不用SQLite,因為這樣我可以 輕松實現很多功能,包括緩存、數據模型遷移支持,還有通過 NSFetchedResultsController,可以非常簡單地為界面中的 table(列表)提供數據。

管理數據集的關鍵就是使用事務,尤其重要是做數據同步的時候 - ACID,即:atomic(原子性)、consistent(一致性)、 isolated(隔離性)、durable(持久性)。Android上實現事務似很直觀,跟大部分關系型數據庫管理系統的實現方式是一樣的,因此,保 證數據完整性并不困難。另外,用好SQLite中的UNIQUE ON CONFLICT REPLACE語句,在數據同步的過程中建表、對記錄進行原子更新的時候幾乎不需要做任何額外工作。

嚴格來講,Core Data并不完全支持事務。通過使用單獨的子ManagedObjectContexts做后臺線程處理,再加上@synchronized,能夠處理好數據更新和同步,同時避免不正確的寫操作覆蓋(overwrite)。關于高效更新和創建對象,iOS給的建議幫助很小,總的來說,CoreData給我的趕腳很笨重,并沒有它聲稱的那么好用。另外,在Android上,SQLite可以輕松實現快速加載Smart Queues,而在iOS上,所有的過濾都必須在代碼中實現,就算用了大量的緩存,速度仍然很慢。

搜索

在GQueues for Android上增加強大的全文搜索功能很簡單,我模仿Google I/O應用里面的搜索實現,使用了SQLite的FTS3特性。首先創建一個虛擬表,然后在一個存儲了用戶任務的表上設置幾個觸發器,由這些觸發器填充數據到虛擬表。做完了這些,剩下的就是設計一個搜索界面和為搜索歷史添加存儲。

iOS的Core Data對于全文搜索并沒有原生支持,所以我通過在謂詞(Predicate)中使用LIKE語句,實現基本的任務描述和日記的搜索功能。這個實現當然沒有全文搜索那么強大,但我認為它已經能夠覆蓋現實生活中大部分的使用場景了。

特性API

用于比較,我只會列舉在GQueues中使用到的幾個API。

快速添加(Quick Add)

正則表達式在實現GQueues中Quick Add解 析的時候扮演著一個非常重要的角色,幸運的是,Android和iOS對于正則表達式都有著原生的支持。Android中的Pattern和 Matcher從***個版本起就開始支持,同時也包含了很多正則語法,其中包括前向斷言(look-ahead assertion)和后向斷言 (look-behind assertion)。iOS則從iOS 4開始引入NSRegularExpression類,令人高興的是,我可以把我在Android上辛辛苦苦寫好的正則表達式幾乎原封不動地搬到了iOS上。

分頁

在設計界面的時候,我希望用戶在查看任務詳細的時候左右滑動切換。在Android上我用了 ViewPager和新的FragmentStatePagerAdapter類,FragmentStatePagerAdapter 還處于試驗階段,并且只能通過支持庫(Support Library)來使用。我花了幾天的時間實現了一個綁定好數據的初級版本,同時解決了幾個關于重 復菜單項的bug和在數據發生變化后的處理。這些比我預想的要困難很多,要不是因為左右滑動切換任務的用戶體驗那么好的話,我真不想實現這個功能。iOS 上的UIPageViewController就簡單很多了,雖然也有一些奇怪問題要解決,并且需要自己再加上緩存支持使滑動復雜視圖的時候達到可用狀態。

語音輸入

Android提供了了一個先進但很容易使用的speech-to-text API,只用20行代碼,我就把RecognizerIntent集成到GQueues,提供了一個自定義的語音輸入功能。但很遺憾,iOS并沒有提供支撐SIRI背后技術的API,開發者只能使用第三方庫,依賴鍵盤上的麥克風提供語音輸入的支持。我找了各種第三方庫,包括Nuance - SIRI語音識別的提供商,但發現沒有免費版本,收費版本價格不菲。所以***GQueues只能靠用戶自己使用鍵盤上內置的麥克風選項來進行語音輸入,其實這也已經足夠了,只要用戶還記得有這么個功能。

分享/插件(小部件)

通過使用Intent,在Android上可以很容易就可以把我的應用集成到安裝在用戶手機上的其他應用。同樣地,只需要很少的代碼,通過支持ACTION_SEND intent,我就能夠讓用戶在其他應用中創建GQueues任務。Android同時也提供了一個小部件平臺,于是我也做了幾個小部件,以后還會增加一些。iOS對于跨應用集成和桌面小部件的支持度為零,完全不支持這兩個功能。

測試和發布

beta測試

在上面的統計概況表中已經指出,beta版面向真實用戶測試了一個多月。兩組測試人員都非常棒,幫我找到了數十計的bug,提出了增加一些特性的建 議,對一些UI上不合理的地方提出了反饋。我通過私有的Google Group組織beta測試,這樣的beta測試保證了***發布的應用對人們是真正 有用的。在每次beta測試的***,通過調查問卷我收集到了很多有建設性的反饋,也幫助進一步判斷我的應用是否達到了可發布的狀態。

讓測試者開始測試只需要發個APK的鏈接,讓他們下載到他們機器上(呃..他們還需要在設置界面中開啟“允許安裝Google Play以外的應用”的選項)。Google很方便地支持用真實用戶來進行alpha和beta測試,可在開發者控制臺和階段推廣中進行設置。在未來的版本更新中我想用用這兩個功能。

iOS中的beta測試困難得多,就算用了TestFlight服 務,雖然TestFlight很大程度地簡化了流程。為了滿足Apple的控制欲,每部測試設備的UUID都要加到用于簽名beta版應用的證書當中。因 此,每次要添加beta測試者的時候,不論是添加一個人還是一群人,我都需要重新build一遍我的app。除此之外,Apple還限制了你一年最多只能 注冊100個測試設備。所以我要小心利用好這100個坑,這也是為什么GQueues的iOS測試者只有Android的一半。

發布

當然,不談談發布流程,Android和iOS的比較都不算完,在Google Play上發布GQueues是一件很好玩的事情,只要我認為已經 準備好了,我隨時可以發布我的應用。點下按鈕之后,30分鐘內,我的應用就能在Google Play上被全世界的用戶找到并安裝到他們的設備上。而在 App Store上發布一款應用,相信每個iOS開發者都有同樣的感受,那是一個令人感到郁悶的經歷。經過了數月緊張嚴密的編碼,我只能把我的創作提交 給Apple,然后等7天,7天之后審核人員花2分鐘看看我的應用,***拒絕了我的提交。我只能按要求做了修改之后再次提交,我又得等8天才在***通過了 審核。當然還有很多關于提交應用到App Store的恐怖故事,跟他們比起來,我就像是公園里逛了一圈。盡管如此,在自己的商業控制上要對這樣一個“情 緒化的第三方平臺”做出那么多的讓步,仍然讓我覺得很不爽。

獲勝的平臺

從上面的分析來看,做GQueues的過程中,并沒有出現平臺A完勝平臺B的情況。Android和iOS在某些領域各有千秋,也都有需要改進的地 方。從這兩個平臺的歷史來看,貌似目前Android勢頭更猛一些,不止體現在市場占有率上,而是看到了Android近兩年在UI上的改進和開發平臺的 穩步提升。而Apple則是封閉的王者,我也堅信他們在很努力地做著他們認為是下一代移動計算革命的事情。不管怎么說,當我想想這6年間所興起的app生 態圈,我為自己在這個移動技術快速更新的時代,能在這兩個平臺上做開發感到榮幸。

責任編輯:閆佳明 來源: blog.jobbole
相關推薦

2023-06-04 13:51:08

2022-04-18 16:15:31

UbuntuArchLinux

2022-10-12 07:11:38

哈希加密系統

2011-03-04 09:17:40

GNOMEUnityUbuntu

2016-05-05 09:56:59

Angular 2React

2024-02-19 18:06:04

PythonJuliaRust

2012-05-29 13:10:50

HTML5

2012-08-10 10:12:24

傳統網絡云計算

2020-05-06 11:04:52

Elasticsear架構運維

2019-09-09 09:15:00

2023-03-23 08:00:00

人工智能ChatGPTGoogle Bar

2016-10-12 11:56:39

原生混合移動開發

2011-11-28 09:31:23

NIST云計算云服務

2017-11-27 09:35:21

DubboSpring Clou微服務

2015-03-18 10:04:05

VoLTEVoWiFi基于IP傳輸語音

2012-08-17 14:55:52

OS X MountaWindows 8

2019-03-04 09:22:09

WiFi無線網絡AP

2019-06-05 10:11:10

英特爾NUCCPU

2016-09-22 09:12:26

云存儲實體存儲

2021-09-29 13:37:11

博睿數據短信評測
點贊
收藏

51CTO技術棧公眾號

国产在线精品一区二区不卡了| 视频一区日韩精品| 国产日韩精品视频一区| 国产精品网站入口| 久久久精品人妻一区二区三区四 | 欧美一区二区三区在线观看 | 日韩欧美中文一区二区| 中文字幕日本最新乱码视频| 婷婷激情在线| 成人一道本在线| 国产精品美女久久| 九热这里只有精品| 久久蜜桃av| 欧美精品一区二区久久婷婷 | 欧美激情福利| 狠狠躁18三区二区一区| 色乱码一区二区三区熟女| 午夜激情小视频| 美女网站一区二区| 欧美影院久久久| 精品无码久久久久久久久| blacked蜜桃精品一区| 日韩美女主播在线视频一区二区三区| 少妇激情一区二区三区| 国产自产自拍视频在线观看| 国产精品传媒在线| 日韩成人av电影在线| 欧美一区二区公司| 国产麻豆成人精品| 91精品国产综合久久男男| 成人免费看片98欧美| 久久国产综合| 亚洲欧美综合v| 亚洲精品乱码久久| 最新国产精品精品视频| 3atv在线一区二区三区| 在线视频日韩一区 | 韩国无码一区二区三区精品| 日韩在线成人| 日韩欧美一级二级三级久久久| 一路向西2在线观看| 成人看片在线观看| 色婷婷综合久久久中文一区二区 | 国产成人午夜电影网| 91天堂在线观看| 97在线播放免费观看| 蜜臀99久久精品久久久久久软件| 欧美最顶级的aⅴ艳星| av大片免费观看| 亚洲视频1区| 777午夜精品福利在线观看| 91蜜桃视频在线观看| 一区在线视频观看| 国模精品系列视频| 中文字幕在线字幕中文| 99综合在线| 欧美专区福利在线| 成人一二三四区| 蜜臀久久99精品久久久画质超高清| 国产成人高潮免费观看精品| 日本欧美www| 老司机午夜精品| 91久久嫩草影院一区二区| 国产视频手机在线| 成人免费毛片app| 精品亚洲第一| 国产一级片在线播放| 亚洲国产激情av| 亚洲欧美日韩不卡| 黄页网站在线观看免费| 无码av免费一区二区三区试看| 欧美 日韩 国产在线观看| 丝袜老师在线| 欧美熟乱第一页| 欧美高清精品一区二区| av成人app永久免费| 日韩高清有码在线| jizz日本在线播放| 欧美 日韩 国产精品免费观看| 欧美大奶子在线| 天天爽夜夜爽夜夜爽精品| 日韩精品电影在线| 91最新在线免费观看| 国产亚洲色婷婷久久| 成人午夜888| 亚洲国产精品成人av| 中文字幕一区二区人妻在线不卡| 国产亚洲欧美日韩在线观看一区二区 | 日韩专区一区二区| 中文字幕亚洲成人| 18禁免费观看网站| 精品亚洲a∨| 精品欧美一区二区在线观看| www亚洲色图| 精品91在线| 国产精品视频网| 免费国产精品视频| 国产精品卡一卡二| 欧美色图色综合| 3d动漫一区二区三区在线观看| 亚洲大尺度美女在线| 国产在线综合视频| 亚洲精品激情| 成人羞羞国产免费| 理论视频在线| 亚洲成人av电影| 九九热视频免费| 欧美中文字幕一区二区| 欧美国产日本在线| 在线免费观看高清视频| 99久久精品国产导航| 中文字幕一区二区三区有限公司 | 欧美大片在线观看一区| 国产成人免费观看网站| 亚洲激情一区| 91在线观看免费网站| 国产一级免费在线观看| 精品久久久视频| 黄色国产在线视频| 欧美1区2区3区| 国产欧美在线看| 黄网在线免费| 欧美性20hd另类| 国产51自产区| 欧美精品九九| 亚洲a成v人在线观看| gogogo高清在线观看免费完整版| 无码av免费一区二区三区试看| 无码国产精品久久一区免费| 亚洲va在线| 国产伊人精品在线| 午夜伦全在线观看| 欧美性猛交xxxx乱大交退制版| 无码人妻精品一区二区三区温州| 亚洲小说欧美另类社区| 99精彩视频在线观看免费| 日本中文字幕在线2020| 精品视频一区二区三区免费| 亚洲欧美va天堂人熟伦 | 亚洲18色成人| 白丝校花扒腿让我c| 午夜精品久久久久99热蜜桃导演 | 性生交大片免费看l| 久久久久久美女精品| 91青草视频久久| 国产视频中文字幕在线观看| 欧美日韩国产免费| 亚洲熟女少妇一区二区| 久久9热精品视频| 亚洲一区二区在线观| 欧美另类激情| 色妞一区二区三区| 艳妇乳肉豪妇荡乳av无码福利 | 亚洲巨乳在线观看| 日本不卡网站| 日韩精品亚洲元码| 国产成人无码精品亚洲| 99国产欧美另类久久久精品| 福利视频一区二区三区四区| 国产成人高清精品免费5388| 欧美精品激情在线| 亚洲欧洲精品视频| 日韩欧美在线第一页| 性欧美一区二区| 麻豆91小视频| 成人免费看片视频在线观看| 秋霞一区二区| 91精品国产免费久久久久久| 九色网友自拍视频手机在线| 欧美午夜宅男影院| 裸体武打性艳史| 99免费精品视频| 三级视频中文字幕| 欧美福利电影在线观看| 国产视色精品亚洲一区二区| 国产欧美久久久精品免费| 亚洲人成网站色在线观看| 手机在线播放av| 欧美一区=区| 青青草原国产免费| 欧美三级一区| 青青久久aⅴ北条麻妃| av中文在线| 精品久久久久av影院| 久久夜色精品国产噜噜亚洲av| 国产精品丝袜在线| 亚洲精品一区二区18漫画| 国产日韩1区| 中日韩在线视频| 久久久久观看| 成人写真福利网| 中国字幕a在线看韩国电影| 北条麻妃久久精品| 国产理论视频在线观看| 亚洲一区二区五区| 亚洲最大成人综合网| 高清在线不卡av| 欧美精品久久久久久久久25p| 欧美体内she精视频在线观看| 欧洲久久久久久| 盗摄牛牛av影视一区二区| 国产精品手机播放| 国产精品69xx| 日韩视频永久免费观看| 欧美成人片在线| 精品久久人人做人人爽| 亚洲综合免费视频| 精品久久中文字幕| 午夜精品福利在线视频| 久久久99久久精品欧美| 亚洲v在线观看| 精品一区在线看| 日本在线视频www| 亚洲黄色一区| 男人草女人视频| 天天影视天天精品| 日本精品视频一区| 日本欧美三级| 国产亚洲精品久久飘花| 精品午夜视频| 国产精自产拍久久久久久蜜| 美女100%一区| 97国产精品免费视频| 色av手机在线| 久久视频免费观看| 日韩黄色影院| 亚洲欧美制服丝袜| 手机亚洲第一页| 亚洲福利在线观看| 国产刺激高潮av| 精品少妇一区二区三区日产乱码 | 久久久精品欧美丰满| 黄色污在线观看| 成人丝袜视频网| 欧美图片自拍偷拍| 国产精品一区二区视频| 性欧美在线视频| 黄网站免费久久| 成人黄色一级大片| 久久99国产精品成人| 日韩高清第一页| 奇米一区二区三区av| 日本爱爱免费视频| 热久久一区二区| 五月婷婷丁香色| 韩国午夜理伦三级不卡影院| www.亚洲高清| 黑人精品欧美一区二区蜜桃 | 白嫩亚洲一区二区三区| 91精品久久久久久久久久久久久| 日日夜夜综合| 91久久精品视频| 一区二区三区在线免费看| 国产精品久久波多野结衣| 高清精品xnxxcom| 久久久久久久有限公司| 九九视频精品全部免费播放| 日韩av一区二区三区在线| 日韩中文字幕高清在线观看| 在线观看日本一区| 欧美国产三区| 成年人午夜免费视频| 毛片一区二区| 久久这里只精品| 国产精一区二区三区| wwwxx日本| 久久久www成人免费无遮挡大片| 天美传媒免费在线观看| 亚洲乱码国产乱码精品精98午夜| 国产在线视频在线观看| 一本一本大道香蕉久在线精品 | 免费高清一区二区三区| 国产日韩欧美一区| 三级在线免费看| 国产成人综合在线播放| 国产美女喷水视频| 国产精品福利一区二区三区| 久久一区二区三| 欧美性感一区二区三区| 国产99视频在线| 亚洲男人天堂2023| av网站导航在线观看免费| 91禁国产网站| 伊人亚洲精品| 久久伊人资源站| 亚洲一区二区| 国产成人亚洲精品无码h在线| 黄色小说综合网站| 国产亚洲无码精品| 亚洲欧美激情小说另类| 国产一区二区三区影院| 欧美日韩精品福利| 日韩在线视频第一页| 色阁综合伊人av| 春色校园综合激情亚洲| 国产主播喷水一区二区| 日韩影视高清在线观看| 99热一区二区三区| 久久久亚洲人| av av在线| 亚洲色图欧美激情| 超碰在线观看91| 精品剧情在线观看| 国产盗摄在线观看| 国产精品久久一区| 久久综合五月婷婷| 欧美做受777cos| 麻豆精品精品国产自在97香蕉| 日韩综合第一页| 亚洲精品高清视频在线观看| 中文字幕av影视| 亚洲黄色www| 性爱视频在线播放| 国产色视频一区| 国产精品一区二区99| av免费观看大全| 国产福利一区在线| 男人的午夜天堂| 欧美丝袜第三区| 黑人与亚洲人色ⅹvideos| 久久久久一本一区二区青青蜜月 | 精选一区二区三区四区五区| 欧美国产三级| 伊人五月天婷婷| 一区二区中文字幕在线| 中文字幕在线观看欧美| 一区二区欧美激情| 欧美成人免费电影| 欧美日韩综合精品| 亚洲欧美日韩一区在线观看| www.啪啪.com| 亚洲一区二区三区爽爽爽爽爽| 国产乱码一区二区| 久久在线免费观看视频| 不卡一区视频| 国产日韩欧美大片| 国产精品99久久不卡二区| 人妻无码一区二区三区免费| 91久久精品一区二区三| 国产免费av高清在线| 国产成人av在线| 日韩国产欧美| 亚洲另类第一页| 亚洲欧美经典视频| 亚洲精品国产一区二| 久久久久日韩精品久久久男男| 国产精品45p| 国产男女无遮挡| 久久久国产精品午夜一区ai换脸| 亚洲黄网在线观看| 一本色道久久综合亚洲精品小说| 国产精品亚洲成在人线| 一区二区三区|亚洲午夜| 国产一区二区三区黄视频| 国产女人被狂躁到高潮小说| 日韩欧美久久一区| 不卡专区在线| 日本一区二区不卡高清更新| 蜜臀精品一区二区三区在线观看| 男人av资源站| 亚洲电影天堂av| 日本免费久久| 中文字幕中文字幕在线中一区高清 | 中文字幕在线视频播放| 偷拍与自拍一区| 大乳在线免费观看| 91在线|亚洲| 欧美亚洲免费| 亚洲人与黑人屁股眼交| 亚洲精品一线二线三线| 欧美特大特白屁股xxxx| 在线视频一区观看| 成人18视频日本| 这里只有精品国产| 欧美大片网站在线观看| 亚洲日产av中文字幕| 亚洲自拍三区| 国产成人在线视频免费播放| 久久久国产高清| 久久精品99国产精品酒店日本| 91久久精品无嫩草影院| 日韩免费毛片视频| 亚洲视频小说图片| 日本又骚又刺激的视频在线观看| 国产免费一区二区三区在线观看 | 精品少妇av| 国产人妖在线观看| 欧美在线视频不卡| 免费在线国产视频| 日韩中文一区| 成人激情小说乱人伦| 中文字字幕在线观看| 国产69精品久久久久9999| 久久精品国产亚洲夜色av网站| 中文字幕天堂av| 欧美另类久久久品| 综合日韩av| 日韩激情视频一区二区| 中文在线资源观看网站视频免费不卡| 欧美视频一二区|