教你玩轉友盟應用性能監(jiān)控U-APM平臺

      網(wǎng)友投稿 1367 2025-04-01

      目錄


      前言

      正文

      一、U-APM 應用性能監(jiān)控平臺介紹

      1. 大核心優(yōu)勢

      2. U-APM 與其他產(chǎn)品功能對比

      二、集成友盟 SDK 步驟

      第一步、進入U-APM功能首頁

      第二步、填寫應用程序信息并注冊

      第三步、下載并集成基礎SDK

      第四步、初始化代碼

      第五步、觀察控制臺統(tǒng)計數(shù)據(jù)

      三、集成 SDK 過程中遇到的問題

      問題1.??錯誤: 程序包com.umeng.commonsdk不存在

      問題2. SDK集成好后,監(jiān)控平臺沒有看到相關的統(tǒng)計數(shù)據(jù)

      問題3. 報錯:Installation did not succeed. The application could not be installed: INSTALL_FAILED_CONFLICTING_PROVIDER

      四、實際問題定位與解決

      1. 崩潰實例分析

      2. 設置告警策略

      3. 其他功能

      結尾

      前言

      友盟推出了全新的應用性能監(jiān)控平臺 U-APM,U-APM 可以幫助我們深入了解應用的性能和穩(wěn)定性,幫助我們高效提升應用的質量。通過實時采集新版本上線后的崩潰信息,提供了多種輔助定位問題的關鍵信息及多維度分析報表,從而能夠快速發(fā)現(xiàn)問題、定位問題、解決問題。

      正文

      一、U-APM 應用性能監(jiān)控平臺介紹

      1. 大核心優(yōu)勢

      1)捕獲采集類型豐富,支持Java、Native、Swift、Objective-C、ANR、自定義異常的捕捉。

      2)快速定位錯誤根源,提供行為日志、詳細日志、內存快照、設備信息、自定義字段,幫您快速發(fā)現(xiàn)問題原因,提升問題解決效率。

      3)智能告警專業(yè)服務,提供郵件、釘釘、飛書、企業(yè)微信告警觸達通道,多時間段、多指標組合式告警,助您7*24小時監(jiān)控應用情況。提供專業(yè)客服+技術支持,豐富用戶課程,線下沙龍等,助您快速上手。

      4)主流熱門機型,隨時隨地獲取海量Android和iOS云端真機, 穩(wěn)定不掉線,操作流暢無延遲,省卻百萬真機購入費用,保障App質量。

      2. U-APM 與其他產(chǎn)品功能對比

      功能項

      U-APM

      其他產(chǎn)品

      數(shù)據(jù)最長查詢時間

      90天

      60天

      崩潰捕獲

      支持

      支持

      ANR

      支持

      支持

      自定義異常

      支持

      支持

      卡頓分析

      Android &iOS雙端全采

      僅支持Android

      啟動分析

      首次\冷\熱啟動,慢啟動設備查詢、啟動崩潰分析

      不支持

      內存分析

      支持

      不支持

      網(wǎng)絡分析

      即將上線

      不支持

      頁面分析

      即將上線

      不支持

      錯誤/異常分布

      教你玩轉友盟應用性能監(jiān)控U-APM平臺

      系統(tǒng)、設備、版本、地域、運營商、渠道、使用時長、頁面

      系統(tǒng)、設備、版本

      告警觸達方式

      釘釘、飛書、企業(yè)微信、郵箱

      郵箱

      告警類型

      Java崩潰、Native崩潰、ANR、自定義異常、C#錯誤、Lua錯誤、卡頓、OOM異常

      崩潰

      支持單一錯誤告警

      支持

      不支持

      告警觸發(fā)條件

      指標比值支持且/或設置,時間、版本可靈活交叉設定

      固定指標固定條件

      云真機

      支持

      不支持

      二、集成友盟 SDK 步驟

      如果想要集成友盟的SDK也是需要一定操作步驟的,在同類產(chǎn)品中,過程不算法復雜,但也不是很簡單。至于如何更加便捷,是不是可以考慮把填寫應用信息的步驟省略掉?好了,這個問題留給咱們產(chǎn)品同學吧。接下來,我們開始詳細介紹。

      第一步、進入U-APM功能首頁

      U-APM功能體驗鏈接地址:https://at.umtrack.com/q0Dmaa

      HYPERLINK "https://apm.umeng.com/apps/list" https://apm.umeng.com/apps/list

      第二步、填寫應用程序信息并注冊

      進入創(chuàng)建應用界面,首先填寫應用名稱 AVPlayer,然后選擇平臺,這里需要注意的是友盟支持iPhone、iPad、Android三個移動終端平臺,我們選擇安卓,默認中文為應用語言。我們的應用程序是一款播放器,因此應用類型選擇影視觀看/本地播放。最后,填寫應用程序的基本描述信息,點擊“注冊應用”按鈕。

      完成注冊后,系統(tǒng)會給出應用程序的AppKey,為了保密,截圖中隱藏了部分內容,請見諒。

      第三步、下載并集成基礎SDK

      集成基礎 SDK 有兩種方式,分別是線上接入 SDK 和手動集成 SDK。目前,可能是考慮到新舊版本的兼容性問題,官方推薦新的 APP 使用線上接入 SDK 的方式。

      那我們就與時俱進,以新版 APP 集成SDK為例進行演示說明。

      1. 在工程 build.gradle 配置腳本中 buildscript 和 allprojects 段中添加 sdk maven 倉庫地址。

      配置方式如下:

      buildscript {

      repositories {

      google()

      jcenter()

      maven { url 'https://repo1.maven.org/maven2/' }

      }

      dependencies {

      classpath 'com.android.tools.build:gradle:3.4.0'

      // NOTE: Do not place your application dependencies here; they belong

      // in the individual module build.gradle files

      }

      }

      allprojects {

      repositories {

      google()

      jcenter()

      maven { url 'https://repo1.maven.org/maven2/' }

      }

      }

      2.?集成組件化各業(yè)務SDK

      在 maven 中可以靈活配置所需的 SDK,在工程 App 對應 build.gradle 配置腳本 dependencies 段中添加基礎組件庫和統(tǒng)計 SDK 庫的依賴。

      配置方法如下:

      // 友盟基礎組件庫(所有友盟業(yè)務SDK都依賴基礎組件庫)

      implementation "com.umeng.umsdk:common:9.4.2" // 版本號(必選))

      implementation "com.umeng.umsdk:asms:1.4.1" // asms包依賴(必選)

      implementation "com.umeng.umsdk:apm:1.4.2" // U-APM產(chǎn)品包依賴(必選)

      代碼實例:

      3. 功能依賴庫介紹

      當然,也可以根據(jù)應用程序 APP 的實際需要添加其他功能的依賴庫,依賴庫的種類非常多,比如:

      1)友盟基礎組件庫(所有友盟業(yè)務SDK都依賴基礎組件庫)

      業(yè)務

      組件

      基礎組件

      com.umeng.umsdk:common:x.x.x(必選)

      基礎組件

      com.umeng.umsdk:asms:x.x.x(必選)

      2)友盟統(tǒng)計SDK依賴坐標

      業(yè)務

      組件

      友盟統(tǒng)計SDK

      com.umeng.umsdk:abtest:x.x.x //ABTest模塊依賴

      友盟統(tǒng)計SDK

      com.umeng.umsdk:game:x.x.x //游戲統(tǒng)計依賴

      3)應用性能監(jiān)控SDK依賴坐標庫

      業(yè)務

      組件

      基礎組件(必選)

      com.umeng.umsdk:common:x.x.x

      asms包依賴

      com.umeng.umsdk:asms:x.x.x

      應用性能監(jiān)控包(必選)

      com.umeng.umsdk:apm:x.x.x

      游戲統(tǒng)計SDK依賴(可選)

      com.umeng.umsdk:game:x.x.x

      4)友盟分享SDK核心庫

      業(yè)務

      組件

      友盟分享SDK核心庫(使用U-Share必選)

      com.umeng.umsdk:share-core:x.x.x

      友盟分享面板核心庫(使用U-Share必選)

      com.umeng.umsdk:share-board:x.x.x

      5)支持gradle在線依賴的友盟分享模塊

      業(yè)務

      組件

      QQ分享模塊

      com.umeng.umsdk:share-qq:x.x.x

      微信分享模塊

      com.umeng.umsdk:share-wx:x.x.x

      新浪微博分享模塊

      com.umeng.umsdk:share-sina:x.x.x

      支付寶分享模塊

      com.umeng.umsdk:share-alipay:x.x.x

      釘釘分享模塊

      com.umeng.umsdk:share-dingding:x.x.x

      6)友盟推送SDK依賴坐標

      業(yè)務

      組件

      PushSDK核心庫

      com.umeng.umsdk:push:x.x.x

      PushSDK必須依賴utdid庫,所以需要加入對應依賴

      com.umeng.umsdk:utdid:x.x.x

      httpdns支持庫,必須添加

      com.umeng.umsdk:alicloud-httpdns:x.x.x

      httpdns支持庫,必須添加

      com.umeng.umsdk:alicloud-utils:x.x.x

      httpdns支持庫,必須添加

      com.umeng.umsdk:alicloud_beacon:x.x.x

      消息推送核心庫,必須添加

      com.umeng.umsdk:agoo-accs:x.x.x

      消息推送網(wǎng)絡核心庫,必須添加

      com.umeng.umsdk:agoo_networksdk:x.x.x

      消息推送日志核心庫,必須添加

      com.umeng.umsdk:agoo_tlog:x.x.x

      消息推送網(wǎng)絡核心庫,必須添加

      com.umeng.umsdk:agoo_tnet4android:x.x.x

      7)廠商推送依賴坐標(單一廠商通道下相關組件必須全部集成,例:小米通道集成2個組件)

      業(yè)務

      組件

      小米-push

      com.umeng.umsdk:xiaomi-push:x.x.x

      小米-umengaccs

      com.umeng.umsdk:xiaomi-umengaccs:x.x.x

      華為-basetb

      com.umeng.umsdk:huawei-basetb:x.x.x

      華為-pushtb

      com.umeng.umsdk:huawei-pushtb:x.x.x

      華為-umengaccs

      com.umeng.umsdk:huawei-umengaccs:x.x.x

      魅族-push

      com.umeng.umsdk:meizu-push:x.x.x

      魅族-umengaccs

      com.umeng.umsdk:meizu-umengaccs:x.x.x

      OPPO-push

      com.umeng.umsdk:oppo-push:x.x.x

      OPPO-umengaccs

      com.umeng.umsdk:oppo-umengaccs:x.x.x

      vivo-push

      com.umeng.umsdk:vivo-push:x.x.x

      vivo-umengaccs

      com.umeng.umsdk:vivo-umengaccs:x.x.x

      第四步、初始化代碼

      統(tǒng)一對各個業(yè)務進行初始化接口,總共分三點,下面分別介紹。

      1)隱私合規(guī)中加入友盟+SDK合規(guī)聲明

      https://developer.umeng.com/docs/147377/detail/213789。這一點是非常必要的,最近審核非常嚴格,特別是移動端APP。

      2)在Applicaiton.onCreate函數(shù)中調用預初始化函數(shù)UMConfigure.preInit()

      敏感的小伙伴,在這里就立馬會提出一個疑問:調用友盟的這個方法會不會影響APP的移動速度?答案是多慮了。preInit() 作為預初始化函數(shù),耗時極少,不會影響App首次冷啟動的用戶體驗,不會采集設備信息,也不會向友盟后臺上報數(shù)據(jù)。

      友盟預初始化函數(shù)聲明如下:

      public static void preInit(Context context, String appkey, String channel)

      代碼截圖如下:

      3)客戶端在用戶同意隱私政策后,開始正式初始化友盟SDK

      調用初始化函數(shù)UMConfigure.init(),友盟初始化函數(shù)聲明如下:

      UMConfigure.init(Context context, String appkey, String channel, int deviceType, String pushSecret)

      代碼截圖如下:

      第五步、觀察控制臺統(tǒng)計數(shù)據(jù)

      完成設置后,我們返回到首頁,就可以查看相應的APP應用程序的統(tǒng)計信息了,包括異常次數(shù)、影響用戶數(shù)、告警次數(shù)、云真機剩余分鐘數(shù)等。

      三、集成 SDK 過程中遇到的問題

      問題1.??錯誤: 程序包com.umeng.commonsdk不存在

      個人感覺,這是最常見的一種錯誤,但是官方的文檔中居然沒有相關的說明。官方常見問題列表地址:https://developer.umeng.com/docs/119267/detail/181401 ,感覺其中很多內容都是官方自己總結的,不夠接地氣,比如這個錯誤就不知道應該歸到哪一類。官方是不是可以考慮增加一個社區(qū)模塊,方便開發(fā)者之間交流。具體位置可以參考下圖:

      最終,折騰了好久,也沒有通過在線模式集成友盟 SDK,后來還是換成了本地依賴模式解決這個問題。

      問題2. SDK集成好后,監(jiān)控平臺沒有看到相關的統(tǒng)計數(shù)據(jù)

      這個問題是我疏忽導致的,我以為在調用UMConfigure.preInit()方法的時候傳入AppKey就行了。而UMConfigure.init()方法沒有同步更新,因此導致了這個問題。我也由此斷定,真正起到關聯(lián)作用的方法是UMConfigure.init()。當然也期待官方更合理的解釋,因為我的理解可能有誤。

      問題3. 報錯:Installation did not succeed. The application could not be installed: INSTALL_FAILED_CONFLICTING_PROVIDER

      集成友盟 SDK 后,安裝 APP 時報了這個錯誤。后來,把之前老的 APP 從手機端卸載,再重新安裝,問題解決。這樣看來,和集成友盟 SDK 的關系不大,但是這個問題就是這么神奇。

      四、實際問題定位與解決

      我們完成友盟 SDK 集成后,就可以通過后臺首頁發(fā)現(xiàn)對應的應用名稱集成狀態(tài)顯示“已集成”。同時,我們還可以查看應用程序的運行狀態(tài),比如異常次數(shù)和影響用戶數(shù)。

      接下來,我們根據(jù)具體的異常監(jiān)控結果進行分析。

      1. 崩潰實例分析

      通過后臺的“分析”頁簽,找到“崩潰分析”模塊,可以發(fā)現(xiàn)今天有一例崩潰錯誤。

      在當前頁面往下劃,我們可以看到相應的錯誤列表和錯誤分布。其中,錯誤列表包含了錯誤發(fā)生的摘要、ID、最近一次的發(fā)生時間、錯誤類型、版本范圍、錯誤次數(shù)、影響用戶數(shù)、處理狀態(tài)等,具體內容如下圖所示:

      錯誤分布包含了設備分布、系統(tǒng)分布、運營商分布、版本分布、頁面分布、時長分布、渠道分布、地域分布,具體內容如下圖所示:

      好了,接下來,我們具體分析一下這個錯誤。點擊錯誤列表中錯誤摘要的鏈接進入錯誤詳情,里邊有錯誤的具體明細,比如下圖所顯示的錯誤原因是數(shù)組越界:ArrayIndexOutOfBoundsException,具體的代碼位置在文件 UappActivity.java 的第 93 行。

      我們找到對應的代碼行數(shù)看一下代碼情況,具體截圖如下:

      哇哦,看到代碼再結合報錯提示,我們立馬知道了這行代碼寫的有問題,大小為 3 的數(shù)組,索引值最大為 2 ,不可能是 3,修改成 0、1、2,問題解決。

      重新編譯后安裝,再運行看一下效果,執(zhí)行相同的操作,崩潰不再發(fā)生。此時,我們就可以手動修改該崩潰的處理狀態(tài)了,比如下圖所示,將“未修復”修改為“已修復”,其中還包括另外兩個狀態(tài),分別是“處理中”、“已忽略”。

      2. 設置告警策略

      另外,我們還可以針對某種錯誤類型設置告警策略,比如上面的崩潰問題,如果我們不確定是否真正解決了。那么就可以點擊“告警”按鈕,進入告警策略設置頁面。

      在新建告警計劃頁面中,我們需要設置告警計劃名稱,一般使用錯誤名稱+錯誤ID的方式,但是注意不要超過20個字符。同時,還可以設置告警生效時間,默認實時通知,也可以自定義通知時間段,比如每周二的下午三點到四點。

      另外,還可以自定義告警觸發(fā)條件,一般都是錯誤發(fā)生次數(shù)大于 0 時就會生效。還可以指定生效的應用版本,比如我只想監(jiān)控 APP 應用最新的 3.0 版本,就從下拉列表中選擇對應的版本即可。通知方式可以選擇郵箱、釘釘、企業(yè)微信、飛書中的至少一種,常見的方式是前兩種。

      但是,在實際使用過程中,自己嘗試了兩個告警計劃,郵箱都沒有收到對應的通知。對于這個功能官方好像沒有版本限制,通知消息列表也是空的,非常奇怪,本來想把這個問題留給以后排查的。但是,后來不知過了多久,居然收到了郵件通知,看來延時還是挺大的。郵件截圖如下所示:

      3. 其他功能

      友盟應用性能監(jiān)控平臺 U-APM 除了上邊介紹的崩潰分析和告警通知功能外,還有ANR分析、自定義異常、卡頓分析、啟動分析、內存分析、網(wǎng)絡分析等功能模塊。

      1)ANR分析,ANR 是用戶在使用 Android APP 過程中出現(xiàn)彈框,提示應用無響應,計為一次ANR。穩(wěn)定性模塊可以捕獲發(fā)生在主進程和子進程中的ANR。通過對ANR發(fā)生次數(shù)的計算,為開發(fā)者展示了App在所選時間中的錯誤趨勢、錯誤分布和錯誤列表,可快速地分析出導致APP發(fā)生ANR的主要原因。

      注意事項:啟動監(jiān)控ANR功能,Android 需要集成Common 9.3.8及以上 + APM 1.1.0 及以上版本號。iOS 需要集成Common 7.2.8及以上 + APM 1.1.0 及以上版本號,升級后自動采集。

      2)自定義異常,開發(fā)人員可以自己定義某種異常類型,程序對異常進行了捕獲處理,為更好了解并監(jiān)控這類異常,開發(fā)人員也將這類異常上報到友盟+的錯誤分析服務中。不得不說這個功能應用場景還是非常多的,Bugly也有類似的功能。

      3)卡頓分析,當消息設定時長超出卡頓的定義閾值后會被記為卡頓,可以作為判斷應用性能的指標。解決卡頓問題在提升用戶體驗方面具有非常重要的意義,合理優(yōu)化卡頓指標在 APP 開發(fā)過程中是一件中長期的任務。

      注意事項:使用卡頓功能,Android需要集成Common 9.3.8及以上 + APM 1.2.0 及以上版本號。iOS 需要集成Common 7.2.8及以上 + APM 1.2.0 及以上版本號,升級后自動采集。

      4)啟動分析,包括啟動趨勢、慢啟動分析、啟動過崩潰分析。通過監(jiān)控 APP 應用啟動耗時的平均值、分位值、區(qū)間分布等數(shù)據(jù),以及啟動階段的性能分解數(shù)據(jù),分析慢啟動和啟動崩潰的原因。

      5)內存分析,包括 OOM 異常、內存占用。提供了 APP 在運行階段的內存溢出、內存占用情況及分布詳情,便于我們分析應用的健康狀況和問題定位。

      6)網(wǎng)絡分析, 通過收集 HTTP 請求、網(wǎng)絡錯誤、DNS解析等維度的數(shù)據(jù),分析當前應用的網(wǎng)絡狀況,有利于開發(fā)人員定位網(wǎng)絡相關的編碼問題,比如超時處理,斷網(wǎng)重連等常見問題。

      結尾

      通過本文的介紹,我們可以看出友盟應用性能監(jiān)控平臺 U-APM 的集成過程還是比較簡單的,另外,U-APM 平臺具備豐富的數(shù)據(jù)收集和功能分析能力,而且在具體的功能顆粒度劃分方面做得也非常細。相比同類產(chǎn)品,比如Bugly、網(wǎng)易云捕等要強大很多。另外,在集成和使用過程中也遇到一些,并在文中有所體現(xiàn),希望友盟團隊不斷完善 U-APM 平臺,為移動端開發(fā)的小伙們帶來新的福音。

      劉振,全棧工程師,前后就職于傳統(tǒng)廣電巨頭和音視頻互聯(lián)網(wǎng)公司,具有了豐富的音視頻直播和點播相關開發(fā)經(jīng)驗,對WebRTC、FFmpeg和Electron有非常深入的了解。在 CSDN 上推出了很多音視頻相關的技術專欄,累計產(chǎn)出了500余篇原創(chuàng)作品,榮獲了 CSDN 2020 年博客專家榮譽勛章和 CSDN 2020 年博客之星 TOP40 榮譽稱號。同時,作為華為云的云享專家,參加了很多社區(qū)活動并分享很多原創(chuàng)內容。

      社區(qū)筆名:liuzhen007(Data-Mining)

      Android API/SDK 應用性能管理 APM

      版權聲明:本文內容由網(wǎng)絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網(wǎng)絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內刪除侵權內容。

      上一篇:excel如何創(chuàng)建組(excel如何創(chuàng)建組并進行命名)
      下一篇:趨勢圖日期如何和表格內的日期一致(圖表的日期怎么設置)
      相關文章
      亚洲一级高清在线中文字幕| 亚洲韩国—中文字幕| 亚洲小视频在线播放| 国产成人亚洲综合无码精品| 亚洲午夜久久久久久久久电影网| 久久久久亚洲精品天堂久久久久久 | 日本亚洲免费无线码 | 亚洲第一页在线观看| 久久久亚洲AV波多野结衣| 亚洲第一精品福利| 亚洲AV日韩AV高潮无码专区| 亚洲AV无码成人网站久久精品大| 国产l精品国产亚洲区在线观看| 亚洲精品高清无码视频| 国产亚洲一区二区在线观看| 国产亚洲精品xxx| 亚洲AV无码久久寂寞少妇| 亚洲va无码va在线va天堂| 久久亚洲国产成人亚| 亚洲欧洲成人精品香蕉网| 亚洲码国产精品高潮在线| 亚洲AV无码一区东京热| 久久久无码精品亚洲日韩蜜臀浪潮| 亚洲人成网www| 亚洲第一成年人网站| 亚洲人成人77777网站不卡| 亚洲中文字幕久在线| 99久久国产亚洲综合精品| 亚洲日韩一区精品射精| 亚洲日韩乱码中文字幕| 国产亚洲美女精品久久| 亚洲一区二区三区在线播放 | 亚洲一级特黄无码片| 亚洲人成中文字幕在线观看| 亚洲成A人片在线观看WWW| 亚洲国产人成网站在线电影动漫| 久久亚洲精品成人av无码网站| 亚洲精品美女视频| 亚洲综合色婷婷在线观看| jjzz亚洲亚洲女人| 亚洲线精品一区二区三区|