• <source id="sqj45"><optgroup id="sqj45"></optgroup></source>
  • <rt id="sqj45"></rt>
    <rt id="sqj45"></rt><rt id="sqj45"></rt>
  • <source id="sqj45"><nav id="sqj45"></nav></source><rt id="sqj45"></rt><rt id="sqj45"></rt><tt id="sqj45"><noscript id="sqj45"></noscript></tt>
    專業 靠譜 的軟件外包伙伴

    您的位置:首頁 > 新聞動態 > 大型旅游APP開發定制發展解決方案分析!

    大型旅游APP開發定制發展解決方案分析!

    2017-08-16 14:01:24

    本次分享主要介紹去哪兒的客戶端團隊在大規模多團隊多APP的情景下,如何快速簡單可靠地維護自己的產品。

    通過實際場景重現,介紹用戶行為跟蹤和網絡數據交互的監控的相關內容,解決目前業界難以處理的方案如無埋點統計的收集與提取,網絡監控的Hook方案及無線遠端測試等。

    通過介紹去哪兒在解決產品和用戶問題的過程,介紹相關系統的使用和技術內幕,啟發大家在多前后端、跨團隊的場景如何更快的開發和維護APP,迅速定位解決問題。

     

    APP閃退

    很多普通用戶在經歷APP閃退的時候,往往無法準確表述出APP出現的問題,最多只能告知我們機型或用戶賬號,以至于我們能了解到的信息非常少。

    故障處理辦法

    我們最需要知道的信息是用戶閃退的時間、閃退的具體頁面和閃退的原因。但這些信息用戶一般都不能提供,所以這時我們就只能到各個系統里查詢日志、拉故障處理群,去“猜”故障的原因。

    角色變化

    因為在業務過程中整個工作團隊發生了很大的變化。最初遇到問題,幾個人討論一下基本就能解決;隨著業務發展日漸龐大,從單個團隊分成了多個團隊;再到后來,不同開發方式的出現導致每個人的職責和對APP的了解都非常片面,所以大家不能一目了然地知道問題出在哪兒。

    頁面刷不出來

    關于頁面刷不出來的問題,我們目前最新的做法是進行用戶的流程監控。

    去哪兒網快速App開發及問題解決平臺實踐

    去哪兒網快速App開發及問題解決平臺實踐

    從圖中可以看見用戶具體進行了什么操作、在什么時間做了什么事情。

    我們稱之為“用戶細查”。

    每個頁面還能打開它具體請求的情況,看到請求耗時、時間線,甚至可以打開每個請求看到接口請求的后臺系統經過哪些環節。

    現在可以通過用戶細查分析問題出現在哪個環節上,只需把對應環節的相關負責人召集到一起就能解決問題,不會像傳統辦法那樣耗時很長,還消耗大量人力。

    這里涉及到的技術細節就有以下幾種:

    如何知道用戶的交互行為和渲染變化;

    如何知道用戶的網絡請求和時間線;

    如何能還原用戶的場景;

    怎樣才能不影響業務代碼的開發。

    涉及到的系統——“筋斗云”

    QAV是交互統計,QACR是異常監控,QTrace是用于監控網絡請求的整個流向。

    去哪兒網快速App開發及問題解決平臺實踐

    交互行為和渲染變化

    先從交互行為說起,首先要看監控的事件類型。事件類型分為APP生命周期事件、頁面切換事件和交互事件三種。

    定位控件在早年是用view-id的方式去做的,但這個方式非常的不靠譜,所以在那個年代經常會用手動埋點的方式進行操作。

    后來有了坐標的方式,其實也沒有比view-id好很多,尤其是在Andriod上,會因為各種機型不同、屏幕尺寸不一樣而不準確。

    在用了xpath一段時間后發現,它在Andriod上不夠穩定。體現在不同系統ROM里,它會對整個view數自行做一些廠商里定制的內容,甚至還有一些會自動增刪內容。

    所以我們在xpath基礎上做了一些改進,對xpath基礎的頁面和布局的定義采用了自定義格式去做。

    無論采取哪種方式,數據都會有變化,所以我們需要一個合并數據項。

    各個平臺xpath的樣式是不同的。

    去哪兒網快速App開發及問題解決平臺實踐

    在業務的開發過程中不能讓它手動埋點,所以要采取Hook的方式。

    去哪兒網快速App開發及問題解決平臺實踐

    Hook在不同平臺上有不同的方式。在IOS上可以用Runtime去做,而在Andriod上則要采用不一樣的方式。

    Andriod上其實也能用Runtime的方式做,但不是很好。因為它不是真正的運行期的Hook,它需要預插樁,對運行的效率會有影響。

    所以運行期Hook使用的是InstantRun,在構建期Hook使用的是JavaAgent。

    去哪兒網快速App開發及問題解決平臺實踐

    在IOS上注入代碼很簡單,在Andriod上就比較復雜了。

    去哪兒網快速App開發及問題解決平臺實踐

    在構建過程中,Hook出構建的腳本,把所有預埋點加入Dex再打包,打完包的時候代碼已經在真正輸出的代碼Dex里了。

    去哪兒網快速App開發及問題解決平臺實踐

    這里分為三部分,一部分是Agent,一個是Gradle插件,以及真正要修改插入內容的部分。

    插入內容部分就是網絡部分的監控以及用戶行為上的監控,這些相對于Hook來說是業務層,所以我們把它叫做Dex。

    Agent本身是用來做Hook。

    去哪兒網快速App開發及問題解決平臺實踐

    再來看一下我們都Hook了哪些內容。最基礎的網絡部分就是請求的時間、狀態,以及當前網絡是Wifi還是4G。

    注入幾個數據。

    網絡會根據不同的使用去注入不同的類型。因為一些歷史遺留問題或第三方問題,必須要采用到不同網絡請求的框架。

    在react-native里,會直接在react-native的框架層注入Hook的方案。

    將各項數據聚合

    如何并發串聯數據

    我們會有一個綁定用戶行為與網絡請求的id。每個用戶的交互行為都會生成一個id,下一次有網絡數據的時候會把這個id帶上去,這樣哪個交互行為觸發了用戶請求,就能把它們關聯在一起。

    Uuid用來做接口的調用棧的串聯。每經過一層都會加一個自己的標識,這樣就可以追蹤到整個網絡調用棧的情況。

    校正過的time排序是用來把前面所有的行為讓它以一個正確的順序排列在一起。

    去哪兒網快速App開發及問題解決平臺實踐

    所有用戶日志統一以客戶端本身的時間進行排序。

    日志上傳

    我們會把交互日志和網絡請求日志壓縮打包后再上傳。

    崩潰或卡頓等異常日志實時上傳。

    去哪兒網快速App開發及問題解決平臺實踐

    這一套系統開發出來是為了滿足開發、測試、發布、監控這一個完整流程來做的,可以保證用最少的人力做最多的事。

    冰山一角——綁定數據項

    綁定數據項就是給控件一個比較人性化的名字,可以由非工作人員來完成。綁定完之后可以在日志行為中看到用戶操作。

    這樣就極大減少了開發過程中對于統計類需求消耗的時間。也避免了網絡日志只有程序員看得懂的尷尬,可以讓它自主地進行操作。

    冰山一角——崩潰聚合

    我們發現外面主流做收集的廠商往往不能更完整地收集到所有需要的錯誤,我們是通過一整套的方式把它們收集在一起。

    去哪兒網快速App開發及問題解決平臺實踐

    總結

    我們是從數據、測試、發布、監控這幾個環節把所有事情打包在一起,提供給業務人員,給他們一個友善的開發環境。

     

    關于:中科研拓

    深圳市中科研拓科技有限公司專注提供軟件+硬件結合系統解決方案定制開發服務,其中包括:軟件外包、軟件開發、軟件定制、硬件開發、硬件定制、智能硬件開發、物聯網項目等開發外包服務,通過IT技術實現創造客戶和社會的價值,成為優秀的軟件公司,通過客戶需求導向、開放式創新、卓越運營管理等戰略的實施,全面打造公司的核心競爭力。優秀軟件外包公司、軟件開發公司,聯系電話400-0316-532,郵箱sales@zhongkerd.com,網址www.ruige-europe.com


      上一篇   [返回首頁] [打印] [返回上頁]   下一篇
    香蕉97超级碰碰碰免费公开
  • <source id="sqj45"><optgroup id="sqj45"></optgroup></source>
  • <rt id="sqj45"></rt>
    <rt id="sqj45"></rt><rt id="sqj45"></rt>
  • <source id="sqj45"><nav id="sqj45"></nav></source><rt id="sqj45"></rt><rt id="sqj45"></rt><tt id="sqj45"><noscript id="sqj45"></noscript></tt>