性能和穩(wěn)定性與在Google Play上獲得積極評(píng)價(jià)有直接關(guān)系。修復(fù)應(yīng)用中存在的問(wèn)題和防止應(yīng)用出現(xiàn)不良行為,可以提升用戶體驗(yàn)、提高評(píng)分并增加保留應(yīng)用的安裝人數(shù)。此外,縮減應(yīng)用的大小可以提高安裝率并減少卸載次數(shù)。
這樣做的好處
Android Vitals可顯示有關(guān)穩(wěn)定性、耗電量、卡頓、啟動(dòng)時(shí)間和權(quán)限遭拒情況的應(yīng)用性能指標(biāo)。通過(guò)跟蹤這些指標(biāo),您可以找出并修正會(huì)直接影響用戶體驗(yàn)的不良應(yīng)用行為。您可以根據(jù)Android Vitals核心指標(biāo)的突然變化來(lái)了解有哪些異常情況需要加以調(diào)查,并借助各種基準(zhǔn)數(shù)據(jù)將您的應(yīng)用與同類或其他應(yīng)用進(jìn)行比較。指標(biāo)值較高的應(yīng)用更容易獲得推廣,其在Google Play商店搜索結(jié)果中的排名也會(huì)升高。此類應(yīng)用也更可能被列入Google Play的“新上線+最近更新”和“編輯精選”合集,獲得Google Play年度獎(jiǎng)提名的可能性也更大。
關(guān)鍵指標(biāo)
穩(wěn)定性|ANR發(fā)生率:在活躍日遇到至少1次應(yīng)用無(wú)響應(yīng)(ANR)事件的用戶所占的百分比。ANR通常是由于界面線程和后臺(tái)進(jìn)程(廣播接收器)出現(xiàn)死鎖情況或速度緩慢所導(dǎo)致。
穩(wěn)定性|崩潰率:在活躍日遇到至少1次崩潰問(wèn)題的用戶所占的百分比。崩潰問(wèn)題通常是由于未處理的異常情況、資源耗盡、失敗的斷言或其他非預(yù)期的狀態(tài)所導(dǎo)致。
呈現(xiàn)時(shí)間|16ms(60fps):存在以下情況的活躍日所占的百分比-超過(guò)50%的幀呈現(xiàn)時(shí)間大于16毫秒。用戶與應(yīng)用的互動(dòng)速度應(yīng)該保持在60幀/秒,且不會(huì)出現(xiàn)幀丟失或幀延遲的情況。
呈現(xiàn)時(shí)間|700ms:一天內(nèi)遇到1000幀中有1個(gè)以上幀的呈現(xiàn)時(shí)間超過(guò)700毫秒的用戶所占的百分比。如上所述,呈現(xiàn)時(shí)間較長(zhǎng)會(huì)使應(yīng)用運(yùn)行不夠順暢,導(dǎo)致用戶體驗(yàn)變差。如果呈現(xiàn)幀需要700毫秒或更長(zhǎng)時(shí)間,對(duì)于用戶來(lái)說(shuō),您的應(yīng)用很有可能看起來(lái)像是停滯不動(dòng)了。
電池|部分喚醒鎖定:在指定日期遇到至少1次長(zhǎng)達(dá)1小時(shí)以上的喚醒鎖定的用戶所占的百分比??ㄔ诓糠謫拘焰i定狀態(tài)時(shí),空閑設(shè)備無(wú)法進(jìn)入休眠狀態(tài)及節(jié)電模式。
電池|喚醒次數(shù):充滿電后,設(shè)備每小時(shí)被喚醒60次以上的用戶所占的百分比。因鬧鐘在應(yīng)用生命周期之外按時(shí)執(zhí)行的操作而頻繁喚醒設(shè)備,會(huì)阻止空閑設(shè)備進(jìn)入休眠狀態(tài)。
啟動(dòng)時(shí)間:用戶冷啟動(dòng)或熱啟動(dòng)時(shí)間過(guò)長(zhǎng)的會(huì)話所占的百分比。啟動(dòng)緩慢可能是由一系列問(wèn)題導(dǎo)致的,但通常意味著在初始化應(yīng)用時(shí)執(zhí)行了繁重的工作負(fù)載或復(fù)雜的邏輯。
權(quán)限遭拒:用戶拒絕權(quán)限請(qǐng)求或選擇不再詢問(wèn)的權(quán)限申請(qǐng)日所占的百分比。權(quán)限遭拒可能表明用戶不清楚請(qǐng)求權(quán)限的原因或認(rèn)為該請(qǐng)求不必要或不合理。
應(yīng)用大?。焊櫮鷳?yīng)用的下載大小和安裝到設(shè)備上的大小,然后將這些指標(biāo)與同類應(yīng)用進(jìn)行比較。另外,請(qǐng)參閱可用存儲(chǔ)空間低的設(shè)備的活躍用戶和卸載量指標(biāo)??筛鶕?jù)對(duì)您的應(yīng)用版本所做的分析,了解有關(guān)如何縮減應(yīng)用大小的優(yōu)化建議。
最佳做法
考量不良行為并予以根除:在開(kāi)發(fā)應(yīng)用的過(guò)程中,考量應(yīng)用在不同環(huán)境中的行為方式。例如,如果您在功能完善的高端設(shè)備上測(cè)試應(yīng)用,則應(yīng)考量應(yīng)用在電源、內(nèi)存、帶寬以及CPU/GPU性能方面都很有限的低端設(shè)備上的會(huì)如何表現(xiàn)。在發(fā)布每個(gè)版本之前,請(qǐng)使用發(fā)布前測(cè)試報(bào)告在多種設(shè)備上測(cè)試您的應(yīng)用。
在發(fā)布新的應(yīng)用版本后查看Android Vitals:在您發(fā)布應(yīng)用后,Android Vitals會(huì)針對(duì)應(yīng)用在實(shí)際設(shè)備上的運(yùn)行狀況提供性能指標(biāo),以助您找出在特定設(shè)備和Android版本中出現(xiàn)的會(huì)影響用戶體驗(yàn)的問(wèn)題和不良行為。
找出存在問(wèn)題的設(shè)備:應(yīng)用可能只在某個(gè)設(shè)備或某些設(shè)備上出現(xiàn)不良行為。根據(jù)對(duì)用戶體驗(yàn)造成影響的嚴(yán)重程度以及受影響的設(shè)備和用戶數(shù)量,您可以在問(wèn)題得到修正之前,先選擇更新應(yīng)用的設(shè)備定位,將這些設(shè)備排除在外。
找出存在問(wèn)題的Android版本:應(yīng)用可能只在特定的Android版本上出現(xiàn)不良行為。對(duì)于用戶數(shù)量較少的Android的較低版本,請(qǐng)更新您的應(yīng)用以消除不良行為,或者在應(yīng)用的清單中將<uses-sdk>元素的android:minSdkVersion屬性更新至應(yīng)用不會(huì)出現(xiàn)任何不良行為的API級(jí)別。對(duì)于較新的Android版本,請(qǐng)一律通過(guò)更新應(yīng)用來(lái)修正不良行為,而不是通過(guò)設(shè)置<uses-sdk>元素的android:maxSdkVersion屬性將較新的Android版本用戶排除在外。
使用崩潰報(bào)告工具找出并跟蹤崩潰和ANR情況:使用崩潰報(bào)告工具(如Firebase崩潰報(bào)告或Crashlytics)以及Android Studio調(diào)試程序,盡可能找出并跟蹤導(dǎo)致崩潰和ANR的各種情況。
使用JobScheduling API避免喚醒鎖定和喚醒:使用JobScheduling API(如JobScheduler)靈活地安排后臺(tái)進(jìn)程和任務(wù)。這樣一來(lái),平臺(tái)能更好地管理空閑狀態(tài),從而延長(zhǎng)電池續(xù)航時(shí)間。
使用FrameMetrics API找出呈現(xiàn)速度緩慢的幀:使用FrameMetrics以很高的精細(xì)度衡量應(yīng)用在正式版設(shè)備中每次互動(dòng)的幀呈現(xiàn)時(shí)間。這樣您無(wú)需依賴通過(guò)USB連接的測(cè)試設(shè)備,即可找出在正式版設(shè)備上導(dǎo)致卡頓的特定互動(dòng)或事件。
遵循權(quán)限請(qǐng)求的最佳做法:在請(qǐng)求權(quán)限之前向用戶提供說(shuō)明,并確保用戶可在授予權(quán)限后立即獲得好處。幫助用戶撤消拒絕權(quán)限的操作,并確保用戶啟用正確設(shè)置以便您的應(yīng)用能夠運(yùn)行。
使用發(fā)布前測(cè)試報(bào)告在真實(shí)設(shè)備上測(cè)試您的應(yīng)用,從而在發(fā)布更新之前找出并解決問(wèn)題。
改用Android App Bundle,更高效地開(kāi)發(fā)和發(fā)布應(yīng)用,無(wú)需重構(gòu)代碼即可縮減應(yīng)用的大小。