一種獲取應(yīng)用性能數(shù)據(jù)的方法、設(shè)備和系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種獲取應(yīng)用性能數(shù)據(jù)的方法、設(shè)備和系統(tǒng),所述方法包括:指示用戶終端基于預(yù)設(shè)服務(wù)(Service)、以及運(yùn)行(Runtime)庫(kù)執(zhí)行性能數(shù)據(jù)獲取應(yīng)用,從所執(zhí)行的應(yīng)用輸出的性能數(shù)據(jù)中過(guò)濾出待檢測(cè)應(yīng)用對(duì)應(yīng)的性能數(shù)據(jù),并將所過(guò)濾出的性能數(shù)據(jù)輸出至相應(yīng)的日志;以監(jiān)聽的方式獲取所述日志更新的性能數(shù)據(jù),將所述獲取的性能數(shù)據(jù)寫入指定的文件。通過(guò)本發(fā)明,能夠以應(yīng)用為粒度、安全簡(jiǎn)易地獲取應(yīng)用性能數(shù)據(jù)以及用戶實(shí)時(shí)操作的性能數(shù)據(jù),并方便在服務(wù)器側(cè)進(jìn)行性能數(shù)據(jù)分析。
【專利說(shuō)明】一種獲取應(yīng)用性能數(shù)據(jù)的方法、設(shè)備和系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及用戶終端的應(yīng)用性能數(shù)據(jù)的獲取技術(shù),尤其涉及一種獲取應(yīng)用性能數(shù)據(jù)的方法、設(shè)備和系統(tǒng)。
【背景技術(shù)】
[0002]用戶終端用戶經(jīng)常需要了解用戶終端的性能數(shù)據(jù)。
[0003]若采用向用戶終端發(fā)送預(yù)設(shè)殼(Shell)腳本,由用戶終端執(zhí)行Shell腳本,以調(diào)用相關(guān)工具周期性獲取用戶終端自身的性能數(shù)據(jù)的方案,由于相關(guān)工具的局限性,該方案只能獲取用戶終端整體的性能數(shù)據(jù),即全部應(yīng)用的中央處理器(CPU, Central ProcessingUnit)占用率、內(nèi)存使用情況、以及消耗的流量。
[0004]若采用在個(gè)人電腦(PC,Personal Computer)側(cè)給用戶終端發(fā)送Shell腳本,由用戶終端執(zhí)行性能數(shù)據(jù)獲取應(yīng)用來(lái)獲取應(yīng)用性能數(shù)據(jù)的方案,存在以下問(wèn)題:
[0005]I)該方案中需要在PC和用戶終端之間建立套接字(Socket)通信連接,并使用對(duì)應(yīng)不同平臺(tái)的調(diào)試工具例如安卓調(diào)試(ADB,Android DeBug)等工具給用戶終端發(fā)送Shell腳本,由于在調(diào)試方式下不支持長(zhǎng)時(shí)間的Socket通信連接,因此需要在獲取用戶終端性能數(shù)據(jù)時(shí)頻繁地對(duì)Socket進(jìn)行打開、讀寫以及關(guān)閉操作,容易造成Socket異常,在終止獲取應(yīng)用性能數(shù)據(jù)時(shí),需要使用強(qiáng)制的關(guān)閉指令例如adb-kill來(lái)結(jié)束操作,安全風(fēng)險(xiǎn)也較高;
[0006]2)通過(guò)執(zhí)行Shell腳本的方式獲取應(yīng)用性能數(shù)據(jù),通常需要在ADB方式中通過(guò)向用戶終端發(fā)送多個(gè)Shell指令的組合才能完成相應(yīng)的獲取應(yīng)用性能數(shù)據(jù)的操作,由于Socket在調(diào)試時(shí)要頻繁地打開和關(guān)閉,因此增大了讀取Shell腳本語(yǔ)句的操作復(fù)雜度;
[0007]3)該方案獲取的用戶終端性能數(shù)據(jù)只能保存在用戶終端本地,不方便在PC側(cè)提取性能數(shù)據(jù)進(jìn)行分析;
[0008]4)在獲取用戶終端性能數(shù)據(jù)的過(guò)程中,無(wú)法獲取待檢測(cè)應(yīng)用發(fā)生事件,即用戶對(duì)待檢測(cè)應(yīng)用進(jìn)行實(shí)時(shí)操作時(shí)的性能數(shù)據(jù),包括待檢測(cè)應(yīng)用發(fā)生事件時(shí)所占用的CPU、內(nèi)存以及流量等資源的信息。
[0009]綜上所述,相關(guān)技術(shù)對(duì)于如何以應(yīng)用為粒度、安全簡(jiǎn)易地獲取應(yīng)用性能數(shù)據(jù)以及用戶實(shí)時(shí)操作的性能數(shù)據(jù),并方便在PC側(cè)進(jìn)行性能數(shù)據(jù)分析,尚無(wú)有效的解決方案。
【發(fā)明內(nèi)容】
[0010]有鑒于此,本發(fā)明的主要目的在于提供一種獲取應(yīng)用性能數(shù)據(jù)的方法、設(shè)備和系統(tǒng),以至少解決上述問(wèn)題。
[0011]為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的:
[0012]一種獲取應(yīng)用性能數(shù)據(jù)的方法,該方法包括:
[0013]指示用戶終端基于預(yù)設(shè)服務(wù)Service、以及運(yùn)行Runtime庫(kù)執(zhí)行性能數(shù)據(jù)獲取應(yīng)用,從所執(zhí)行的應(yīng)用輸出的性能數(shù)據(jù)中過(guò)濾出待檢測(cè)應(yīng)用對(duì)應(yīng)的性能數(shù)據(jù),并將所過(guò)濾出的性能數(shù)據(jù)輸出至相應(yīng)的日志;
[0014]以監(jiān)聽的方式獲取所述日志更新的性能數(shù)據(jù),將所獲取的性能數(shù)據(jù)寫入指定的文件。
[0015]優(yōu)選地,所述指示用戶終端基于預(yù)設(shè)Service、以及Runtime庫(kù)執(zhí)行性能數(shù)據(jù)獲取應(yīng)用之前,該方法還包括:
[0016]解析需獲取性能數(shù)據(jù)的應(yīng)用的安裝包文件,將所解析出的進(jìn)程名稱在調(diào)試方式下以文件的形式發(fā)送給所述用戶終端,并向所述用戶終端發(fā)送啟動(dòng)預(yù)設(shè)Service的殼Shell指令。
[0017]優(yōu)選地,所述從所執(zhí)行的應(yīng)用輸出的性能數(shù)據(jù)中過(guò)濾出待檢測(cè)應(yīng)用對(duì)應(yīng)的性能數(shù)據(jù),包括:
[0018]根據(jù)從所執(zhí)行的應(yīng)用輸出的性能數(shù)據(jù)中獲取的應(yīng)用進(jìn)程名稱和進(jìn)程序列號(hào)PID的映射關(guān)系,確定與所述解析出的進(jìn)程名稱對(duì)應(yīng)的PID,并確定所執(zhí)行的應(yīng)用輸出的性能數(shù)據(jù)中與所確定的PID對(duì)應(yīng)的性能數(shù)據(jù)。
[0019]優(yōu)選地,所述以監(jiān)聽的方式獲取所述日志更新的性能數(shù)據(jù),將所獲取的性能數(shù)據(jù)寫入指定的文件時(shí),該方法還包括:
[0020]將所獲取的性能數(shù)據(jù)的時(shí)間戳信息寫入所述指定的文件。
[0021 ] 優(yōu)選地,該方法還包括:
[0022]以監(jiān)聽的方式獲取所述待檢測(cè)應(yīng)用接收到事件時(shí)所述日志中的性能數(shù)據(jù),將所獲取的性能數(shù)據(jù)以及所述待檢測(cè)應(yīng)用接收到事件時(shí)的時(shí)間戳寫入所述指定的文件。
[0023]優(yōu)選地,該方法還包括:
[0024]確定結(jié)束獲取所述待檢測(cè)應(yīng)用的性能數(shù)據(jù)時(shí),向所述用戶終端發(fā)送終止預(yù)設(shè)Service 的 Shell 指令。
[0025]一種用戶終端,該用戶終端包括:性能數(shù)據(jù)獲取單元和性能數(shù)據(jù)過(guò)濾單元;其中,
[0026]所述性能數(shù)據(jù)獲取單元,用于基于預(yù)設(shè)服務(wù)Service、以及運(yùn)行Runtime庫(kù)執(zhí)行性能數(shù)據(jù)獲取應(yīng)用,獲取所執(zhí)行的所述應(yīng)用輸出的性能數(shù)據(jù);
[0027]所述性能數(shù)據(jù)過(guò)濾單元,用于從所述輸出的性能數(shù)據(jù)中過(guò)濾出待檢測(cè)應(yīng)用對(duì)應(yīng)的性能數(shù)據(jù),并將所過(guò)濾出的性能數(shù)據(jù)輸出至相應(yīng)的日志。
[0028]優(yōu)選地,所述性能數(shù)據(jù)獲取單元,還用于根據(jù)從所執(zhí)行的應(yīng)用輸出的性能數(shù)據(jù)中獲取的應(yīng)用進(jìn)程名稱和進(jìn)程序列號(hào)PID的映射關(guān)系,確定與所接收的進(jìn)程名稱對(duì)應(yīng)的PID,并確定所執(zhí)行的應(yīng)用輸出的性能數(shù)據(jù)中與所確定的PID對(duì)應(yīng)的性能數(shù)據(jù)。
[0029]一種服務(wù)器,該服務(wù)器包括:指示單元和監(jiān)聽寫入單元;其中,
[0030]所述指示單元,用于指示用戶終端基于預(yù)設(shè)服務(wù)Service、以及運(yùn)行Runtime庫(kù)執(zhí)行性能數(shù)據(jù)獲取應(yīng)用,從所執(zhí)行的應(yīng)用輸出的性能數(shù)據(jù)中過(guò)濾出待檢測(cè)應(yīng)用對(duì)應(yīng)的性能數(shù)據(jù),并將所過(guò)濾出的性能數(shù)據(jù)輸出至相應(yīng)的日志;
[0031]所述監(jiān)聽寫入單元,用于以監(jiān)聽的方式獲取所述日志更新的性能數(shù)據(jù),將所獲取的性能數(shù)據(jù)寫入指定的文件。
[0032]優(yōu)選地,該服務(wù)器還包括:
[0033]解析發(fā)送單元,用于解析需獲取性能數(shù)據(jù)的應(yīng)用的安裝包文件,將所解析出的進(jìn)程名稱在調(diào)試方式下以文件的形式發(fā)送給所述用戶終端,向所述用戶終端發(fā)送啟動(dòng)預(yù)設(shè)Service的殼Shell指令,并觸發(fā)所述指示單元。
[0034]優(yōu)選地,所述監(jiān)聽寫入單元,還用于以監(jiān)聽的方式獲取所述日志更新的性能數(shù)據(jù),將所述獲取的性能數(shù)據(jù)寫入指定的文件時(shí),將所獲取的性能數(shù)據(jù)的時(shí)間戳信息寫入所述指定的文件。
[0035]優(yōu)選地,所述指示單元,還用于確定結(jié)束獲取所述待檢測(cè)應(yīng)用的性能數(shù)據(jù)時(shí),向所述用戶終端發(fā)送終止預(yù)設(shè)Service的Shell指令。
[0036]一種獲取應(yīng)用性能數(shù)據(jù)的系統(tǒng),該系統(tǒng)包括上述權(quán)利要求任一項(xiàng)所述的用戶終端、以及上述權(quán)利要求任一項(xiàng)所述的服務(wù)器。
[0037]本發(fā)明所提供的技術(shù)方案,具有以下有益效果:
[0038]I)以監(jiān)聽的方式獲取所述日志更新的性能數(shù)據(jù),例如在安卓平臺(tái)中,可以采用日志監(jiān)聽(Logcat)應(yīng)用監(jiān)聽日志更新的性能數(shù)據(jù),由于Logcat具有對(duì)長(zhǎng)時(shí)間Socket通信的原生支持,避免頻繁地對(duì)Socket進(jìn)行打開、讀寫以及關(guān)閉操作,容易造成Socket異常的情況;
[0039]2)結(jié)束對(duì)待檢測(cè)應(yīng)用的性能數(shù)據(jù)的獲取操作時(shí),通過(guò)向移動(dòng)終端發(fā)送關(guān)閉服務(wù)(Service)的Shell指令,無(wú)需通過(guò)強(qiáng)制的關(guān)閉指令結(jié)束操作,保證了安全性;基于預(yù)設(shè)Service、以及Runtime庫(kù)執(zhí)行性能數(shù)據(jù)獲取應(yīng)用,無(wú)需多個(gè)Shell指令的組合即可完成相應(yīng)的獲取應(yīng)用性能數(shù)據(jù)的操作,實(shí)施簡(jiǎn)易方便;
[0040]3)服務(wù)器將以監(jiān)聽的方式獲取的所述日志更新的性能數(shù)據(jù)寫入指定的文件,方便了服務(wù)器對(duì)性能數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析處理;
[0041]4)根據(jù)確定的待檢測(cè)應(yīng)用對(duì)應(yīng)的進(jìn)程序列號(hào)(PID, Process IDentity)在輸出的性能數(shù)據(jù)過(guò)濾出帶檢測(cè)應(yīng)用的性能數(shù)據(jù),實(shí)現(xiàn)了以應(yīng)用為粒度獲取性能數(shù)據(jù);同時(shí),以監(jiān)聽的方式獲取所述日志在所述待檢測(cè)應(yīng)用接收到事件時(shí)的性能數(shù)據(jù),并將所述獲取的性能數(shù)據(jù)以及所述待檢測(cè)應(yīng)用接收到事件時(shí)的時(shí)間戳寫入所述指定的文件,如此,從所述指定的文件中能夠獲取待檢測(cè)應(yīng)用發(fā)生事件,即用戶對(duì)用戶終端進(jìn)行實(shí)時(shí)操作時(shí)的性能數(shù)據(jù),能夠更加有針對(duì)性地對(duì)性能數(shù)據(jù)進(jìn)行分析。
【專利附圖】
【附圖說(shuō)明】
[0042]圖1為本發(fā)明實(shí)施例的獲取應(yīng)用性能數(shù)據(jù)的方法的實(shí)現(xiàn)流程圖;
[0043]圖2為本發(fā)明實(shí)施例的用戶終端的結(jié)構(gòu)示意圖;
[0044]圖3為本發(fā)明實(shí)施例的服務(wù)器的結(jié)構(gòu)示意圖;
[0045]圖4為本發(fā)明實(shí)施例的獲取應(yīng)用性能數(shù)據(jù)的系統(tǒng)的結(jié)構(gòu)示意圖;
[0046]圖5為本發(fā)明實(shí)施例的獲取應(yīng)用性能數(shù)據(jù)的實(shí)現(xiàn)示意圖。
【具體實(shí)施方式】
[0047]下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明的技術(shù)方案進(jìn)一步詳細(xì)闡述。
[0048]本發(fā)明實(shí)施例提供一種獲取應(yīng)用性能數(shù)據(jù)的方法,圖1為本發(fā)明實(shí)施例的獲取應(yīng)用性能數(shù)據(jù)的方法的實(shí)現(xiàn)流程圖,如圖1所示,包括:
[0049]步驟101:指示用戶終端基于預(yù)設(shè)Service、以及運(yùn)行(Runtime)庫(kù)執(zhí)行性能數(shù)據(jù)獲取應(yīng)用,從所執(zhí)行的應(yīng)用輸出的性能數(shù)據(jù)中過(guò)濾出待檢測(cè)應(yīng)用對(duì)應(yīng)的性能數(shù)據(jù),并將所過(guò)濾出的性能數(shù)據(jù)輸出至相應(yīng)的日志。
[0050]其中,所述指示用戶終端基于預(yù)設(shè)Service、以及Runtime庫(kù)執(zhí)行性能數(shù)據(jù)獲取應(yīng)用之前,還包括:
[0051]解析需獲取性能數(shù)據(jù)的應(yīng)用的安裝包文件,將所解析出的所述應(yīng)用的進(jìn)程名稱在調(diào)試方式下以文件的形式發(fā)送給用戶終端,并向用戶終端發(fā)送啟動(dòng)預(yù)設(shè)Service的Shell指令。
[0052]其中,所述從所執(zhí)行的應(yīng)用輸出的性能數(shù)據(jù)中過(guò)濾出待檢測(cè)應(yīng)用對(duì)應(yīng)的性能數(shù)據(jù),包括:
[0053]根據(jù)從所執(zhí)行的應(yīng)用輸出的性能數(shù)據(jù)中獲取的應(yīng)用進(jìn)程名稱和PID的映射關(guān)系,確定與所述解析出的進(jìn)程名稱對(duì)應(yīng)的PID,并確定所執(zhí)行的應(yīng)用輸出的性能數(shù)據(jù)中與所確定的PID對(duì)應(yīng)的性能數(shù)據(jù)。
[0054]以安卓平臺(tái)的用戶終端為例,步驟101中,當(dāng)需要獲取用戶終端中的某應(yīng)用的性能數(shù)據(jù)時(shí),該性能數(shù)據(jù)包括:CPU占用率、內(nèi)存使用情況、以及用戶終端消耗的流量;首先解析該待檢測(cè)應(yīng)用的安裝包,將所解析出的所述應(yīng)用的進(jìn)程名稱在ADB方式下以文件的形式通過(guò)adb push指令發(fā)送給用戶終端,并向用戶終端發(fā)送啟動(dòng)預(yù)設(shè)Service的Shell指令,設(shè)預(yù)設(shè)的 Service 名稱為 com.bit a.assistant.StartPerformance 時(shí),則相應(yīng)的 Shell 指令為:adb am startservice-a com.bita.assistant.StartPerformance ;
[0055]用戶終端基于預(yù)設(shè)的Service和Runtime庫(kù),執(zhí)行自身的性能數(shù)據(jù)獲取應(yīng)用,包括:top、proc、dumpsys和ps ;從上述應(yīng)用輸出的性能數(shù)據(jù)中獲取應(yīng)用進(jìn)程名稱和PID的映射關(guān)系,例如,top應(yīng)用的輸出中包括應(yīng)用的進(jìn)程名稱和PID的映射關(guān)系,從所獲取的映射關(guān)系中確定與所解析出的待檢測(cè)應(yīng)用的進(jìn)程名稱對(duì)應(yīng)的PID,從上述應(yīng)用,包括top、proc、dumpsys和ps輸出的性能數(shù)據(jù)中確定與待檢測(cè)應(yīng)用的PID對(duì)應(yīng)的性能數(shù)據(jù),并將所過(guò)濾出的性能數(shù)據(jù)利用Logcat應(yīng)用輸出至具有預(yù)設(shè)標(biāo)簽(Tag)的日志;例如,需要輸出CPU占用率和內(nèi)存使用情況的性能數(shù)據(jù)至預(yù)設(shè)標(biāo)簽為per tag的日志時(shí),相應(yīng)的Logcat指令為:
[0056]Log.V ( “per_tag”, m_cpu+〃P〃+m_mem);上述命令中 〃P〃 用于作為性能數(shù)據(jù) m_cpu字段(S卩CPU占用率)和性能數(shù)據(jù)m_mem字段(即內(nèi)存使用情況)的分隔符。
[0057]步驟102:以監(jiān)聽的方式獲取所述日志更新的性能數(shù)據(jù),將所獲取的性能數(shù)據(jù)寫入指定的文件。
[0058]其中,將所獲取的性能數(shù)據(jù)寫入指定的文件時(shí),為了對(duì)待檢測(cè)應(yīng)用的不同時(shí)間段的性能數(shù)據(jù)進(jìn)行有針對(duì)性的分析,還將所獲取的所述日志更新的性能數(shù)據(jù)的時(shí)間戳信息寫入指定的文件。如此,當(dāng)需要對(duì)待檢測(cè)應(yīng)用在某一時(shí)間段的性能數(shù)據(jù)進(jìn)行分析時(shí),通過(guò)時(shí)間戳信息過(guò)濾寫入指定文件的性能數(shù)據(jù)即可。
[0059]其中,在獲取待檢測(cè)應(yīng)用的性能數(shù)據(jù)時(shí),若待檢測(cè)應(yīng)用發(fā)生了事件,即在獲取待檢測(cè)應(yīng)用的性能數(shù)據(jù)時(shí)用戶對(duì)待檢測(cè)應(yīng)用進(jìn)行了操作,為了分析用戶的不同操作時(shí)的待檢測(cè)應(yīng)用的性能數(shù)據(jù),還可以監(jiān)聽的方式獲取在所述待檢測(cè)應(yīng)用接收到事件時(shí)所述日志中的性能數(shù)據(jù),將所述獲取的性能數(shù)據(jù)以及所述待檢測(cè)應(yīng)用接收到事件時(shí)的時(shí)間戳寫入指定的文件。
[0060]其中,當(dāng)不需要繼續(xù)獲取待檢測(cè)應(yīng)用的性能數(shù)據(jù)時(shí),向用戶終端發(fā)送終止預(yù)設(shè)Service的Shell指令,即可終端調(diào)用性能數(shù)據(jù)獲取應(yīng)用獲取性能數(shù)據(jù)。
[0061]仍以安卓平臺(tái)的用戶終端為例,步驟102中,當(dāng)需要利用Logcat應(yīng)用監(jiān)聽步驟101中輸出至日志的更新的性能數(shù)據(jù),并寫入指定的文件per_log.txt時(shí),相應(yīng)的1gcat指令為:logcat-v long-s per_tag>c:\per_log.txt ;
[0062]上述Logcat指令還會(huì)將當(dāng)前待檢測(cè)應(yīng)用發(fā)生的事件,即用戶對(duì)待檢測(cè)應(yīng)用進(jìn)行實(shí)時(shí)操作時(shí),待檢測(cè)應(yīng)用的性能數(shù)據(jù)以及實(shí)時(shí)操作的時(shí)間戳信息寫入文件per_log.txt,同時(shí),還可以將用戶對(duì)待檢測(cè)應(yīng)用的操作進(jìn)行截圖。
[0063]當(dāng)用戶在待檢測(cè)應(yīng)用的界面進(jìn)行點(diǎn)擊操作時(shí),文件perjog.txt中的性能數(shù)據(jù)的一個(gè)示例如下:
[0064]click (135:150)+20130722121210439+9+20130722121220213.jpg+200028 ;
[0065]其中,字段click (135:150)表示用戶在待檢測(cè)應(yīng)用的界面的點(diǎn)擊操作的坐標(biāo),字段20130722121210439為時(shí)間戳信息,字段9為CPU使用率,字段20130722121220213.jpg為對(duì)用戶對(duì)待檢測(cè)應(yīng)用的操作的截圖的名稱,字段200028為內(nèi)存使用情況。
[0066]當(dāng)用戶在待檢測(cè)應(yīng)用的界面未進(jìn)行任何操作時(shí),文件per_log.txt中的性能數(shù)據(jù)的一個(gè)示例如下:
[0067]null+20130722121210440+4+20130722121220214.jpg+100028 ;
[0068]其中,字段null表示待檢測(cè)應(yīng)用當(dāng)前沒(méi)有事件發(fā)生,其余字段含義與以上所述相同,不再贅述。
[0069]當(dāng)不需要繼續(xù)獲取待檢測(cè)應(yīng)用的性能數(shù)據(jù)時(shí),向用戶終端發(fā)送終止預(yù)設(shè)Service的Shell指令,例如可以通過(guò)啟動(dòng)另一個(gè)Service,即topService的方式來(lái)停止獲取性能數(shù)據(jù)的預(yù)設(shè)Service,—個(gè)示例性的Shell指令為:adb am startse rvice-acom.bita.assistant.StopPerformance ;其中,topService 對(duì)應(yīng) com.bita.ass istant.StopPerformance,通過(guò)啟動(dòng)該 topService 來(lái)結(jié)束預(yù)設(shè) com.bita.assistant.StartPerformance,即可停止獲取待檢測(cè)應(yīng)用的數(shù)據(jù)。
[0070]本發(fā)明實(shí)施例還提供了一種用戶終端,圖2為本發(fā)明實(shí)施例的用戶終端的結(jié)構(gòu)示意圖,如圖2所示,包括:性能數(shù)據(jù)獲取單元21和性能數(shù)據(jù)過(guò)濾單元22 ;其中,
[0071 ] 所述性能數(shù)據(jù)獲取單元21,用于基于預(yù)設(shè)Service、以及Runtime庫(kù)執(zhí)行性能數(shù)據(jù)獲取應(yīng)用,獲取所執(zhí)行的所述應(yīng)用輸出的性能數(shù)據(jù);
[0072]所述性能數(shù)據(jù)過(guò)濾單元22,用于從所述輸出的性能數(shù)據(jù)中過(guò)濾出待檢測(cè)應(yīng)用對(duì)應(yīng)的性能數(shù)據(jù),并將所過(guò)濾出的性能數(shù)據(jù)輸出至相應(yīng)的日志。
[0073]其中,所述性能數(shù)據(jù)獲取單元21,還用于根據(jù)從所執(zhí)行的應(yīng)用輸出的性能數(shù)據(jù)中獲取的應(yīng)用進(jìn)程名稱和PID的映射關(guān)系,確定與所接收的進(jìn)程名稱對(duì)應(yīng)的PID,并所執(zhí)行的應(yīng)用輸出的性能數(shù)據(jù)中與所確定的PID對(duì)應(yīng)的性能數(shù)據(jù)。
[0074]本發(fā)明實(shí)施例還提供了一種服務(wù)器,圖3為本發(fā)明實(shí)施例的服務(wù)器的結(jié)構(gòu)示意圖,如圖3所示,包括:指示單元31和監(jiān)聽寫入單元32 ;其中,
[0075]所述指示單元31,用于指示用戶終端基于預(yù)設(shè)Service、以及Runtime庫(kù)執(zhí)行性能數(shù)據(jù)獲取應(yīng)用,從所執(zhí)行的應(yīng)用輸出的性能數(shù)據(jù)中過(guò)濾出待檢測(cè)應(yīng)用對(duì)應(yīng)的性能數(shù)據(jù),并將所過(guò)濾出的性能數(shù)據(jù)輸出至相應(yīng)的日志;
[0076]所述監(jiān)聽寫入單元32,用于以監(jiān)聽的方式獲取所述日志更新的性能數(shù)據(jù),將所獲取的性能數(shù)據(jù)寫入指定的文件。
[0077]其中,該服務(wù)器還包括:
[0078]解析發(fā)送單元33,用于解析需獲取性能數(shù)據(jù)的應(yīng)用的安裝包文件,將所解析出的進(jìn)程名稱在調(diào)試方式下以文件的形式發(fā)送給所述用戶終端,向所述用戶終端發(fā)送啟動(dòng)預(yù)設(shè)Service的Shell指令,并觸發(fā)所述指示單元31。
[0079]其中,所述監(jiān)聽寫入單元32,還用于以監(jiān)聽的方式獲取所述日志更新的性能數(shù)據(jù),將所獲取的性能數(shù)據(jù)寫入指定的文件時(shí),將所獲取的性能數(shù)據(jù)的時(shí)間戳信息寫入所述指定的文件。
[0080]其中,所述指示單元31,還用于確定結(jié)束獲取所述待檢測(cè)應(yīng)用的性能數(shù)據(jù)時(shí),向用戶終端發(fā)送終止預(yù)設(shè)Service的Shell指令。
[0081]基于圖2所示的用戶終端和圖3所示的服務(wù)器,本發(fā)明實(shí)施例還提供了一種獲取應(yīng)用性能數(shù)據(jù)的系統(tǒng),圖4為本發(fā)明實(shí)施例的一種獲取應(yīng)用性能數(shù)據(jù)的系統(tǒng)的結(jié)構(gòu)示意圖,如圖4所示,包括:用戶終端41和服務(wù)器42 ;其中,
[0082]所述用戶終端41,用于基于預(yù)設(shè)Service、以及Runtime庫(kù)執(zhí)行性能數(shù)據(jù)獲取應(yīng)用,獲取所執(zhí)行的所述應(yīng)用輸出的性能數(shù)據(jù);從所述輸出的性能數(shù)據(jù)中過(guò)濾出待檢測(cè)應(yīng)用對(duì)應(yīng)的性能數(shù)據(jù),并將所過(guò)濾出的性能數(shù)據(jù)輸出至相應(yīng)的日志。
[0083]所述用戶終端41,還用于根據(jù)從所執(zhí)行的應(yīng)用輸出的性能數(shù)據(jù)中獲取的應(yīng)用進(jìn)程名稱和PID的映射關(guān)系,確定與所接收的進(jìn)程名稱對(duì)應(yīng)的PID,并確定所執(zhí)行的應(yīng)用輸出的性能數(shù)據(jù)中與所確定的PID對(duì)應(yīng)的性能數(shù)據(jù)。
[0084]所述服務(wù)器42,用于指示用戶終端41基于預(yù)設(shè)Service、以及Runtime庫(kù)執(zhí)行性能數(shù)據(jù)獲取應(yīng)用,從所執(zhí)行的應(yīng)用輸出的性能數(shù)據(jù)中過(guò)濾出待檢測(cè)應(yīng)用對(duì)應(yīng)的性能數(shù)據(jù),并將所過(guò)濾出的性能數(shù)據(jù)輸出至相應(yīng)的日志;以監(jiān)聽的方式獲取所述日志更新的性能數(shù)據(jù),將所獲取的性能數(shù)據(jù)寫入指定的文件。
[0085]所述服務(wù)器42,還用于在指示用戶終端41基于預(yù)設(shè)Service、以及Runtime庫(kù)執(zhí)行性能數(shù)據(jù)獲取應(yīng)用,從所執(zhí)行的應(yīng)用輸出的性能數(shù)據(jù)中過(guò)濾出待檢測(cè)應(yīng)用對(duì)應(yīng)的性能數(shù)據(jù)之前,解析需獲取性能數(shù)據(jù)的應(yīng)用的安裝包文件,將所解析出的進(jìn)程名稱在調(diào)試方式下以文件的形式發(fā)送給用戶終端41,并向用戶終端41發(fā)送啟動(dòng)預(yù)設(shè)Service的Shell指令。
[0086]所述服務(wù)器42,還用于以監(jiān)聽的方式獲取所述日志更新的性能數(shù)據(jù),將所述獲取的性能數(shù)據(jù)寫入指定的文件時(shí),將所獲取的性能數(shù)據(jù)的時(shí)間戳信息寫入所述指定的文件。
[0087]所述服務(wù)器42,還用于確定結(jié)束獲取所述待檢測(cè)應(yīng)用的性能數(shù)據(jù)時(shí),向用戶終端41發(fā)送終止預(yù)設(shè)Service的Shell指令。
[0088]如圖2所示,所述用戶終端41包括:
[0089]性能數(shù)據(jù)獲取單元21,用于根據(jù)基于預(yù)設(shè)Service、以及Runtime庫(kù)執(zhí)行性能數(shù)據(jù)獲取應(yīng)用,獲取所執(zhí)行的所述應(yīng)用輸出的性能數(shù)據(jù);
[0090]性能數(shù)據(jù)過(guò)濾單元22,用于從所述輸出的性能數(shù)據(jù)中過(guò)濾出待檢測(cè)應(yīng)用對(duì)應(yīng)的性能數(shù)據(jù),并將所過(guò)濾出的性能數(shù)據(jù)輸出至相應(yīng)的日志。
[0091]其中,所述性能數(shù)據(jù)獲取單元21,還用于根據(jù)從所執(zhí)行的應(yīng)用輸出的性能數(shù)據(jù)中獲取的應(yīng)用進(jìn)程名稱和PID的映射關(guān)系,確定與所接收的進(jìn)程名稱對(duì)應(yīng)的PID,并確定所執(zhí)行的應(yīng)用輸出的性能數(shù)據(jù)中與所確定的PID對(duì)應(yīng)的性能數(shù)據(jù)。
[0092]如圖3所示,所述服務(wù)器42包括:
[0093]指示單元31,用于指示用戶終端基于預(yù)設(shè)Service、以及Runtime庫(kù)執(zhí)行性能數(shù)據(jù)獲取應(yīng)用,從所執(zhí)行的應(yīng)用輸出的性能數(shù)據(jù)中過(guò)濾出待檢測(cè)應(yīng)用對(duì)應(yīng)的性能數(shù)據(jù),并將所過(guò)濾出的性能數(shù)據(jù)輸出至相應(yīng)的日志;
[0094]監(jiān)聽寫入單元32,用于以監(jiān)聽的方式獲取所述日志更新的性能數(shù)據(jù),將所獲取的性能數(shù)據(jù)寫入指定的文件。
[0095]其中,所述服務(wù)器42還包括:
[0096]解析發(fā)送單元33,用于解析需獲取性能數(shù)據(jù)的應(yīng)用的安裝包文件,將所解析出的所述應(yīng)用的進(jìn)程名稱在調(diào)試方式下以文件的形式發(fā)送給所述用戶終端,向所述用戶終端發(fā)送啟動(dòng)預(yù)設(shè)Service的Shell指令,并觸發(fā)所述指示單元31。
[0097]其中,所述監(jiān)聽寫入單元32,還用于以監(jiān)聽的方式獲取所述日志更新的性能數(shù)據(jù),將所述獲取的性能數(shù)據(jù)寫入指定的文件時(shí),將所述獲取的性能數(shù)據(jù)的時(shí)間戳信息寫入所述指定的文件。
[0098]其中,所述指示單元31,還用于確定結(jié)束獲取所述待檢測(cè)應(yīng)用的性能數(shù)據(jù)時(shí),向所述用戶終端發(fā)送終止預(yù)設(shè)Service的Shell指令。
[0099]下面結(jié)合圖5對(duì)本發(fā)明實(shí)施例的獲取應(yīng)用性能數(shù)據(jù)的方法進(jìn)行詳細(xì)說(shuō)明,圖5為本發(fā)明實(shí)施例的獲取應(yīng)用性能數(shù)據(jù)的實(shí)現(xiàn)示意圖,如圖5所示,包括:
[0100]步驟501:用戶終端安裝待檢測(cè)應(yīng)用的apk安裝包。
[0101]步驟502?步驟503:服務(wù)器解析待檢測(cè)應(yīng)用apk安裝包,將解析出的進(jìn)程名稱寫入文件,并采用adb push的方式將該文件發(fā)送到用戶終端。
[0102]步驟504:服務(wù)器向用戶終端發(fā)送Shell指令,指示用戶終端啟動(dòng)預(yù)設(shè)Service。
[0103]步驟505:用戶終端將與待檢測(cè)應(yīng)用對(duì)應(yīng)的性能數(shù)據(jù)輸出至具有預(yù)設(shè)Tag的日志。
[0104]用戶終端基于預(yù)設(shè)Service和Runtime周期性執(zhí)行top, proc、dumpsys、ps等應(yīng)用,獲取上述應(yīng)用輸出的性能數(shù)據(jù),根據(jù)獲取的性能數(shù)據(jù)確定對(duì)應(yīng)待檢測(cè)應(yīng)用的進(jìn)程名稱對(duì)應(yīng)的PID,并從獲取的性能數(shù)據(jù)中過(guò)濾出對(duì)應(yīng)待檢測(cè)應(yīng)用的PID的性能數(shù)據(jù),將過(guò)濾出性能數(shù)據(jù)利用Logcat應(yīng)用輸出至具有預(yù)設(shè)Tag的日志。
[0105]步驟506?步驟507:服務(wù)器以監(jiān)聽的方式獲取具有預(yù)設(shè)Tag的日志更新的性能數(shù)據(jù),將所獲取的性能數(shù)據(jù)寫入本地文件。
[0106]服務(wù)器通過(guò)Logcat應(yīng)用監(jiān)聽具有預(yù)設(shè)Tag的日志中更新的性能數(shù)據(jù),將更新的性能數(shù)據(jù)以及當(dāng)前的時(shí)間戳寫入本地文件。
[0107]步驟507中,服務(wù)器在獲取性能數(shù)據(jù)的同時(shí),還可以將待檢測(cè)應(yīng)用發(fā)生的事件進(jìn)行截圖,相應(yīng)地,服務(wù)器本地文件中性能數(shù)據(jù)包括待檢測(cè)應(yīng)用發(fā)生事件時(shí)的性能數(shù)據(jù)、時(shí)間戳以及截圖文件的名稱。
[0108]步驟508:服務(wù)器向用戶終端發(fā)送停止預(yù)設(shè)Service的Shell指令。
[0109]服務(wù)器不再需要獲取待檢測(cè)應(yīng)用的性能數(shù)據(jù)時(shí),通過(guò)啟動(dòng)topService的方式來(lái)停止獲取性能數(shù)據(jù)的預(yù)設(shè)Service。
[0110]本發(fā)明實(shí)施例中,服務(wù)器指示用戶終端基于預(yù)設(shè)Service、以及Runtime庫(kù)執(zhí)行性能數(shù)據(jù)獲取應(yīng)用,從所執(zhí)行的應(yīng)用輸出的性能數(shù)據(jù)中過(guò)濾出待檢測(cè)應(yīng)用對(duì)應(yīng)的性能數(shù)據(jù),并將所過(guò)濾出的性能數(shù)據(jù)輸出至相應(yīng)的日志,實(shí)施簡(jiǎn)單方便,需要結(jié)束獲取性能數(shù)據(jù)時(shí),只需發(fā)送停止預(yù)設(shè)Service的Shell指令即可,安全性高;并且能夠根據(jù)待檢測(cè)應(yīng)用的進(jìn)程名稱過(guò)濾出對(duì)應(yīng)待檢測(cè)應(yīng)用的性能數(shù)據(jù),實(shí)現(xiàn)了以應(yīng)用為粒度的性能數(shù)據(jù)獲??;以監(jiān)聽的方式能夠?qū)崟r(shí)獲取待檢測(cè)應(yīng)用的性能數(shù)據(jù),同時(shí),將性能數(shù)據(jù)寫入本地文件也方便了在本地進(jìn)行性能數(shù)據(jù)分析。
[0111]需要說(shuō)明的是,以上所述僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。
【權(quán)利要求】
1.一種獲取應(yīng)用性能數(shù)據(jù)的方法,其特征在于,該方法包括: 指示用戶終端基于預(yù)設(shè)服務(wù)Service、以及運(yùn)行Runtime庫(kù)執(zhí)行性能數(shù)據(jù)獲取應(yīng)用,從所執(zhí)行的應(yīng)用輸出的性能數(shù)據(jù)中過(guò)濾出待檢測(cè)應(yīng)用對(duì)應(yīng)的性能數(shù)據(jù),并將所過(guò)濾出的性能數(shù)據(jù)輸出至相應(yīng)的日志; 以監(jiān)聽的方式獲取所述日志更新的性能數(shù)據(jù),將所獲取的性能數(shù)據(jù)寫入指定的文件。
2.根據(jù)權(quán)利要求1所述獲取應(yīng)用性能數(shù)據(jù)的方法,其特征在于,所述指示用戶終端基于預(yù)設(shè)Service、以及Runtime庫(kù)執(zhí)行性能數(shù)據(jù)獲取應(yīng)用之前,該方法還包括: 解析需獲取性能數(shù)據(jù)的應(yīng)用的安裝包文件,將所解析出的進(jìn)程名稱在調(diào)試方式下以文件的形式發(fā)送給所述用戶終端,并向所述用戶終端發(fā)送啟動(dòng)預(yù)設(shè)Service的殼Shell指令。
3.根據(jù)權(quán)利要求2所述獲取應(yīng)用性能數(shù)據(jù)的方法,其特征在于,所述從所執(zhí)行的應(yīng)用輸出的性能數(shù)據(jù)中過(guò)濾出待檢測(cè)應(yīng)用對(duì)應(yīng)的性能數(shù)據(jù),包括: 根據(jù)從所執(zhí)行的應(yīng)用輸出的性能數(shù)據(jù)中獲取的應(yīng)用進(jìn)程名稱和進(jìn)程序列號(hào)PID的映射關(guān)系,確定與所述解析出的進(jìn)程名稱對(duì)應(yīng)的PID,并確定所執(zhí)行的應(yīng)用輸出的性能數(shù)據(jù)中與所確定的PID對(duì)應(yīng)的性能數(shù)據(jù)。
4.根據(jù)權(quán)利要求1所述獲取應(yīng)用性能數(shù)據(jù)的方法,其特征在于,所述以監(jiān)聽的方式獲取所述日志更新的性能數(shù)據(jù),將所獲取的性能數(shù)據(jù)寫入指定的文件時(shí),該方法還包括: 將所獲取的性能數(shù)據(jù)的時(shí)間戳信息寫入所述指定的文件。
5.根據(jù)權(quán)利要求4所述獲取應(yīng)用性能數(shù)據(jù)的方法,其特征在于,該方法還包括: 以監(jiān)聽的方式獲取所述待檢測(cè)應(yīng)用接收到事件時(shí)所述日志中的性能數(shù)據(jù),將所獲取的性能數(shù)據(jù)以及所述待檢測(cè)應(yīng)用接收到事件時(shí)的時(shí)間戳寫入所述指定的文件。
6.根據(jù)權(quán)利要求1至5任一項(xiàng)所述獲取應(yīng)用性能數(shù)據(jù)的方法,其特征在于,該方法還包括: 確定結(jié)束獲取所述待檢測(cè)應(yīng)用的性能數(shù)據(jù)時(shí),向所述用戶終端發(fā)送終止預(yù)設(shè)Service的Shell指令。
7.一種用戶終端,其特征在于,該用戶終端包括:性能數(shù)據(jù)獲取單元和性能數(shù)據(jù)過(guò)濾單元;其中, 所述性能數(shù)據(jù)獲取單元,用于基于預(yù)設(shè)服務(wù)Service、以及運(yùn)行Runtime庫(kù)執(zhí)行性能數(shù)據(jù)獲取應(yīng)用,獲取所執(zhí)行的所述應(yīng)用輸出的性能數(shù)據(jù); 所述性能數(shù)據(jù)過(guò)濾單元,用于從所述輸出的性能數(shù)據(jù)中過(guò)濾出待檢測(cè)應(yīng)用對(duì)應(yīng)的性能數(shù)據(jù),并將所過(guò)濾出的性能數(shù)據(jù)輸出至相應(yīng)的日志。
8.根據(jù)權(quán)利要求7所述用戶終端,其特征在于, 所述性能數(shù)據(jù)獲取單元,還用于根據(jù)從所執(zhí)行的應(yīng)用輸出的性能數(shù)據(jù)中獲取的應(yīng)用進(jìn)程名稱和進(jìn)程序列號(hào)PID的映射關(guān)系,確定與所接收的進(jìn)程名稱對(duì)應(yīng)的PID,并確定所執(zhí)行的應(yīng)用輸出的性能數(shù)據(jù)中與所確定的PID對(duì)應(yīng)的性能數(shù)據(jù)。
9.一種服務(wù)器,其特征在于,該服務(wù)器包括:指示單元和監(jiān)聽寫入單元;其中, 所述指示單元,用于指示用戶終端基于預(yù)設(shè)服務(wù)Service、以及運(yùn)行Runtime庫(kù)執(zhí)行性能數(shù)據(jù)獲取應(yīng)用,從所執(zhí)行的應(yīng)用輸出的性能數(shù)據(jù)中過(guò)濾出待檢測(cè)應(yīng)用對(duì)應(yīng)的性能數(shù)據(jù),并將所過(guò)濾出的性能數(shù)據(jù)輸出至相應(yīng)的日志; 所述監(jiān)聽寫入單元,用于以監(jiān)聽的方式獲取所述日志更新的性能數(shù)據(jù),將所獲取的性能數(shù)據(jù)寫入指定的文件。
10.根據(jù)權(quán)利要求9所述服務(wù)器,其特征在于,該服務(wù)器還包括: 解析發(fā)送單元,用于解析需獲取性能數(shù)據(jù)的應(yīng)用的安裝包文件,將所解析出的進(jìn)程名稱在調(diào)試方式下以文件的形式發(fā)送給所述用戶終端,向所述用戶終端發(fā)送啟動(dòng)預(yù)設(shè)Service的殼Shell指令,并觸發(fā)所述指示單元。
11.根據(jù)權(quán)利要求9所述服務(wù)器,其特征在于, 所述監(jiān)聽寫入單元,還用于以監(jiān)聽的方式獲取所述日志更新的性能數(shù)據(jù),將所述獲取的性能數(shù)據(jù)寫入指定的文件時(shí),將所獲取的性能數(shù)據(jù)的時(shí)間戳信息寫入所述指定的文件。
12.根據(jù)權(quán)利要求9至11任一項(xiàng)所述服務(wù)器,其特征在于, 所述指示單元,還用于確定結(jié)束獲取所述待檢測(cè)應(yīng)用的性能數(shù)據(jù)時(shí),向所述用戶終端發(fā)送終止預(yù)設(shè)Service的Shell指令。
13.一種獲取應(yīng)用性能數(shù)據(jù)的系統(tǒng),其特征在于,該系統(tǒng)包括權(quán)利要求7或8所述的用戶終端、以及權(quán)利要求9至12任一項(xiàng)所述的服務(wù)器。
【文檔編號(hào)】G06F11/34GK104426945SQ201310378979
【公開日】2015年3月18日 申請(qǐng)日期:2013年8月27日 優(yōu)先權(quán)日:2013年8月27日
【發(fā)明者】楊超 申請(qǐng)人:騰訊科技(深圳)有限公司