MDSA線(xiàn)下公開(kāi)課帶你解密高性能APP開(kāi)發(fā)
原創(chuàng)隨著人們對(duì)移動(dòng)互聯(lián)網(wǎng)需求的碎片化與內(nèi)容的個(gè)性化劇增,APP已經(jīng)滲透到更多人的生活當(dāng)中。如何快速開(kāi)發(fā)出一款高性能是每個(gè)移動(dòng)開(kāi)發(fā)者不可回避的問(wèn)題,也是一項(xiàng)必備的技能。如今云計(jì)算應(yīng)用的落地凸顯出了APP的安全性、依賴(lài)性、穩(wěn)定性等重要問(wèn)題,導(dǎo)致從底層的開(kāi)發(fā)平臺(tái)到各種工具、SDK、API、組件、平臺(tái)層出不窮,開(kāi)發(fā)者面臨多種選擇性困擾。51CTO通過(guò)自身的影響力以及線(xiàn)上線(xiàn)下資源優(yōu)勢(shì),在2014年11月21日,在2014 WOT全球軟件技術(shù)峰會(huì)•深圳站上宣布了移動(dòng)開(kāi)發(fā)者服務(wù)聯(lián)盟(MDSA)成立,通過(guò)對(duì)成熟的第三方產(chǎn)品技術(shù)的聚合為移動(dòng)開(kāi)發(fā)者提供整個(gè)開(kāi)發(fā)生命周期服務(wù)。而51CTO線(xiàn)下公開(kāi)課則是在線(xiàn)下為廣大的移動(dòng)開(kāi)發(fā)者提供了一個(gè)與行業(yè)內(nèi)技術(shù)大牛面對(duì)面交流的機(jī)會(huì),解決您在移動(dòng)開(kāi)發(fā)中遇到的難題。
在2014年1月17日舉辦的***期移動(dòng)開(kāi)發(fā)者聯(lián)盟線(xiàn)下公開(kāi)課上,51CTO有幸請(qǐng)到了聽(tīng)云移動(dòng)研發(fā)總監(jiān)秦杰,百度移動(dòng)云質(zhì)量部經(jīng)理張濤以及云測(cè)技術(shù)副總裁尹春鵬,為大家?guī)?lái)一場(chǎng)移動(dòng)開(kāi)發(fā)的饕餮盛宴。
***場(chǎng)由聽(tīng)云移動(dòng)研發(fā)總監(jiān)秦杰老師給大家?guī)?lái)《打造高性能移動(dòng)應(yīng)用的黃金法則》的演講,秦杰老師首先指出了大部分技術(shù)人員在A(yíng)PP性能監(jiān)控中遇到的與移動(dòng)應(yīng)用性能提升相關(guān)的代碼問(wèn)題,以此為鋪墊,接下來(lái)對(duì)幫助開(kāi)發(fā)者打造高性能的移動(dòng)應(yīng)用做了更深入的分析。
秦杰老師認(rèn)為,在大多數(shù)的情況下,能夠影響移動(dòng)應(yīng)用性能的罪魁禍?zhǔn)追謩e為,混合應(yīng)用性能優(yōu)化技術(shù)、Web應(yīng)用性能優(yōu)化技術(shù)、Native應(yīng)用性能優(yōu)化技術(shù)、移動(dòng)應(yīng)用性能監(jiān)測(cè)技術(shù)與指標(biāo)。因此,通過(guò)這五部分內(nèi)容,秦杰再次分析了在各個(gè)階段應(yīng)該如何去操作才能更好的把性能做到***。
下面,從秦杰老師的PPT中,我們明顯能夠看到之前所指的影響移動(dòng)應(yīng)用性能罪魁禍?zhǔn)椎?0個(gè)問(wèn)題:
接著還分析了目前三種APP的模式的APP優(yōu)化技術(shù):
混合應(yīng)用性能的技術(shù)優(yōu)化
Web APP的應(yīng)用性能優(yōu)化
秦杰老師還提到,國(guó)內(nèi)接近百分之七十的APP沒(méi)有在上線(xiàn)之前進(jìn)行性能檢測(cè),甚至在上線(xiàn)以后也沒(méi)有。他認(rèn)為,這對(duì)于開(kāi)發(fā)者來(lái)說(shuō)是一種非常不好的情況。對(duì)于中小公司來(lái)說(shuō),花了很大的精力來(lái)開(kāi)發(fā)一款A(yù)PP,但是因?yàn)楸旧淼男阅軉?wèn)題而造成用戶(hù)流失,是一件非常可惜的事情。***還詳細(xì)分析了移動(dòng)APP性能檢測(cè)的方法—慢交互追蹤,對(duì)其中的交互指標(biāo)、網(wǎng)絡(luò)指標(biāo)、錯(cuò)誤追蹤、Crashlog追蹤等內(nèi)容。
第二節(jié)課是由自百度云QA部經(jīng)理張濤老師為大家?guī)?lái)《移動(dòng)應(yīng)用測(cè)試—標(biāo)準(zhǔn)先行,平臺(tái)助力》的演講。
張濤老師一開(kāi)始就提出,現(xiàn)在許多APP的性能測(cè)試在各種因素的影響下下無(wú)法得到一個(gè)非常精確的精確的結(jié)果。在百度內(nèi)部通過(guò)對(duì)上百款以及許多測(cè)試的結(jié)果,梳理出來(lái)一份通用的APP測(cè)試標(biāo)準(zhǔn)。他認(rèn)為,一些小團(tuán)隊(duì)在開(kāi)發(fā)測(cè)試階段對(duì)穩(wěn)定性、兼容性、或者線(xiàn)上監(jiān)控的環(huán)節(jié)無(wú)法花太多精掌控。
張濤老師認(rèn)為崩潰率不能超過(guò)百分之零點(diǎn)一,在兼容性方面因?yàn)锳ndroid的各個(gè)版本,以及不同機(jī)型、不同地域之間差異較大所以兼容性是Android性能的的重災(zāi)區(qū)。
緊接著為大家列舉Android開(kāi)源測(cè)試工具,圖中藍(lán)色的是測(cè)試相關(guān)工具,最常用的是MonkeyRunner、UIAutomator。綠色的是代碼檢查工具、橘色是覆蓋率檢查工具、灰色是CI相關(guān)工具、紅色是發(fā)布相關(guān)的工具。這些工具都可以在網(wǎng)上找到相關(guān)資料去了解。張濤老師還為大家推薦了APPium這款跨平臺(tái)的測(cè)試工具。
百度內(nèi)部主要用MTC平臺(tái)來(lái)進(jìn)行測(cè)試,其中分析了MTC所提供的云測(cè)試、云眾測(cè)服務(wù),包括深度性能測(cè)試、全面兼容測(cè)試、深度遍歷測(cè)試這些方法,從AndroidAPP和WEBapp的性能和云調(diào)試的能力去如何做好相應(yīng)的測(cè)試階段。他認(rèn)為,每次團(tuán)隊(duì)發(fā)布APP除了進(jìn)行云測(cè)之外,還要有一個(gè)內(nèi)測(cè)、灰度發(fā)布、之后再邀請(qǐng)注冊(cè)用戶(hù)做一個(gè)測(cè)試***才會(huì)發(fā)布一個(gè)版本。在每一個(gè)環(huán)節(jié)都會(huì)發(fā)現(xiàn)問(wèn)題,及時(shí)修正保證一個(gè)高品質(zhì)的應(yīng)用上線(xiàn)。
張濤老師還舉了一個(gè)FaceBook的工程師的例子、他們的APP在非洲加載慢而且經(jīng)常崩潰。他們針對(duì)各種機(jī)型設(shè)計(jì)不同的功能和版本,高端機(jī)型的功能會(huì)比較全,低端機(jī)就比較簡(jiǎn)單。而且可以檢驗(yàn)到功能點(diǎn)的使用情況,看用戶(hù)更喜歡哪些功能。而圖片方面我們通常使用JPG但是這種格式在非洲就顯得比較大所以他們用了一種叫webP格式的圖片。這種圖片的效果與JPG差不多,但是尺寸卻要小百分之三十到百分之五十。在不同的機(jī)型上加載的圖片大小也是不一樣的。對(duì)于啟動(dòng)慢的問(wèn)題,在A(yíng)PP啟動(dòng)的時(shí)候只啟動(dòng)一些重要的服務(wù),這樣減少了加載時(shí)間。
***出場(chǎng)的是來(lái)自云測(cè)的技術(shù)副總裁尹春鵬老師,演講題目是《移動(dòng)互聯(lián)網(wǎng)時(shí)代的測(cè)試那點(diǎn)事》,在演講的一開(kāi)始尹春鵬老師就提出了一個(gè)測(cè)試人員比較關(guān)注的問(wèn)題:測(cè)試時(shí)間短、人員少、內(nèi)容多怎么辦?
尹春鵬老師認(rèn)為,在產(chǎn)品上線(xiàn)后,質(zhì)量改進(jìn)工作這時(shí)候才剛剛開(kāi)始。為什么這么說(shuō)呢?尹老師從三個(gè)方面給APP測(cè)試人員分析:
1,代碼再***,測(cè)試再充分,真實(shí)用戶(hù)依然會(huì)碰到各種崩潰。
2,1%的用戶(hù)發(fā)現(xiàn)問(wèn)題會(huì)聯(lián)系到開(kāi)發(fā)者。
3,用戶(hù)反饋的問(wèn)題,只有5%能夠精確定位。
Testin在2014年推出崩潰大師服務(wù),通過(guò)SDK加入到程序后,他們會(huì)把里面的堆棧信息,系統(tǒng)日志、以及一些有問(wèn)題的信息收集起來(lái)、然后分析排查,包括崩潰的趨勢(shì)都會(huì)分析出來(lái)。通過(guò)收集和分析用戶(hù)手機(jī)上發(fā)生的閃退和異常,及時(shí)的發(fā)現(xiàn)問(wèn)題,代碼級(jí)的錯(cuò)誤定位,詳盡的信息分析。
崩潰大師支持的SDK覆蓋面非常廣,其中包含了Android Java、Android NDK、iOS Ojbc、iOS Objc/C++混編、Cocos2d-x Lua/JS、Unity3d C#等平臺(tái)。
除了手機(jī)APP以外Test in在游戲引擎上也做了一些工作。例如在Cocos2d-x引擎上或者使用lua或者JS來(lái)寫(xiě)遇到的更多的問(wèn)題是腳本報(bào)錯(cuò),雖然引擎沒(méi)報(bào)錯(cuò),但是已經(jīng)玩不下去了,因此Testin做了一個(gè)插件來(lái)應(yīng)對(duì)這種現(xiàn)象。
尹春鵬老師說(shuō):在游戲崩潰的時(shí)候代碼堆棧是最有用的東西。我們將代碼堆棧實(shí)現(xiàn)了一個(gè)符號(hào)化的功能。可能代碼的可讀性非常差的,因?yàn)樗械膽?yīng)用在發(fā)布之初會(huì)對(duì)java代碼做一個(gè)混淆。但是收到的堆棧也是這種混淆過(guò)的代碼,我們可以將這個(gè)混淆化的代碼還原回去。這樣可以方便開(kāi)發(fā)者更好的解決遇到的問(wèn)題。
移動(dòng)開(kāi)發(fā)者服務(wù)聯(lián)盟(MDSA)線(xiàn)下公開(kāi)課是51CTO在2014年開(kāi)始定期組織的移動(dòng)開(kāi)發(fā)技術(shù)人員線(xiàn)下交流活動(dòng),目前僅限北京地區(qū),2015年開(kāi)始周期為每月1次,每期關(guān)注一個(gè)話(huà)題,范圍涉及運(yùn)維、開(kāi)發(fā)、安全、數(shù)據(jù)庫(kù)等多個(gè)移動(dòng)相關(guān)領(lǐng)域。