日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

58移动开发 App 工厂

發布時間:2023/12/9 编程问答 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 58移动开发 App 工厂 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

導語:App工廠,顧名思義,是一個能根據各種素材和組織形式生成App的工廠。更專業一點的描述,是根據一個具有完備組件庫以及這些組件的依賴關系,組合成一個個App。

以往的單App研發架構,由于每次打包編譯、版本發布都是一個全量的代碼集合,所以不會也不需要考慮每一個組件之間的依賴和耦合關系。在多App場景下,由于存在一套代碼,按需生成不同App所需要的代碼,原有的架構、代碼依賴關系、工程代碼組織方式都需要相應的改變。

App工廠的目標是在特定架構和業務場景下,基于一套代碼,按需生成目標App所需的代碼。一套代碼和按需生成是核心,缺一不可。特別是按需生成,意味著不攜帶任何不需要的代碼,這個在實現的過程中非常具有挑戰性。本文從iOS視角,分享58App在App工廠方面的理論和實踐的探索。

作者 | 彭飛

App工廠產生背景
業務的快速試錯催生多App

移動互聯網不論是在上半場,還是在下半場,業務的創新從來沒有停歇過。從微博到團購,從共享汽車到共享單車,從長視頻到短視頻,業務和模式的創新不斷。近幾年尤以頭條系的業務試錯見諸于各報端,從資訊到直播,再到短視頻,是一波接一波。

當前不論是大的互聯網公司,還是創業性的小公司,要想在新的領域摸索出一番天地,必須不斷試錯。移動領域的業務不斷試錯,要求能快速產出各業務對應的創新App。

集團業務的逐步擴大與細化催生多App

互聯網江湖早已三分天下,巨頭已經建立,大的互聯網平臺很難形成。但越是大的互聯網平臺,越擔心垂直細分業務的進攻。為應對進攻,集團業務也需要在一些領域逐步擴大和細化,垂直App應運而生。

垂直App與創新App的差距在于,垂直App是基于現有平臺業務細分而來,而創新App是平臺業務所沒有的。

另外,為了應對應用市場的分發和對包大小敏感的用戶,這幾年極速包幾乎成為各大公司的必備App。

集團業務的合并融合催生多App交叉

業務的收購、合并也是大型互聯網公司常有的事。收購合并后的業務如何融合,如何既能保持業務的獨立性,又能節省集團研發資源,還能支持一套交叉業務(又稱垂直業務)代碼在各獨立App運行,是一個重要又復雜的問題。比如今年58集團內安居客房產業務和原58房產業務的融合就是一個典型的案例。

App工廠目標、架構與實施方法
App工廠的實施目標

1.App工廠有以下目標:

標準化能力的產出,為App研發提效增速

標準化能力是實現App工廠的基礎,標準化能力與App業務代碼無耦合關系,比如React Native SDK,網絡庫、緩存庫等。

支持創新App、垂直App、極速App的生成和迭代

同一套代碼,根據配置,能按需生成不同App所需的代碼。按需生成是關鍵和核心,不給App工廠生成的App代碼攜帶任何無用代碼,增加包大小。

支持垂直業務在獨立App上的平移

App工廠依附于58App框架代碼上,馬甲包、極速包與App工廠(58App)是一個子集與全集的關系。但類似安居客App與58App是兩個獨立App,有交集(公共底層代碼或某些業務代碼),業務代碼集合不一樣。

針對獨立App的公共業務代碼,定義為垂直業務。App工廠在統一底層服務的前提下,也要支持垂直業務在獨立App上的平移。即一套業務代碼,能在兩個或多個獨立App上運行。

App工廠架構

名詞解釋

PODS

在iOS領域,pods特指cocoapods,是其縮寫。cocoapods是對OC或swift Cocoa 工程的依賴管理。(CocoaPods is a dependency manager for Swift and Objective-C Cocoa projects. )

中間件

中間件在軟件領域的通用解釋是:連接軟件組件和應用的程序。在這里中間件體現的是連接和共用。連接的是業務層和基礎庫層,共用體現在業務層的公共服務。

中間件按照業務強相關與否分為業務中間件和標準中間件。

業務中間件:

與業務強相關的中間件,在某一個獨立App中通用。由于對當前App其它功能的過多依賴,所以不適用于其他獨立App。

標準中間件:

與業務弱相關的中間件,不僅在某一個獨立App中通用,在其它獨立App中也通用,與App中的業務弱相關。最常見的是標準版的RNSDK。

基礎庫

對其它pod不產生依賴的獨立庫。比如一些開源的三方庫,是常見的基礎庫。除了第三方開源的,58集團內自封裝的sdk,如果對其它pod不產生依賴,也可以歸入基礎庫范圍,比如Passport SDK,WPush SDK等;

入口工程

主要負責對App工廠生成的App所需代碼進行配置。

入口工程pods:主要負責對App工廠生成的App所需代碼進行配置,入口工程中包括的功能有:

APPInfo:對App基礎信息的設置,比如App名稱,bundle identifier,版本號,證書等;

Podfile:當前App對所需工程代碼的依賴,比如招聘馬甲包會依賴招聘業務pod以及其他基礎服務pod和三方庫pod;

Regen.sh: 一個可執行文件(本地RD研發調試用),讀取podfile配置,拷貝App所需代碼及配置,然后生成App所需代碼;

Reng_jenkins.sh: 一個可執行文件(Jenkins服務打包用),讀取podfile配置,拷貝App所需代碼及配置,然后生成App所需代碼;

工程庫池

工程池是App工廠總的pod代碼集合。

工程池是App工廠總的代碼集合,每一個生成App所需代碼都是從這個代碼集合中獲取,研發過程中代碼更新也會同步更新到此代碼集合中去。

業務pods:各獨立業務工程代碼,代碼集合根據業務類型來劃分,比如App首頁pod、房產pod、招聘pod;

中間件pods:App工廠中間服務代碼,是58自己封裝的,區別于外界的第三方公開代碼,故稱為中間件代碼。中間件根據對58App業務的是否強依賴分為:

業務中間件:

與58App業務強相關,但是是58App中業務中通用中間服務,其應用場景在58App的業務場景內。

標準中間件:

與58App業務弱相關,可以作為一個標準化中間件在其它獨立App上引入。

在標準中間件中可以看到有圖標加了兩條豎線,這表示此標準中間件某些功能的實現依賴接入App的實現,只開放了接口協議。

以RN基礎庫標準中間件為例:

中間件包含的內容是載體頁及熱更新的全部公共的與業務弱相關的內容,但對于一些擴展的組件(比如埋點)需要開放協議讓接入方實現,中間件中不實現此邏輯。

三方庫pods:外界的開源第三方庫代碼,基本在行業內有統一的引用標準;

架構解析

上圖是App工廠架構圖,大的方面分為上下兩層:入口工程和工廠池。入口工程pod對工程池中的pod進行依賴,通過podfile配置每一個入口工程所在App所需的pod代碼。

工程池中的pod分為業務層、中間件層和基礎庫層。其中中間件層根據代碼是否強依賴58App業務,分為業務中間件和標準中間件。

在架構設計上,各層pods的依賴準則為:

上層可以依賴下層,但下層不可以依賴上層。比如上層中的業務pod中的首頁(MainPage)可以依賴業務中間件中的生命周期(WBLifeCircle),但反之不能依賴。

可以隔層依賴。比如業務pod可以依賴基礎庫pod;

業務pod間不能產生依賴。比如房產pod不能依賴招聘pod。

中間件pod和三方庫pod可以單向依賴。比如RN所在pod可以對登錄服務所在pod產生單向依賴。

制定上述依賴準則,是為了在生產App時或者進行垂直業務平移時可以按需配置所需pod。

如何借助App工廠架構達成設計目標

1.如何提供標準化的能力

所謂標準化能力,可以理解為獨立無依賴的Framework或SDK,對應上述架構圖中的標準中間件。比如RN基礎庫,封裝了載體頁、熱更新等一整套公共服務,58App外的獨立App可以無縫接入。

下圖展示的一些標準中間件:

標準中間件名稱

pod名稱

功能描述

RN基礎庫

WBReactNativeLibrary

封裝了RN基礎功能,包括載體頁、熱更新、性能優化以及一些標準化的Modules

Hybrid基礎庫

WBHybrid

封裝了Hybrid交互功能,action分發功能以及一些標準化的actions

跳轉組件

WBPageTransferDispatcher

封裝了支持基于主App跳轉協議的跳轉分發邏輯

網絡庫

WBNetwork

封裝了網絡訪問的基礎操作,網絡操作更近便利

定位

WBLocation

封裝了定位觸發的基礎策略和定位原始數據的獲取

緩存庫

WBCache

封裝了緩存的底層實現以及一些基本操作

另外,還有一些集團內其他中臺部門提供的標準化SDK,比如PassportSDK、IMSDK、Pay58SDK等。

2.如何支持創新App、極速App的生成

如上圖所示,在理想工程架構狀態下(即達到架構各層依賴準則),可以按需配置App所需功能,來生成馬甲包或者極速包。

當然為了應對蘋果審核(App之間必須保持差異性),還得針對馬甲包或者極速包來做一些個性化的處理。這種個性化處理在先前的馬賽克項目有完成,具體詳見馬賽克項目。

3.如何支持垂直業務的平移

垂直業務:同一業務在多個App上呈現的業務稱之為垂直業務。

垂直業務平移:并不是真的去移動,是指垂直業務及依賴的底層代碼是一套公共代碼,能夠運行在不同App上。

上圖所示的是租房和二手房這兩個垂直業務需要達到一套代碼,同時運行在58App和安居客App上。這就要求:

58App和安居客App共用垂直業務所依賴的底層代碼(中間件代碼+基礎庫代碼);

垂直業務代碼及所依賴的底層代碼對58App或安居客App中的獨有代碼沒有任何耦合,這樣就不會攜帶一些無關的不需要的代碼,有利于控制包大小;

垂直業務代碼及所依賴的底層代碼必須滿足App工廠架構中的分層原則和依賴原則,這樣架構擴展性會比較靈活

如何對存量代碼實施App工廠

基于前文App工廠技術架構及各層pod的依賴準則,各層pod的依賴關系理想示意圖如下圖所示(以招聘業務pod依賴為例):

從業務層到中間件層再到基礎庫層,從上到下單向依賴,沒有反向依賴和循環依賴

業務層之間沒有依賴

中間件層和基礎庫層可以允許有單向依賴

有了上述理想的依賴關系后,在入口工程進行生成App所需代碼進行配置時,就能按需配置,不會因為pod之間的反向依賴、循環依賴、整層依賴攜帶很多無用代碼,增加包大小。

  • 業務層pod解耦
  • 上圖所示的招聘業務的依賴關系。黑色箭頭表示的是pod的單向依賴,紅色的雙向箭頭表示的pod的雙向依賴。

    備注:服務層對應中間件層,三方庫層對應基礎庫層。

    針對業務pod解耦主要處理下層pod對業務pod的依賴以及業務pod之間的依賴,如下圖所示:

  • 中間件層pod解耦
  • 如上圖中實線所示的是招聘pod所依賴的中間件層pod之間的耦合關系。

    服務層pod解耦要解決以下兩種耦合關系:

    pod之間的雙向耦合

    pod之間的不必要單向依賴

    服務層pod的解耦至關重要,直接涉及到對工具庫pod的依賴處理。如不解除服務層pod的循環依賴關系,則會導致對工具庫pod的整層依賴,沒法按需配置所依賴的pod,造成包大小無法控制。

  • 基礎庫層pod解耦
  • 由于基礎庫層pod是最底層pod,沒有其他的依賴pod,所以也是這三層pod解耦工作量最少的。

    目前58App內的基礎庫層pod全都是放在一個pod中,這層解耦所要作的是按照功能對這個pod進行拆分,拆成一個個上層pod可依賴的單元。

    如何保證APP工廠質量

    App工廠的質量在版本迭代過程中的質量非常重要。如果在后續版本迭代過程中代碼沒有嚴格遵循App工廠的pod依賴準則,等到發現問題才去解決,會帶來很大的額外工作量。

  • Pod依賴關系檢測
  • 這個是所有質量檢測的基礎。在本文看到的一些pod的依賴關系都是我們開發的pod依賴自動分析工具得出的。如果沒有這個工具,在一些中大型的App中,靠人工方式去梳理這種依賴關系,將是一個極大的工作量。在這里大概說一下思路,有更好的方式歡迎交流:

    掃描本地工程目錄下所有pod代碼文件夾,及里面的類文件,建立類文件與pod工程的映射關系 filePodDict。

    掃描每一個pod下面類文件中的文件依賴部分(import部分),根據頭文件依賴及上面的filePodDict,建立pod的直接依賴關系podDepenDict。

    串聯所有pod的直接依賴關系,形成pod依賴最終關系podFinalDepenGraph,并輸出。最終Pod的依賴關系對應的數據結構是有向圖。

    如上圖所示,是基于招聘pod和其依賴的pod構建的有向圖的示意圖(為便于識別,將兩個pod直接相互依賴的一條線畫成了虛線)。基于這個數據結構,能實現前文所說的App工廠依賴準則的檢測。

  • 下層Pod對上層pod反向依賴檢測
  • 下層pod對上層pod反向依賴,是App工廠依賴準則首要禁止內容。比如如果中間件層的WubaRN的這個pod依賴了上層 首頁pod,會導致在業務平移過程中因為依賴WubaRN,而需攜帶不需要的首頁業務代碼。

    基于上述的有向圖,反向檢測在技術上很容易實現:

    內置一份pod與層級的映射關系

    遍歷pod依賴關系有向圖,檢測當前pod所依賴的pod層級是否小于自己的層級,如果小于,則是反向依賴,并標記

    將標記的反向依賴關系輸出

  • Pod循環依賴檢測
  • 在App工廠中,除了業務層代碼有非常明確的原因不能有依賴和環外,其它層的pod之間即使存在環,也有辦法達到App工廠不攜帶多余代碼的目標。但撇開App工廠不說,環的存在本質上是大多數情況兩個pod之間存在公共代碼沒有下沉。所以為了使App工廠的依賴準則更簡單和更易執行,就統一規定不能產生循環依賴。

    檢測有向圖是否存在環,是一個基礎的數據結構問題,在此不贅述。

  • 標準中間件污染檢測
  • 標準中間件是App工廠的核心,如果標準中間件在后續的業務迭代過程中被污染,即引入了不符合準則的依賴關系,將帶來額外的維護成本和解耦成本。所以如果能在單分支研發的時候以及集成分支上進行檢測,將被污染的概率降到最低。

    在App工廠中,標準中間件只允許依賴基礎庫層的pod。所以檢測策略也很簡單:

    遍歷所有標準中間件

    遍歷每一個標準中間件所依賴的pod,并判斷所依賴的pod是否屬于基礎庫層。如果不屬于,則標記這個被污染的依賴關系。

    輸出所有被污染的標準中間件及不合規的依賴關系。

    App工廠的實踐經驗
    App工廠在58App上有著廣泛的應用。目前已在房產垂直業務平移和招聘垂直App生成上進行了應用,并上線。

    房產垂直業務平移實踐(木星計劃項目)

    從去年開始,58同城房產業務和安居客房產業務進行了調整,租房和二手房業務在兩個獨立App上進行了重新拆分和整合。業務調整后原來的58同城租房和安居客二手房業務變成了垂直業務,即在58同城App和安居客App兩個獨立App上同時運行。業務的調整給技術架構帶來了很大的挑戰:

    如何將58同城租房、安居客二手房從原有App中拆分出來?

    如何在拆分過程中處理依賴代碼,最大限度降低攜帶無關代碼?

    可以想象一下,如果不基于App工廠要達成上述目標,會出現什么情況?

    要么攜帶很多對方App所不需要的,或者重復的代碼,造成包大小失控。

    要么針對具體業務寫非常多的協議(Protocol),各獨立App針對協議做各自實現。但這個協議會非常多,尤其針對存量代碼的改造成本非常高。

    于是,58無線技術部與房產技術部(安居客房產技術部、58房產技術部)一拍即合,就將App工廠應用到房產垂直業務平移中。

    1.項目里程碑

    這里重點介紹一下項目里程碑,以說明在多App垂直業務平移過程中,接入App工廠的思路。

    編號

    里程碑

    依賴前置節點

    1

    58APP無線技術側封裝并提供垂直業務所需公共庫

    /

    2

    58APP接入上述垂直業務公共庫

    1

    3

    安居客APP接入上述垂直業務公共庫

    1

    4

    租房業務適配雙APP,并支持業務在雙APP平移

    1、2、3

    5

    二手房業務線適配雙APP,并支持業務雙APP平移

    1、2、3

    從上述表格及依賴關系可以看出項目主要分為三個階段:

    抽離出垂直業務所依賴的公共庫

    各App分別接入抽出的公共庫

    垂直業務做一些適配,能同時運行在雙App上

    第一個階段公共庫的抽離大概用了1個半月;第二個階段各獨立App接入公共庫用了1-2個版本(平均3個星期一個版本),主要看測試資源的情況;第三個階段垂直業務平移用了2-3個版本。

    2.項目實施概述

    2.1 公共庫的抽離

    這里的公共庫是指垂直業務所依賴的中間件層代碼庫和基礎庫層代碼庫。這一步非常重要,如果沒有處理到位,后續業務在接入的過程中會不斷返工。

    具體垂直業務對中間件代碼和基礎庫代碼的耦合分析上文已詳細介紹了,在此不重復描述。這里要討論一個實踐中很重要的問題:從兩個獨立App中抽離公共庫,如何統一的問題?

    這個問題很復雜,以網絡中間件為例,各獨立App都有自己的封裝,而且封裝的API差異很大,很難通過調整API協議去抹平差異。這種情況下最簡單高效的方法是以一方App為基準,另一方App提兼容需求并放棄原有自己的代碼,抽離出來后共同維護。

    考慮到App的體量和對業務的影響,當時商量的是以58App為基準,安居客根據二手房業務代碼的調用需求,提兼容需求。58App抽離出來后,安居客重新接入。

    最終剝離出的公共庫(標準中間件)如下表所示:

    中間件

    功能描述

    網絡庫

    封裝了網絡訪問的基礎操作

    數據庫

    封裝了同城App內涉及到的包括城市列表、地鐵列表、商圈數據、歷史瀏覽記錄、足跡信息的存儲與讀取的接口。

    Hybrid基礎庫

    封裝了Hybrid交互功能,action分發功能以及一些標準化的actions

    React Native基礎庫

    封裝了RN基礎功能,包括載體頁、熱更新、性能優化以及一些標準化的Modules

    定位庫

    封裝了定位觸發的基礎策略和定位原始數據的獲取

    緩存庫

    封裝了緩存的底層實現以及一些基本操作

    路由跳轉庫

    封裝了支持基于主App跳轉協議的跳轉分發邏輯

    協議庫

    提供給支持跨平臺業務調用底層具體實現的協議(Protocol)部分,具體實現由不同平臺各自實現

    公共參數庫

    封裝了部分公共參數的生成與獲取API,直接接入即可自動獲取到58同城App內請求頭、Cookie、以及其他公共參數

    關于公共庫的剝離有兩個關鍵點要注意:

    以要平移的業務所依賴的公共庫為核心,不要貪多。以業務驅動來剝離公共庫,隨著業務的逐步接入和不斷支持,公共庫的數量和能力也逐漸上去了。

    技術上剝離公共庫不難,難的是最大限度降低對其它業務的影響,以及保證關聯業務上線的穩定性。

    如前文架構中介紹的,公共庫有標準中間價和業務中間件。在這里沒有具體介紹業務中間件的情況。因為業務中間件的依賴關系比較復雜。在具體拆分時一定要詳細分析拆分成本。

    2.2 各獨立App接入公共庫

    下表列舉了實施過程中的其中有代表性的四個中間件在各獨立App上的接入方案。

    中間件

    安居客二手房

    58App租房

    網絡庫

    √安居客二手房代碼遷移到58App,使用58網絡庫,支持httpbody,安居客業務代碼做適當改動。

    √58App租房代碼遷移到安居客,安居客做一個適配api層,58App房產業務代碼不需要改動。

    數據庫

    √安居客二手房代碼遷移到58App因業務不涉及,不用考慮數據庫問題。

    √58App租房代碼遷移到安居客,只攜帶58上的數據庫及數據表,業務代碼不用改動。

    Hybrid

    √安居客二手房代碼遷移到58App,業務代碼做兼容改動。

    √58App租房代碼遷移到安居客,攜帶58側精簡版的SDK,Action擴展能力在安居客中獨立實現,業務代碼不用改動。

    跳轉中心

    √安居客二手房代碼遷移到58App,修改業務代碼適應58跳轉協議;

    √58App租房代碼遷移到安居客,不需用修改業務代碼。

    ……

    ……

    ……

    由于是基于58App抽離出的中間件,所以58App租房代碼在平移的過程中,業務代碼基本不用改動。但安居客的業務代碼需要做相應的改動,這個成本是節省不了的。從當前上線的安居客二手房功能代碼穩定性來看,這個部分改動很成功。

    2.3 垂直業務平移

    上述垂直業務依賴的公共庫在各個獨立App接入后,并不意味著垂直業務就可以平移了。App工廠的一個核心目標是不攜帶無關代碼。垂直業務除了對公共庫有依賴,還對自身App中的其它模塊代碼有依賴。只有最大限度對這些非公共庫代碼摘除依賴,即拆分成業務中間件,才能真正滿足App工廠目標。

    這里不具體敘述如何去解藕業務中間件,主要介紹一下操作過程中的幾個準則,只要把握好這個準則,基本沒什么大的問題:

    分析依賴代碼能否做成業務中間件。業務中間件一定要滿足前文敘述的單向依賴原則,否則在代碼攜帶過程中無法做分析。

    如果依賴代碼只是少數幾個文件,不足以拆分出業務中間件。在對包大小沒有影響的前提下可以允許一些重復代碼。

    拆分業務中間件的過程中一定要保證對其它業務線不要產生影響。比如房產和招聘都依賴一塊業務中間件代碼,那在滿足房產業務平移的過程中,要想辦法不要對招聘代碼產生影響。

    對常見的解藕手段一定要注意選型,比如什么場景該用通知,什么場景該用runtime,什么場景該用protocol。

    3.項目成果

    這個項目是三方一起共同完成的,在這里僅說無線iOS側的一些成果:

    成果項

    成果說明

    1套App工廠架構

    分層架構及各層的依賴準則,用以作為pod解耦的基礎準則

    2種App生成支持

    支持創新App、獨立App垂直業務代碼生成

    3種自動化質量保證工具

    標準中間件污染檢測、中間件占包大小檢測、中間價靜態庫自動編譯和同步

    4類核心問題兼容性方案

    統一跳轉、Hybrid垂直業務平移、Cookie和header統一、個性化業務兼容

    14個標準中間件

    比如Hybrid中間件、RN中間件、網絡中間件、跳轉中間件等

    430個類,3309個方法

    14個標準中間價涉及430個類,3309個方法

    上述成果只涵蓋了App工廠標準化成果,這些標準化成果不僅僅支持房產垂直業務平移,還適用于對其它業務的支持,比如58同城招聘App(已完成)、58同城租房App(即將進行)的生成和部落垂直業務平移(正在進行)。關于業務中間件的解耦與具體業務有關聯,在此沒有詳細梳理。

    App工廠在木星計劃中對包大小的收益及接入后的穩定性如下表所示:

    指標

    58App接入App工廠

    安居客App接入App工廠

    數據說明

    包大小

    給58租房平移到安居客App節省73MB左右

    租房依賴的中間件(41.2MB)+租房依賴的三方庫(43.8MB)-安居客接入標準中間件(11.4MB)=73.6MB

    給安居客二手房平移到58App節省28 MB

    二手房依賴的中間件(13.08MB)+二手房依賴的三方庫(14.88MB)= 28MB

    節省的包大小是按照接入App工廠前后需要攜帶的代碼計算的。

    崩潰率

    接入前8.22版本崩潰率千分之1.1,接入后8.23版本千分之1

    接入前12.14版本崩潰率 千分之1, 接入后12.16版本 千分之1.3

    安居客接入App工廠的12.16版本崩潰率升高萬分之三與App 工廠無關,主要來自其它業務的崩潰。

    從上表可以看出,包大小上不論是對58App還是安居客App,都有非常大的收益。崩潰率在接入前后沒有顯著性變化,代碼上線穩定表現良好。特別是針對崩潰率和功能穩定性,涉及這么大范圍的變動,能做到沒有線上事故確實不容易。

    58同城招聘App(創新App)生成實踐

    創新App、極速版App都是同一類型的App,大部分基礎功能都可以使用App工廠基礎能力。由于蘋果在馬甲包審核規則上的限制,功能的相似度超過一定程度會有較大的審核風險。所以不論是創新App還是極速版App,基于蘋果審核的限制,肯定不能百分生成所需要的代碼,有一部分代碼需要額外開發。至于額外開發的代碼需要占多大比例,沒有確定答案,能向蘋果解釋得通業務模式差異,能通過蘋果審核就是王道。

    同木星計劃項目中接入App工廠不同,創新App代碼的生成下面將換一個角度來描述,重點介紹pod依賴的梳理與解耦。

  • Pod依賴的耦合梳理
  • Pod依賴的耦合梳理的目標是:招聘pod依賴直接或間接依賴哪些pod,這些依賴關系哪些是不滿足App工廠依賴準則,如何剪除某些依賴關系達到App工廠依賴準則?

    上面的依賴關系圖中有兩根灰色的虛線,整個圖被切成三部分,從上到下依次對應App工廠架構中的業務層、中間件層和基礎庫層。其中打叉號的箭頭表示的是不符合App工廠依賴準則的:

    業務pod橫向依賴。比如招聘和用戶中心pod都屬于業務層,但招聘pod依賴了用戶中心pod,屬于同一層中的橫向依賴,這個依賴需要剪除。

    下層pod對上層pod有依賴。比如跳轉中心pod依賴首頁pod,跳轉中心pod屬于中間件pod,首頁pod屬于業務層pod,這種依賴就是下層的中間件pod依賴了上層的業務層pod,這個依賴需要剪除。

    可以看到,如果將上述不符合App工廠依賴準則的依賴解除之后,招聘pod就與個人中心pod和首頁pod沒有依賴關系了,在App代碼生成的時候也不會攜帶不需要的代碼了(個人中心、首頁pod的代碼及其依賴的一堆代碼)。

  • Pod間耦合解除措施
  • Pod間耦合解除最終是要落地到pod間代碼的調用關系解除,比如招聘pod依賴了用戶中心pod,肯定是招聘pod中的某個代碼文件依賴了用戶中心pod的代碼文件,解耦的落地是找到代碼文件中代碼的耦合并根據情況解除。

    我們常用的代碼耦合解除手段有:

    移動代碼文件。這是成本最低的一種手段,測試影響也相對最小,是最先推薦使用的方案。通過移動代碼文件到一個合適的podFit中后,原有兩個pod的耦合關系就自動解除了。選擇這個合適的podFit的一個原則是,原有pod本來就對這個podFit有依賴關系,增加新的代碼文件并不會帶來新的依賴。但有的時候沒有一個已有的合適的pod,這時候就要評估創建一個新的pod來解決這種情況了。

    移動方法或公共屬性。這是成本次高的一種手段,方法或者公共屬性所處類的位置發生變化后,需要梳理各種使用的業務邏輯,尤其是要注意runtime對方法的動態調用。

    編譯時耦合解除。有好多代碼間調用其實并不是必須的,比如招聘pod有一個投遞簡歷的邏輯和個人中心我的簡歷業務耦合。一旦用戶在招聘模塊投遞了一個簡歷,個人中心需要有相應的功能顯示。招聘模塊需要向個人中心模塊傳遞一個消息,這個消息的傳遞可以用通知實現,也可以直接調用個人中心提供的API。但無論時是哪一種實現方式,這個消息傳遞并不影響招聘模塊的業務獨立性,即使個人中心這個模塊功能沒有,招聘模塊也可以運行。這種情況下的解耦,只要保證在編譯時代碼不報錯,將一些直接API調用的地方改用通知,或runtime調用方式即可。

    公共代碼下沉。有好多代碼間調用是運行時必須的,針對這些代碼就沒法使用編譯時耦合解除的手段,需要將這部分代碼下沉到下一層,比如中間件層。公共代碼下沉的手段和前文提到的代碼文件移動的手段有些交集,但又有差別。代碼文件強調的是代碼文件的移動,不一定要移動到下層pod;公共代碼下沉既可能是代碼文件下沉,也可能是某一個方法下沉。

    基于協議的代碼隔離。還有一種常見情況需要重點提出來,就是有好多業務在不同App中表現形態不一樣,很難用一套代碼來解決。針對這種情況,需要抽離出一層協議,在公共代碼中通過協議來調用,在接入App中基于協議來完成不同的實現。

    Pod解耦,尤其涉及到業務層代碼和中間件層代碼的解耦,很難有一個標準衡量哪些pod的耦合在最開始做的是對的還是錯的。因為好多業務在最開始的時候從產品層面,沒有考慮到這個業務是一個垂直業務,會在多App上平移。但是一旦有一個業務被確定要支持多App后,這個業務涉及的pod的依賴關系必須滿足App工廠的依賴準則。這一點在后續的業務持續迭代中要尤其注意。

    風險控制

    App工廠的整個代碼重構,涉及的面非常廣。58App今年在App工廠上對代碼的改動是之前所未有的。每個公司業務及架構不同,代碼的復雜度和重構的難度也不一樣,所以面臨的線上風險也會各有差異。在重構過程中除了要有嚴格的技術方案評審、代碼審查、全面的Case測試外,尤其要注意兩點容易被忽視但很容易出問題的點:

    版本迭代合并遺漏風險

    在58App中,隨著App工廠的不斷深入和業務的逐步接入,中間件層和基礎服務層拆分的越來越細了,pod的數據目前全部加起來已經超過50個了。App工廠項目進行的同時,還有日常版本需求項目并行開發。在這過程中,同一份代碼既可能會在App工廠中改動,又會有相應新需求的研發。

    App工廠項目跨度比較長,比如某一個中間價是基于8.0版本拉分支出來開發的,但是可能會跨幾個版本才能上線。在這個過程中一定要不斷合并新版本代碼到當前App工廠分支。并且對一些有沖突的代碼一定要細心處理。中間件層代碼和基礎服務層代碼的變動測試一直是一個痛點,很難覆蓋所有的業務場景,所以一定要對有沖突和有改動的代碼進行細心處理,以防帶來線上問題。

    數據耦合風險

    數據耦合指的是某些業務代碼會操作且依賴某公共數據。但數據依賴在編譯時和大部分運行時發現不了,這給發現問題帶來很大的難度。比如App上的商圈數據、埋點數據、用戶電話撥打記錄、帖子收藏記錄等,都屬于數據耦合范疇。

    與上面的版本合并遺漏問題一樣,數據耦合風險處理的原則也是對所有影響數據的業務進行詳細的梳理并解耦,要從開發、測試、灰度數據驗證等多個關鍵節點進行全面處理。

    總結
    任何架構都離不開業務,都是為了解決業務痛點、問題的,App工廠也不例外。由于每個公司的App架構不同、業務形式不同、部門協作研發的形式也不同,所以肯定沒有一個放之四海而皆準的App工廠理論和實現準則。

    58App在實施的過程中,也是通過業務的不斷接入逐步完善App工廠的能力。而完善的這部分能力,有標準化的能力,也有非標準化的能力。而且標準化和非標準化隨著后續業務的迭代還可能會相互轉化。未來58App還會持續在更多業務上進行接入,以持續解決業務問題,給業務研發提效。

    App工廠是團隊協作的成果,感謝參與其中的同學。App工廠從構想到實施、再到業務接入,是近年來58無線技術少有的大動作。沒有用戶價值增長部各級老板的構想、規劃、指導和組內同學的協同貫徹實施,沒有房產技術部(安居客房產技術部、58趕集房產技術部)、招聘技術部等部門的老板和同學的精密協作和業務實踐,是啟動和完成不了這么一個大的工程。

    作者:

    彭飛,58同城-基礎技術部-iOS技術部 架構師,iOS技術部負責人。

    曾慶隆,58同城-基礎技術部-iOS技術部 架構師

    王曉暉,58同城-基礎技術部-iOS技術部 高級研發工程師

    總結

    以上是生活随笔為你收集整理的58移动开发 App 工厂的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    www日韩在线观看 | 国产精品久久久久久久久久久久久久 | 日韩videos | 一区三区视频 | 成人免费视频网站 | 欧美激情精品久久久久久免费 | 日本中文一级片 | 男女免费视频观看 | 久久爱www. | 天天色天天骑天天射 | 久久久免费看视频 | 中文在线a∨在线 | 四虎永久视频 | 国产一区二区精 | 日韩精品不卡在线观看 | 在线观看久久久久久 | 一区二区视频欧美 | 久久视频精品 | 国产精品你懂的在线观看 | 人人爽人人爽人人爽学生一级 | 日韩av女优视频 | 91麻豆精品国产91久久久使用方法 | 国产综合在线视频 | 久久欧美在线电影 | 丝袜美腿亚洲综合 | 91自拍视频在线 | 欧美日韩18 | 成人免费在线观看入口 | 国产第一福利 | 亚洲高清在线观看视频 | 久久黄色网址 | 国产精品私人影院 | 超碰在线人 | 久久视频免费观看 | www黄com | 亚洲国产成人av网 | 精品一区电影国产 | av专区在线 | 国产资源在线免费观看 | 在线播放日韩 | 91热视频 | 五月开心色 | 色中射 | 久久久精品国产免费观看一区二区 | 久久久久久中文字幕 | 91久久人澡人人添人人爽欧美 | 亚洲一区视频免费观看 | 永久免费毛片 | 欧美大jb| 中国一级特黄毛片大片久久 | 日韩色在线 | 在线观看日韩免费视频 | 国产在线观看91 | 97视频在线观看网址 | 懂色av一区二区在线播放 | 午夜精品一区二区三区视频免费看 | 久久99久久99精品免观看粉嫩 | 黄色成人在线 | 国产精品久久免费看 | 99爱精品视频| 久久精品美女 | 中文字幕视频网站 | 911久久香蕉国产线看观看 | 国产精品一区在线观看 | 久久经典国产视频 | 免费69视频 | 最新中文在线视频 | 国产精品久久网 | 在线a亚洲视频播放在线观看 | www日韩| 99久久超碰中文字幕伊人 | 久久狠狠婷婷 | av丁香花| 久久精品a| 午夜视频一区二区三区 | 99re6热在线精品视频 | 午夜少妇| 精品国产一区二区三区久久 | www久久久| 国内精品在线观看视频 | 99视频国产精品 | 怡红院av久久久久久久 | 国产成人61精品免费看片 | 国产精品网在线观看 | 久久精品国产成人精品 | 爱av在线网 | 91中文字幕在线播放 | 日韩中文免费视频 | 国产成人精品免高潮在线观看 | 欧美精品第一 | 免费日韩 精品中文字幕视频在线 | www日韩在线 | 国产精品久久久久免费观看 | 亚洲精品资源 | 亚洲黄色免费电影 | 91成人精品 | 日韩精品视频网站 | 视频三区 | 婷婷视频在线观看 | 亚洲人精品午夜 | 久久歪歪| 久久久资源网 | a在线观看免费视频 | 国产免费精彩视频 | 国产中文在线视频 | 香蕉免费| 中文字幕免费高清在线 | 在线一二区 | 91精品网站在线观看 | 日本精品在线看 | 久久久99精品免费观看app | 四虎影视精品永久在线观看 | 久久亚洲福利视频 | 国产精品99精品久久免费 | 狂野欧美激情性xxxx | 四虎精品成人免费网站 | 欧美狠狠操 | 99视频在线免费播放 | 色无五月 | 天天色棕合合合合合合 | 99热.com| 天天草天天插 | 久久人人爽 | 亚洲天天 | 伊人五月天综合 | 国产精品9999 | 久久久精品综合 | 久久久www成人免费精品 | 午夜精品一区二区三区免费视频 | 国内三级在线 | 黄色1级大片 | 97视频中文字幕 | 久久综合免费视频影院 | 亚洲精品一区二区久 | 91九色在线| 日韩高清一二三区 | 国产精品免费视频观看 | 精品国产一二三 | 成人久久免费 | 免费av高清 | 97超视频 | 三级黄色在线 | 免费h精品视频在线播放 | 日p视频在线观看 | 国产高清永久免费 | 久久综合精品国产一区二区三区 | 欧美成人播放 | 欧美日韩一区二区视频在线观看 | 亚洲专区欧美专区 | 国产精品一区二区视频 | 日韩精品一区二区三区视频播放 | 久艹在线免费观看 | 草久在线观看视频 | 免费网站污 | 久久久久久久久久久成人 | 久热免费 | 国内精品久久久久影院优 | 又色又爽的网站 | 美女视频黄,久久 | 99精品国产在热久久 | 69国产精品视频 | 91一区二区三区久久久久国产乱 | 国产一级二级三级在线观看 | 久草免费在线视频观看 | www.狠狠插.com | 最近字幕在线观看第一季 | 人人爽人人爽人人爽人人爽 | 91视频在线免费 | 欧美91精品久久久久国产性生爱 | 黄色在线免费观看网址 | 亚洲精品午夜国产va久久成人 | 精品国偷自产在线 | 黄色电影网站在线观看 | 91色蜜桃 | 国产精品1区2区3区在线观看 | 波多野结衣最新 | 黄色一级在线视频 | 日韩精品久久久久久久电影竹菊 | 日韩激情久久 | 色婷婷视频 | 欧产日产国产69 | 色久综合 | av免费在线看网站 | 亚洲成人一二三 | 欧美性猛片 | 热久久免费国产视频 | 亚洲精品女人久久久 | 国产在线高清 | 日p视频在线观看 | 天天插天天操天天干 | 另类五月激情 | 香蕉视频最新网址 | 制服丝袜欧美 | 免费欧美| 97在线免费观看 | 97人人模人人爽人人喊网 | 精品国产乱码久久久久 | 亚洲精品在线观看网站 | 国模一区二区三区四区 | av黄色免费看 | 91精品国产高清自在线观看 | 99c视频在线| 日本中文字幕视频 | 国产真实精品久久二三区 | 激情欧美xxxx | 国产高清在线免费 | 成人动漫一区二区三区 | 国产视频 亚洲精品 | 精品国产乱码久久久久久天美 | 91免费网站在线观看 | 五月婷婷国产 | 免费观看一级特黄欧美大片 | 国产精品mm| 国产综合在线视频 | 国产不卡视频在线播放 | 国产精品毛片一区二区在线看 | 精品国产乱码久久久久久天美 | 日韩精品中文字幕在线 | 国产成人av一区二区三区在线观看 | 国产成人高清 | 9色在线视频| 亚洲色图激情文学 | 五月天激情综合 | 日本精品久久久久中文字幕5 | 国产成视频在线观看 | 午夜国产成人 | 91精品国产麻豆 | 免费黄色激情视频 | 在线看片一区 | 亚洲午夜精品一区二区三区电影院 | 国产午夜精品在线 | 日韩在线视频线视频免费网站 | 国产人成一区二区三区影院 | 成人国产精品入口 | 亚洲片在线资源 | 五月天天色| 一区二区免费不卡在线 | 一级黄色片在线 | 在线成人国产 | 国产精品人成电影在线观看 | 亚洲va欧美va国产va黑人 | 天天躁日日| 91福利在线观看 | 免费进去里的视频 | 国产精品21区 | 国外成人在线视频网站 | 国产91九色蝌蚪 | 精品视频久久久久久 | 天天操天天射天天爱 | 久久视奸 | 国产麻豆视频在线观看 | av中文字幕网址 | 国产视频精品网 | 国产视频一区精品 | 成人激情开心网 | 免费久草视频 | 激情网色 | 久久人人射 | 中文字幕在线一区观看 | 久草香蕉在线视频 | 最新午夜电影 | 免费一级片在线 | 免费观看黄 | 三级性生活视频 | 亚洲国产精品人久久电影 | 中文字幕在线免费观看 | 国产又黄又硬又爽 | 成人av电影网址 | 成人sm另类专区 | 久久久久久久久久久国产精品 | 亚洲欧美综合 | 成人h电影在线观看 | 久久99精品久久久久久秒播蜜臀 | 成人97视频 | 国产精品一区二区三区四 | 精品一区二区久久久久久久网站 | 亚洲专区视频在线观看 | 亚洲精品视频网站在线观看 | 中文字幕中文字幕在线一区 | 天天操比| 麻豆国产精品永久免费视频 | 五月婷婷导航 | 91精品网站在线观看 | 在线免费色 | 色a综合 | 国产日韩视频在线播放 | 激情欧美在线观看 | 久久字幕网| 成人a在线观看高清电影 | 婷婷日日 | 日韩精品在线免费播放 | 91在线你懂的 | 免费在线中文字幕 | 91自拍视频在线 | 日韩久久久久久久 | 日韩中文在线字幕 | 99国产精品 | 在线小视频你懂的 | 免费看国产精品 | 中文字幕欧美日韩va免费视频 | 99久久久精品 | 精品国产乱码久久久久久1区二区 | 高清av免费一区中文字幕 | 久久国产系列 | 91网免费观看 | 黄网站免费大全入口 | 夜色成人av | 久久免费视频在线观看6 | 成人午夜精品久久久久久久3d | 久久色在线观看 | 久久桃花网 | 深爱五月激情五月 | 激情综合色综合久久 | 狠狠干激情 | 欧美精品久久久久久久亚洲调教 | 日本中文字幕网站 | 97电影网站| 91麻豆精品国产91久久久久久 | 久久影视中文字幕 | 天干啦夜天干天干在线线 | 久久免费黄色网址 | 少妇精品久久久一区二区免费 | 色一色在线 | 99免费在线播放99久久免费 | 一本色道久久精品 | 精品欧美小视频在线观看 | 日本在线精品视频 | 久久精品欧美 | 国产区精品 | 91av免费观看 | 久久久久久久久国产 | 99精品视频在线观看视频 | www久久久久| 91成版人在线观看入口 | 十八岁免进欧美 | 天天综合色网 | 国产色视频123区 | 欧美午夜精品久久久久久孕妇 | 激情av网 | 日韩欧美电影在线观看 | 91桃花视频 | 夜夜看av | 色黄www小说| 13日本xxxxxⅹxxx20 | 国产区高清在线 | 99热精品久久 | 91精品欧美一区二区三区 | 免费在线色电影 | 国产午夜精品久久久久久久久久 | 天天看天天干天天操 | avhd高清在线谜片 | 一区二区三区久久精品 | 国产中文视 | 波多野结衣网址 | 久久不卡av | 狠狠做六月爱婷婷综合aⅴ 日本高清免费中文字幕 | 国产日产精品一区二区三区四区的观看方式 | 香蕉视频在线播放 | 国产一区二区三区四区大秀 | 色在线免费观看 | 日日夜夜精品免费 | 亚洲精品小区久久久久久 | 久久视频一区 | 国产成人三级在线观看 | 精品在线观看国产 | 一本大道久久精品懂色aⅴ 五月婷社区 | 日韩在线中文字幕 | 亚洲成人黄色在线 | 国产一级特黄电影 | 天天天天天天干 | 免费成人黄色片 | 99视频国产在线 | 日韩黄色免费 | 久久国产影视 | 亚洲最大av在线播放 | 欧美日韩在线观看一区二区 | 操操日日 | 午夜精品久久久久久久99无限制 | 性色av免费在线观看 | 日韩欧美电影在线观看 | 国产精品久久久久婷婷 | 人人草在线观看 | 日韩高清在线不卡 | 青春草免费视频 | a级国产毛片 | 天天做天天爱夜夜爽 | 在线观看一二三区 | 久久av观看 | 99久久超碰中文字幕伊人 | 亚洲黄色高清 | 探花视频在线观看 | 九九热免费在线观看 | 999久久久久久 | 欧美一区二区日韩一区二区 | 国产免费亚洲 | 韩日电影在线免费看 | www成人av| 九九视频精品免费 | 在线视频麻豆 | 国产黄网站在线观看 | 在线观看视频一区二区 | 天天干,天天射,天天操,天天摸 | 91网址在线 | 国产高清免费 | 日韩欧美在线观看一区二区三区 | 欧美一级欧美一级 | 国产精品一区二区吃奶在线观看 | 亚洲欧美经典 | 国产在线播放一区 | 国产精品欧美精品 | 精品国产免费一区二区三区五区 | 五月天av在线 | 欧美日韩亚洲在线观看 | 亚洲精品视频在线观看视频 | 中文字幕黄色网址 | 久久福利精品 | 久久午夜色播影院免费高清 | 久久久久99精品国产片 | 欧美日韩国产亚洲乱码字幕 | 国产免费国产 | 亚洲一区免费在线 | 日韩成人黄色av | 综合久久久久久久久 | 免费看特级毛片 | 亚洲网站在线看 | 午夜精品一区二区三区免费视频 | 精品久久久久免费极品大片 | 国产一区二区不卡在线 | 午夜国产一区 | 久久精品视频一 | 国产99爱| 日韩在线观看第一页 | 久久亚洲精品电影 | 国产精品毛片久久久 | 欧美国产91 | 国产精品麻豆99久久久久久 | 久久成人午夜视频 | 九九在线国产视频 | 久久9精品| 亚洲黄色一级视频 | 久久午夜视频 | 久久与婷婷 | 日韩网站一区 | av在线短片 | 四虎成人精品永久免费av | 成人网在线免费视频 | 亚洲精品乱码久久久久v最新版 | 国产高清av免费在线观看 | 国产一级视频在线观看 | 午夜精选视频 | 久久免费中文视频 | 久热免费 | 日韩欧美大片免费观看 | 在线韩国电影免费观影完整版 | 日日天天 | 九九热av | 婷婷在线视频观看 | 一级国产视频 | 视频在线观看国产 | 在线a亚洲视频播放在线观看 | 麻豆国产网站 | 91日韩免费 | 四虎影视成人永久免费观看视频 | 四虎影视www| 亚洲春色成人 | 天天看天天干天天操 | 国产成人777777 | 中文字幕免费在线 | 欧美性极品xxxx做受 | 天天操天天怕 | 中文字幕 婷婷 | 国产午夜精品一区二区三区在线观看 | 免费看v片网站 | 欧美少妇影院 | 激情综合五月婷婷 | 久草在线99| 999久久久久久久久 69av视频在线观看 | 成人午夜性影院 | 日韩va欧美va亚洲va久久 | 韩国av在线播放 | 色综合久久精品 | 最近日本韩国中文字幕 | 久草在线免费资源 | 精品亚洲视频在线 | 在线观看av网 | 一区二区三区四区在线免费观看 | 午夜资源站 | 国产精品手机看片 | 五月激情片 | 久久成人一区 | 在线成人小视频 | 亚洲精品动漫久久久久 | 成人性生爱a∨ | 欧美久久久影院 | 国产一区二区高清视频 | 国产欧美精品一区二区三区 | 国产激情电影综合在线看 | 成人午夜精品久久久久久久3d | 一区久久久 | 久久久久97国产 | 亚洲精品视频在线播放 | 久久香蕉电影 | 一区二区三区久久 | 亚洲国产成人在线播放 | 色多多污污 | 亚洲三级视频 | 91精品久久久久久久久 | 亚洲欧美日韩精品久久奇米一区 | 久久精品免费观看 | 97热久久免费频精品99 | 公开超碰在线 | 午夜视频在线观看欧美 | 国产一级二级在线观看 | 在线一二三区 | 日韩在线视频一区二区三区 | 国产精品美女久久久免费 | 在线免费观看视频一区二区三区 | 国产综合香蕉五月婷在线 | 五月婷婷视频 | 亚洲精品成人av在线 | 夜夜躁狠狠躁日日躁视频黑人 | 午夜精品电影一区二区在线 | 福利视频午夜 | 亚洲国产三级在线 | 国产精品综合av一区二区国产馆 | 六月天综合网 | 高清一区二区 | 久久久久免费观看 | 蜜桃av观看| 四虎影视久久久 | 一区二区不卡视频在线观看 | 成人久久久久久久久久 | 国产精品网在线观看 | av黄免费看 | 久久综合婷婷综合 | 中文字幕 在线看 | 国产又粗又猛又爽 | 高潮毛片无遮挡高清免费 | 91少妇精拍在线播放 | 99在线精品观看 | 亚洲美女免费视频 | 日韩欧美精选 | 久久视频在线免费观看 | 免费看的黄色片 | 天天超碰 | 国产一级片久久 | 欧美成人h版| 色婷婷激情五月 | 日本大片免费观看在线 | 亚洲天堂精品视频在线观看 | 精品视频一区在线 | 精品一区二区视频 | 中文av在线播放 | 久久国产二区 | 国产高清在线视频 | 亚洲丝袜中文 | 久久国产精品视频 | 91中文字幕网 | 日本精品中文字幕在线观看 | 色狠狠干 | 欧美性精品 | 国产香蕉视频在线播放 | 国产亚洲精品久久19p | 4438全国亚洲精品在线观看视频 | 成年人网站免费在线观看 | 美女天天操 | 久久精品人人做人人综合老师 | 麻豆免费视频网站 | 激情五月婷婷激情 | 亚州精品天堂中文字幕 | 亚洲手机天堂 | 中文字幕免费高清 | 91人人澡人人爽 | 久久久久久久久久久久久久免费看 | 激情欧美丁香 | 91九色视频导航 | 久久精品中文字幕少妇 | 国产亚洲欧美一区 | 日日夜夜精品免费 | av片一区二区 | 黄色a在线 | 97碰在线 | 九九视频网| 国产一区二区在线观看视频 | 九九久久精品视频 | 亚洲精品成人在线 | 天天综合网久久 | 中文字幕刺激在线 | 中文字幕高清视频 | 色插综合 | 欧美精品在线观看免费 | 国产成人免费观看 | 狠狠色伊人亚洲综合网站野外 | 一区二区精品视频 | 国产成人综合图片 | 久久国产日韩 | 亚洲精品av中文字幕在线在线 | 国产亚洲视频在线 | 久久99久久精品国产 | 波多野结衣视频一区 | 国产伦精品一区二区三区无广告 | 丁香婷婷基地 | 97精品国产aⅴ | 一区二区成人国产精品 | 日日日日干 | 精品久久久久久国产偷窥 | 久久99久久99精品免观看粉嫩 | 国产999精品 | 99免费精品 | 在线蜜桃视频 | 成人av一区二区三区 | 久久久精品久久 | 中文字幕av日韩 | 亚洲无人区小视频 | 国产免费人成xvideos视频 | 一区二区三区观看 | av中文字幕电影 | 久久精品国产精品亚洲精品 | 亚洲精品视频偷拍 | 一级c片 | 日韩在线观看a | 亚洲视频 在线观看 | 久久黄色a级片 | 国产欧美日韩一区 | 黄色三级免费片 | 亚洲欧美日本A∨在线观看 青青河边草观看完整版高清 | 亚洲四虎在线 | 91尤物国产尤物福利在线播放 | 国产在线中文 | 国产夫妻av在线 | 97精品国产97久久久久久久久久久久 | 成人全视频免费观看在线看 | 在线观看91网站 | 国产精品久久久久久妇 | 日本精品视频在线观看 | 96国产精品 | www夜夜操 | 欧美另类调教 | 欧美亚洲免费在线一区 | 久久99影院 | 久久成人国产精品一区二区 | 精品国产综合区久久久久久 | 日本在线成人 | 1024手机在线看 | 婷婷国产在线观看 | 99久久婷婷国产一区二区三区 | 国产一级免费观看视频 | 在线免费观看国产视频 | 久久久久国产成人精品亚洲午夜 | 国产高清一 | 国产视频亚洲视频 | 国产五月天婷婷 | 少妇按摩av | 日本精品视频一区 | 精品国产一二三四区 | 一区二区三区在线播放 | 精品久久久久久久久久久久久久久久久久 | 奇米影视999 | 狠狠色噜噜狠狠 | 午夜久久电影网 | 91看片在线观看 | 国产二区免费视频 | 天天射天天干天天 | 中文字幕黄色网址 | 韩日精品在线观看 | 国产黄网站在线观看 | 久久爱资源网 | 国产精品入口66mio女同 | 毛片无卡免费无播放器 | 西西4444www大胆视频 | 成人观看视频 | 国产一区在线免费观看视频 | jizz999| 国产三级久久久 | 精品一区二区在线观看 | 人人澡人人舔 | 日韩欧美高清一区二区 | 国产免费一区二区三区网站免费 | 精品免费久久久久 | 一本之道乱码区 | 成人性生交大片免费观看网站 | 999久久| 激情伊人五月天久久综合 | 性色大片在线观看 | 在线欧美最极品的av | 国产精品久久影院 | 久久国产精品视频 | 日韩影视在线观看 | av在线进入| 91中文视频 | 国产精品毛片一区二区在线看 | www久久精品| 最新国产精品拍自在线播放 | 我要色综合天天 | 亚洲视频免费在线观看 | 网站在线观看你们懂的 | 久久久久国产一区二区三区 | 免费在线黄网 | 中国精品一区二区 | 日韩在线精品一区 | 国产在线毛片 | 免费a视频 | 国产99久久| 精品毛片久久久久久 | 在线观看成年人 | 国产免费黄视频在线观看 | 久久久婷 | 成人91视频 | 日韩二区三区在线 | 麻豆首页 | a成人v在线 | 在线观看亚洲电影 | av资源在线看 | 久久国产精品视频免费看 | 全久久久久久久久久久电影 | 日韩在线视频线视频免费网站 | 国产成人精品久久 | 99久久夜色精品国产亚洲96 | 美女很黄免费网站 | 亚洲网站在线看 | 国产69久久精品成人看 | 亚洲精品videossex少妇 | 三级黄色大片在线观看 | av中文天堂| 综合亚洲视频 | 国产老太婆免费交性大片 | 人人舔人人爽 | 中文字幕在线视频一区 | 97热视频 | 在线看片中文字幕 | 黄色免费网站大全 | 一区二区三区精品在线 | 高清一区二区三区av | 亚洲视频2 | 国产精彩视频一区二区 | 午夜久草 | av超碰在线 | 免费高清在线视频一区· | 成人xxxx| 特级毛片aaa| 日韩电影黄色 | 色综合天天天天做夜夜夜夜做 | 激情久久久久久久久久久久久久久久 | 久久久久久久久久久国产精品 | 久久理论片 | 国产一区二区三区免费视频 | 最新av在线网址 | 狠狠的日 | 久久久久久久久久久久电影 | 日韩视频在线观看免费 | 日韩精品视频网站 | 日韩动态视频 | 91女神的呻吟细腰翘臀美女 | 麻豆视频免费播放 | 一色av| 91视频下载 | 黄色软件在线看 | 欧美99久久 | 久久久久久久福利 | 国产一区视频在线播放 | 国产精品专区在线观看 | 91精品国产91热久久久做人人 | 黄色av成人在线 | 狠狠网亚洲精品 | 日韩精品一区二区电影 | 久草在线久草在线2 | 亚洲专区欧美专区 | 久久精品视频免费 | 西西www4444大胆视频 | 成人aⅴ视频| 三级黄色网络 | 亚洲国产中文字幕在线观看 | 亚洲精品免费在线观看视频 | 免费一级特黄毛大片 | 久久99精品久久久久久清纯直播 | 天天做天天爱天天爽综合网 | 人人干人人草 | 国产成人av网站 | 亚洲干| av片在线观看免费 | av丝袜在线 | 九七视频在线 | 亚洲日日射 | 在线观看完整版免费 | 中文字幕一区二区三区四区视频 | 国产日韩欧美在线看 | 国产精品初高中精品久久 | 中文字幕在线一区观看 | a视频免费看 | 97在线免费视频观看 | www天天操 | 亚洲综合在线视频 | 国产精品嫩草影院99网站 | 久草香蕉在线视频 | 成人免费在线视频观看 | 一区二区视频网站 | 香蕉免费 | 99热最新精品 | 五月天亚洲综合小说网 | 久久久久久久久久久网站 | 久久久久免费精品国产小说色大师 | 黄色精品久久 | 亚洲国内精品在线 | 国产精品女同一区二区三区久久夜 | 狠狠干网 | 91精品国自产在线观看欧美 | 人人精品 | 夜夜操天天干, | 99九九热只有国产精品 | 国产精美视频 | 国产无吗一区二区三区在线欢 | 99精品在线免费视频 | 字幕网资源站中文字幕 | 香蕉久久久久 | 波多野结衣精品视频 | 国内精品一区二区 | 少妇搡bbbb搡bbb搡aa | 国产精品1区2区 | 91精品免费 | 永久黄网站色视频免费观看w | 精品视频久久久久久 | 色狠狠狠| 日韩天天干 | 久久久久久美女 | 亚洲人人射| 亚洲少妇自拍 | 久久久久美女 | 91av亚洲 | 国产在线视频资源 | 国产人免费人成免费视频 | 亚洲免费成人 | 右手影院亚洲欧美 | 美女国产在线 | 国产精品久久久久永久免费观看 | 国产精品美女久久久久aⅴ 干干夜夜 | 日日草夜夜操 | 成人影视免费 | 国产小视频网站 | 精品黄色在线 | 99国产在线观看 | 欧美怡红院 | 丁香婷婷在线 | 亚洲精品乱码久久久久久蜜桃91 | 天天爱天天舔 | 国产二区视频在线观看 | 制服丝袜欧美 | 黄色一级片视频 | 一区二区三区四区精品视频 | 亚洲欧美婷婷六月色综合 | 黄a网 | 最新av网址在线 | 婷婷色社区 | 草久久精品 | 欧美一级片免费在线观看 | 在线观看一区二区视频 | 亚洲激情 欧美激情 | 成人毛片100免费观看 | 99精品在线播放 | 免费观看久久久 | 人人射人人爱 | 激情五月五月婷婷 | 日韩电影久久久 | 精品美女久久 | 久久久久久久久久电影 | 亚洲激情综合网 | 久久久在线观看 | 久久精品五月 | 午夜久久久精品 | 欧美日韩视频在线一区 | 精品久久久久久久久久久久 | 亚洲精品五月天 | 美女性爽视频国产免费app | 激情电影影院 | www.夜夜| av福利在线 | 久久av一区二区三区亚洲 | 亚洲精品色视频 | 免费在线观看黄色网 | 婷婷日| 国产成人精品一二三区 | 久久久久久久久久久高潮一区二区 | 国产精品69久久久久 | 91精品伦理| 久久99久久99精品中文字幕 | 97碰在线视频 | 中文字幕一区二区三区久久蜜桃 | 国产高清视频免费 | 99久热在线精品 | 欧美一级片免费在线观看 | 免费男女羞羞的视频网站中文字幕 | av一级片网站 | 国产成人a v电影 | 日韩免费区 | 色婷婷婷 | 中文字幕二区 | 三级av在线 | 中文字幕视频 | 久久久国产精品视频 | 国产视频日韩视频欧美视频 | 波多野结衣精品视频 | 91精品系列| 亚洲国产午夜精品 | 97国产超碰| 日韩欧美高清在线观看 | 一区二区三区免费在线 | 中中文字幕av在线 | 亚洲视频六区 | 麻豆成人小视频 | 日本精品一区二区 | 日本久久中文字幕 | 在线亚洲观看 | 中文在线免费视频 | 国产激情电影综合在线看 | 免费观看的黄色片 | 国产剧情一区二区在线观看 | 狠狠狠色丁香综合久久天下网 | 国产精品欧美久久久久无广告 | 国产成人免费观看久久久 | 人人爽人人舔 | 日韩二三区| 中文在线字幕免费观 | 婷婷深爱网 | 黄色三级在线看 | 成人国产网址 | 亚洲日韩精品欧美一区二区 | 在线a视频免费观看 | 成年美女黄网站色大片免费看 | 成人作爱视频 | 99视频在线免费播放 | 日韩网站在线播放 | 日本精品久久久一区二区三区 | 国产+日韩欧美 | 国产精品尤物 | 国产又黄又硬又爽 | 日本护士三级少妇三级999 | 婷婷中文字幕在线观看 | 国产精品免费观看网站 | 夜夜高潮夜夜爽国产伦精品 | 日韩av电影免费在线观看 | 夜夜夜夜夜夜操 | 国产三级国产精品国产专区50 | 亚洲精品1234区 | 久久久www成人免费精品 | 在线观看av中文字幕 | 中文字幕视频免费观看 | 麻豆视频免费在线播放 | 三级av免费观看 | 中文字幕三区 | 色综合久久久 | 视频一区在线播放 | 免费网站在线观看人 | 国产精品一区二 | 黄色小说视频在线 | 欧美日韩性视频在线 | 综合网五月天 | 色婷丁香 | 亚洲资源网 | 精品一区中文字幕 | 国产精品久久艹 | 98超碰在线| 国产精品毛片久久久久久久 | 97超碰福利久久精品 | 99性视频 | 91精品办公室少妇高潮对白 | 色www免费视频| 亚洲a成人v| 啪啪精品 | 国产女教师精品久久av | 成人在线免费看视频 | www色片| 欧美,日韩| 成年人视频在线免费播放 | 五月天中文字幕mv在线 | bbbb操bbbb| 成人小视频在线免费观看 | 天天射天天操天天色 | 中文字幕123区 | 欧美视频在线观看免费网址 | 久久精品国产免费观看 | 久久这里只有精品1 | 精品一区二区三区久久 | 99视频久久 | 99久久这里有精品 | 国产最顶级的黄色片在线免费观看 | 久久精选| 白丝av免费观看 | 国产精品一区二区av麻豆 | 久久久人 | 91亚洲网站 | 国产精品久久久久久久毛片 | 亚洲精品视频在线观看视频 | 欧美一级久久久久 | 日韩免费福利 | 亚洲国产精久久久久久久 | 91在线视频在线 | 国产精品女人久久久 | 人人爽人人av | 国产精品视频地址 |