1.Android應(yīng)用程序網(wǎng)絡(luò)流量多線程采集方法,其特征是,包括如下步驟:
步驟(1):判斷設(shè)定目錄下是否有Android應(yīng)用程序;如果沒(méi)有Android應(yīng)用程序,則記錄本次操作的日志,然后結(jié)束;若有Android應(yīng)用程序則進(jìn)入步驟(2);
步驟(2):根據(jù)設(shè)定的線程數(shù)量或者根據(jù)計(jì)算機(jī)內(nèi)存資源空閑情況,確定啟動(dòng)的線程數(shù)量;
步驟(3):提取Android應(yīng)用程序的基本信息,檢測(cè)基本信息中的SDK版本,將提取出的基本信息與Android應(yīng)用程序的存放路徑對(duì)應(yīng)存儲(chǔ)在應(yīng)用程序信息隊(duì)列的應(yīng)用程序數(shù)組鏈表中;
步驟(4):接收數(shù)組鏈表;根據(jù)步驟(2)中得到的線程數(shù)量,控制全部的子線程啟動(dòng);
步驟(5):根據(jù)SDK版本創(chuàng)建Android虛擬機(jī);啟動(dòng)Android虛擬機(jī);安裝Android應(yīng)用程序;每一個(gè)子線程對(duì)應(yīng)用程序數(shù)組鏈表中的Android應(yīng)用程序進(jìn)行網(wǎng)絡(luò)流量采集。
2.如權(quán)利要求1所述的Android應(yīng)用程序網(wǎng)絡(luò)流量多線程采集方法,其特征是,所述步驟(2)包括如下步驟:
判斷輸入?yún)?shù)是設(shè)定的線程數(shù)量還是Android應(yīng)用程序的數(shù)量;若是設(shè)定的線程數(shù)量,則直接輸出線程數(shù)量;若是Android應(yīng)用程序的數(shù)量,則檢測(cè)計(jì)算機(jī)的剩余資源,根據(jù)單個(gè)Android虛擬機(jī)運(yùn)行所消耗資源和計(jì)算機(jī)的剩余資源,通過(guò)計(jì)算得出當(dāng)前計(jì)算機(jī)能夠容納的線程數(shù)量;將計(jì)算得出的線程數(shù)量輸出。
3.如權(quán)利要求1所述的Android應(yīng)用程序網(wǎng)絡(luò)流量多線程采集方法,其特征是,所述步驟(3)包括如下步驟:
步驟(31):對(duì)AndroidManifest文件進(jìn)行反編譯操作;檢測(cè)反編譯是否成功,反編譯如果失敗,則記錄錯(cuò)誤信息后結(jié)束;反編譯如果成功,則在反編譯后的AndroidManifest文件中提取應(yīng)用程序的基本信息;
步驟(32):檢測(cè)基本信息中的SDK版本,判斷是否存在minSDKVersion信息,若不存在,則使用最高版本的SDK;若存在,則使用設(shè)定版本的SDK;
步驟(33):將提取出來(lái)的應(yīng)用程序的信息打包成信息數(shù)組,存入數(shù)組鏈表中。
4.如權(quán)利要求1所述的Android應(yīng)用程序網(wǎng)絡(luò)流量多線程采集方法,其特征是,所述步驟(4)包括如下步驟:
步驟(41):創(chuàng)建一個(gè)子線程,并將啟動(dòng)參數(shù)傳入;所述啟動(dòng)參數(shù)包括子線程需要檢測(cè)的應(yīng)用程序數(shù)組鏈表和SDK版本;
步驟(42):判斷創(chuàng)建的子線程數(shù)量是否達(dá)到設(shè)定數(shù)量,如果未達(dá)到設(shè)定的子線程數(shù)量,則返回步驟(41)繼續(xù)創(chuàng)建子線程;如果創(chuàng)建的子線程數(shù)量達(dá)到設(shè)定的數(shù)量,則啟動(dòng)全部子線程;
步驟(43):主程序阻塞,等待子線程全部執(zhí)行完畢。
5.如權(quán)利要求1所述的Android應(yīng)用程序網(wǎng)絡(luò)流量多線程采集方法,其特征是,所述步驟(5)包括如下步驟:
步驟(5-1):在數(shù)組鏈表中提取一組數(shù)據(jù),檢測(cè)數(shù)據(jù)是否完整有效;如果數(shù)據(jù)不完整或者存在無(wú)效字符,則說(shuō)明Android應(yīng)用程序提取的信息有誤,跳轉(zhuǎn)至步驟(5-7)跳過(guò)該應(yīng)用程序;如果數(shù)據(jù)是完整并且有效的,則根據(jù)SDK版本創(chuàng)建Android虛擬機(jī);啟動(dòng)Android虛擬機(jī);
步驟(5-2):安裝Android應(yīng)用程序;檢測(cè)該應(yīng)用程序是否安裝成功;如果應(yīng)用程序安裝成功,則進(jìn)入步驟(5-4);如果應(yīng)用程序沒(méi)有安全成功,則進(jìn)入步驟(5-3);
步驟(5-3):判斷是否是首次安裝失敗,如果是就返回步驟(5-2);若否則跳轉(zhuǎn)至步驟(5-6);
步驟(5-4):重啟Android虛擬機(jī),啟動(dòng)采集網(wǎng)絡(luò)流量的tcpdump工具以及重啟前安裝的Android應(yīng)用程序;
步驟(5-5):判斷應(yīng)用程序是否啟動(dòng)成功,如果啟動(dòng)失敗,則跳轉(zhuǎn)至步驟(5-6);如果應(yīng)用程序啟動(dòng)成功,則啟動(dòng)Android應(yīng)用程序自動(dòng)化遍歷腳本,模擬人工操作環(huán)境;待Android應(yīng)用程序自動(dòng)化遍歷腳本執(zhí)行完畢后,保存采集的網(wǎng)絡(luò)流量,跳轉(zhuǎn)至步驟(5-6);
步驟(5-6):關(guān)閉并刪除Android虛擬機(jī);進(jìn)入步驟(5-7);
步驟(5-7):檢測(cè)Android應(yīng)用程序信息數(shù)組鏈表中是否還有Android應(yīng)用程序;如果有,則提取一組待采集網(wǎng)絡(luò)流量的應(yīng)用程序后跳轉(zhuǎn)至步驟(5-1),如果沒(méi)有,則結(jié)束。
6.Android應(yīng)用程序網(wǎng)絡(luò)流量多線程采集系統(tǒng),其特征是,包括:
Android應(yīng)用程序是否存在判斷模塊:判斷設(shè)定目錄下是否有Android應(yīng)用程序;如果沒(méi)有Android應(yīng)用程序,則記錄本次操作的日志,然后結(jié)束;若有Android應(yīng)用程序則進(jìn)入線程數(shù)量配置模塊;
線程數(shù)量配置模塊:根據(jù)設(shè)定的線程數(shù)量或者根據(jù)計(jì)算機(jī)內(nèi)存資源空閑情況,確定啟動(dòng)的線程數(shù)量;
Android應(yīng)用程序的基本信息提取模塊:提取Android應(yīng)用程序的基本信息,檢測(cè)基本信息中的SDK版本,將提取出的基本信息與Android應(yīng)用程序的存放路徑對(duì)應(yīng)存儲(chǔ)在應(yīng)用程序信息隊(duì)列的應(yīng)用程序數(shù)組鏈表中;
子線程啟動(dòng)模塊:接收數(shù)組鏈表;根據(jù)線程數(shù)量配置模塊中得到的線程數(shù)量,控制全部的子線程啟動(dòng);
網(wǎng)絡(luò)流量采集模塊:根據(jù)SDK版本創(chuàng)建Android虛擬機(jī);啟動(dòng)Android虛擬機(jī);安裝Android應(yīng)用程序;每一個(gè)子線程對(duì)應(yīng)用程序數(shù)組鏈表中的Android應(yīng)用程序進(jìn)行網(wǎng)絡(luò)流量采集。
7.如權(quán)利要求6所述的Android應(yīng)用程序網(wǎng)絡(luò)流量多線程采集系統(tǒng),其特征是,所述線程數(shù)量配置模塊包括:
判斷輸入?yún)?shù)是設(shè)定的線程數(shù)量還是Android應(yīng)用程序的數(shù)量;若是設(shè)定的線程數(shù)量,則直接輸出線程數(shù)量;若是Android應(yīng)用程序的數(shù)量,則檢測(cè)計(jì)算機(jī)的剩余資源,根據(jù)單個(gè)Android虛擬機(jī)運(yùn)行所消耗資源和計(jì)算機(jī)的剩余資源,通過(guò)計(jì)算得出當(dāng)前計(jì)算機(jī)能夠容納的線程數(shù)量;將計(jì)算得出的線程數(shù)量輸出。
8.如權(quán)利要求6所述的Android應(yīng)用程序網(wǎng)絡(luò)流量多線程采集系統(tǒng),其特征是,所述Android應(yīng)用程序的基本信息提取模塊包括:
反編譯子模塊:對(duì)AndroidManifest文件進(jìn)行反編譯操作;檢測(cè)反編譯是否成功,反編譯如果失敗,則記錄錯(cuò)誤信息后結(jié)束;反編譯如果成功,則進(jìn)入信息獲取子模塊;
信息獲取子模塊,在反編譯后的AndroidManifest文件中提取應(yīng)用程序的基本信息;
SDK版本檢測(cè)子模塊:檢測(cè)基本信息中的SDK版本,判斷是否存在minSDKVersion信息,若不存在,則使用最高版本的SDK;若存在,則使用設(shè)定版本的SDK;
打包子模塊:將提取出來(lái)的應(yīng)用程序的信息打包成信息數(shù)組,存入數(shù)組鏈表中。
9.如權(quán)利要求6所述的Android應(yīng)用程序網(wǎng)絡(luò)流量多線程采集系統(tǒng),其特征是,
所述子線程啟動(dòng)模塊包括如下步驟:
子線程創(chuàng)建子模塊:創(chuàng)建一個(gè)子線程,并將啟動(dòng)參數(shù)傳入;所述啟動(dòng)參數(shù)包括子線程需要檢測(cè)的應(yīng)用程序數(shù)組鏈表和SDK版本;
子線程數(shù)量檢測(cè)子模塊:判斷創(chuàng)建的子線程數(shù)量是否達(dá)到設(shè)定數(shù)量,如果未達(dá)到設(shè)定的子線程數(shù)量,則返回子線程創(chuàng)建子模塊繼續(xù)創(chuàng)建子線程;如果創(chuàng)建的子線程數(shù)量達(dá)到設(shè)定的數(shù)量,則啟動(dòng)全部子線程;
子線程執(zhí)行等待子模塊:主程序阻塞,等待子線程全部執(zhí)行完畢。
10.如權(quán)利要求6所述的Android應(yīng)用程序網(wǎng)絡(luò)流量多線程采集系統(tǒng),其特征是,所述網(wǎng)絡(luò)流量采集模塊包括如下步驟:
數(shù)據(jù)檢測(cè)子模塊:在數(shù)組鏈表中提取一組數(shù)據(jù),檢測(cè)數(shù)據(jù)是否完整有效;如果數(shù)據(jù)不完整或者存在無(wú)效字符,則說(shuō)明Android應(yīng)用程序提取的信息有誤,跳轉(zhuǎn)至Android應(yīng)用程序剩余檢測(cè)子模塊,跳過(guò)Android應(yīng)用程序;如果數(shù)據(jù)是完整并且有效的,則根據(jù)SDK版本創(chuàng)建Android虛擬機(jī);啟動(dòng)Android虛擬機(jī);
Android應(yīng)用程序安裝子模塊:安裝Android應(yīng)用程序;檢測(cè)該應(yīng)用程序是否安裝成功;如果應(yīng)用程序安裝成功,則進(jìn)入Android虛擬機(jī)重啟子模塊;如果應(yīng)用程序沒(méi)有安全成功,則進(jìn)入首次安裝失敗與否檢測(cè)子模塊;
首次安裝失敗與否檢測(cè)子模塊:判斷是否是首次安裝失敗,如果是就返回Android應(yīng)用程序安裝子模塊;若否則跳轉(zhuǎn)至Android虛擬機(jī)刪除子模塊;
Android虛擬機(jī)重啟子模塊:重啟Android虛擬機(jī),啟動(dòng)采集網(wǎng)絡(luò)流量的tcpdump工具以及重啟前安裝的Android應(yīng)用程序;
應(yīng)用程序啟動(dòng)成功檢測(cè)子模塊:判斷應(yīng)用程序是否啟動(dòng)成功,如果啟動(dòng)失敗,則跳轉(zhuǎn)至Android虛擬機(jī)刪除子模塊;如果應(yīng)用程序啟動(dòng)成功,則啟動(dòng)Android應(yīng)用程序自動(dòng)化遍歷腳本,模擬人工操作環(huán)境;待Android應(yīng)用程序自動(dòng)化遍歷腳本執(zhí)行完畢后,保存采集的網(wǎng)絡(luò)流量,跳轉(zhuǎn)至Android虛擬機(jī)刪除子模塊;
Android虛擬機(jī)刪除子模塊:關(guān)閉并刪除Android虛擬機(jī);進(jìn)入Android應(yīng)用程序剩余檢測(cè)子模塊;
Android應(yīng)用程序剩余檢測(cè)子模塊:檢測(cè)Android應(yīng)用程序信息數(shù)組鏈表中是否還有Android應(yīng)用程序;如果有,則提取一組待采集網(wǎng)絡(luò)流量的應(yīng)用程序后跳轉(zhuǎn)至數(shù)據(jù)檢測(cè)子模塊,如果沒(méi)有,則結(jié)束。