欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

應(yīng)用測試包生成方法及生成裝置與流程

文檔序號:11386424閱讀:287來源:國知局
應(yīng)用測試包生成方法及生成裝置與流程

本發(fā)明涉及應(yīng)用數(shù)據(jù)處理領(lǐng)域,特別是涉及一種應(yīng)用測試包生成方法及生成裝置。



背景技術(shù):

隨著科技的發(fā)展,人們對各種終端應(yīng)用的要求越來越高,現(xiàn)有的蘋果應(yīng)用開發(fā)人員為了提高應(yīng)用開發(fā)效率,往往會使用越獄的蘋果手機進行應(yīng)用測試,同時在進行應(yīng)用測試時,檢測電腦應(yīng)該與測試手機處于同一網(wǎng)段。

現(xiàn)有的應(yīng)用測試方法需要提供已經(jīng)越獄的蘋果手機,同時需要對檢測電腦和測試手機進行網(wǎng)絡(luò)設(shè)置,以使得檢測電腦與測試手機屬于同一網(wǎng)段的網(wǎng)絡(luò)地址上,因此整個測試流程比較繁瑣。同時由于安裝有最新版本系統(tǒng)的蘋果手機可能無法進行越獄操作,這樣導(dǎo)致某些終端應(yīng)用無法在最新版本系統(tǒng)的蘋果手機上得到及時測試,因此現(xiàn)有的蘋果手機應(yīng)用的測試效率較低。



技術(shù)實現(xiàn)要素:

本發(fā)明實施例提供一種不需要對蘋果手機進行越獄操作、應(yīng)用測試效率較高且應(yīng)用測試流程比較簡單的應(yīng)用測試包生成方法及生成裝置;以解決現(xiàn)有的蘋果手機的應(yīng)用測試包的測試效率較低且測試流程較為繁瑣的技術(shù)問題。

本發(fā)明實施例提供一種應(yīng)用測試包生成方法,所述應(yīng)用測試包用于對相應(yīng)的應(yīng)用數(shù)據(jù)包進行數(shù)據(jù)測試操作;其中所述應(yīng)用測試包生成方法包括:

基于測試數(shù)據(jù)對應(yīng)的所述應(yīng)用數(shù)據(jù)包中的數(shù)據(jù)出入口,生成用于獲取所述測試數(shù)據(jù)的應(yīng)用數(shù)據(jù)鉤子插件;

獲取所述應(yīng)用數(shù)據(jù)包的加載指令區(qū);

使用所述應(yīng)用數(shù)據(jù)鉤子插件以及所述應(yīng)用數(shù)據(jù)鉤子插件對應(yīng)的鉤子功能插件,對所述應(yīng)用數(shù)據(jù)包的加載指令區(qū)進行更新操作;以及

對更新后的應(yīng)用數(shù)據(jù)包進行簽名操作,以生成所述應(yīng)用測試包。

本發(fā)明實施例還提供一種應(yīng)用測試包生成裝置,所述應(yīng)用測試包用于對相應(yīng)的應(yīng)用數(shù)據(jù)包進行數(shù)據(jù)測試操作;其中所述應(yīng)用測試包生成方法包括:

鉤子插件生成模塊,用于基于測試數(shù)據(jù)對應(yīng)的所述應(yīng)用數(shù)據(jù)包中的數(shù)據(jù)出入口,生成用于獲取所述測試數(shù)據(jù)的應(yīng)用數(shù)據(jù)鉤子插件;

加載指令區(qū)獲取模塊,用于獲取所述應(yīng)用數(shù)據(jù)包的加載指令區(qū);

加載指令區(qū)更新模塊,用于使用所述應(yīng)用數(shù)據(jù)鉤子插件以及所述應(yīng)用數(shù)據(jù)鉤子插件對應(yīng)的鉤子功能插件,對所述應(yīng)用數(shù)據(jù)包的加載指令區(qū)進行更新操作;以及

應(yīng)用測試包生成模塊,用于對更新后的應(yīng)用數(shù)據(jù)包進行簽名操作,以生成所述應(yīng)用測試包。

相較于現(xiàn)有技術(shù),本發(fā)明的應(yīng)用測試包生成方法及應(yīng)用測試包生成裝置通過在應(yīng)用測試包中增加應(yīng)用數(shù)據(jù)鉤子插件以及鉤子功能插件,使得外部終端可獲取到?jīng)]有越獄的蘋果手機中的應(yīng)用測試包的測試數(shù)據(jù),從而提高了應(yīng)用測試包的應(yīng)用測試效率,簡化了應(yīng)用測試流程;解決了現(xiàn)有的蘋果手機的應(yīng)用測試包的測試效率較低且測試流程較為繁瑣的技術(shù)問題。

附圖說明

圖1為本發(fā)明的應(yīng)用測試包生成方法的第一優(yōu)選實施例的流程圖;

圖2為本發(fā)明的應(yīng)用測試包生成方法的第二優(yōu)選實施例的流程圖;

圖3為本發(fā)明的應(yīng)用測試包生成方法的第三優(yōu)選實施例的流程圖;

圖4為本發(fā)明的應(yīng)用測試包生成裝置的第一優(yōu)選實施例的結(jié)構(gòu)示意圖;

圖5為本發(fā)明的應(yīng)用測試包生成裝置的第二優(yōu)選實施例的結(jié)構(gòu)示意圖;

圖6為本發(fā)明的應(yīng)用測試包生成裝置的第三優(yōu)選實施例的結(jié)構(gòu)示意圖;

圖7為本發(fā)明的應(yīng)用測試包生成方法及應(yīng)用測試包生成裝置的應(yīng)用測試包生成流程圖;

圖8為本發(fā)明應(yīng)用測試包生成裝置所在的電子設(shè)備的工作環(huán)境結(jié)構(gòu)示意圖。

具體實施方式

請參照圖式,其中相同的組件符號代表相同的組件,本發(fā)明的原理是以實施在一適當?shù)倪\算環(huán)境中來舉例說明。以下的說明是基于所例示的本發(fā)明具體實施例,其不應(yīng)被視為限制本發(fā)明未在此詳述的其它具體實施例。

在以下的說明中,本發(fā)明的具體實施例將參考由一部或多部計算機所執(zhí)行之作業(yè)的步驟及符號來說明,除非另有述明。因此,其將可了解到這些步驟及操作,其中有數(shù)次提到為由計算機執(zhí)行,包括了由代表了以一結(jié)構(gòu)化型式中的數(shù)據(jù)之電子信號的計算機處理單元所操縱。此操縱轉(zhuǎn)換該數(shù)據(jù)或?qū)⑵渚S持在該計算機之內(nèi)存系統(tǒng)中的位置處,其可重新配置或另外以本領(lǐng)域技術(shù)人員所熟知的方式來改變該計算機之運作。該數(shù)據(jù)所維持的數(shù)據(jù)結(jié)構(gòu)為該內(nèi)存之實體位置,其具有由該數(shù)據(jù)格式所定義的特定特性。但是,本發(fā)明原理以上述文字來說明,其并不代表為一種限制,本領(lǐng)域技術(shù)人員將可了解到以下所述的多種步驟及操作亦可實施在硬件當中。

本發(fā)明的應(yīng)用測試包生成方法及生成裝置可設(shè)置在各種進行終端應(yīng)用測試的電子設(shè)備中,該電子設(shè)備包括但不限于可穿戴設(shè)備、頭戴設(shè)備、醫(yī)療健康平臺、個人計算機、服務(wù)器計算機、手持式或膝上型設(shè)備、移動設(shè)備(比如移動電話、個人數(shù)字助理(pda)、媒體播放器等等)、多處理器系統(tǒng)、消費型電子設(shè)備、小型計算機、大型計算機、包括上述任意系統(tǒng)或設(shè)備的分布式計算環(huán)境,等等。該電子設(shè)備優(yōu)選為安裝有蘋果操作系統(tǒng)的蘋果手機。本發(fā)明的應(yīng)用測試包生成方法在生成的應(yīng)用測試包中增加了應(yīng)用數(shù)據(jù)鉤子插件以及鉤子功能插件,使得可在未越獄的蘋果手機系統(tǒng)上,對蘋果手機中的應(yīng)用測試包的測試數(shù)據(jù)進行讀取、展示以及修改操作,提高了應(yīng)用功能測試包的應(yīng)用測試效率,簡化了應(yīng)用測試流程。

請參照圖1,圖1為本發(fā)明的應(yīng)用測試包生成方法的第一優(yōu)選實施例的流程圖。本優(yōu)選實施例的應(yīng)用測試包生成方法可使用上述的電子設(shè)備進行實施,該應(yīng)用測試包生成方法包括:

步驟s101,基于測試數(shù)據(jù)對應(yīng)的應(yīng)用數(shù)據(jù)包中的數(shù)據(jù)出入口,生成用于獲取測試數(shù)據(jù)的應(yīng)用數(shù)據(jù)鉤子插件;

步驟s102,獲取應(yīng)用數(shù)據(jù)包的加載指令區(qū);

步驟s103,使用應(yīng)用數(shù)據(jù)鉤子插件以及應(yīng)用數(shù)據(jù)鉤子插件對應(yīng)的鉤子功能插件,對應(yīng)用數(shù)據(jù)包的加載指令區(qū)進行更新操作;

步驟s104,對更新后的應(yīng)用數(shù)據(jù)包進行簽名操作,以生成應(yīng)用測試包。

下面詳細說明本優(yōu)選實施例的應(yīng)用測試包生成方法的各步驟的具體流程。

在本優(yōu)選實施例中,應(yīng)用數(shù)據(jù)包為在對應(yīng)的蘋果手機上正常運行的應(yīng)用。本優(yōu)選實施例的應(yīng)用測試包生成裝置通過對應(yīng)用數(shù)據(jù)包上的檢測數(shù)據(jù)的分析,生成該應(yīng)用數(shù)據(jù)包對應(yīng)的應(yīng)用測試包,從而可通過應(yīng)用測試包對該應(yīng)用數(shù)據(jù)包進行數(shù)據(jù)測試操作。

在步驟s101中,應(yīng)用測試包生成裝置基于需要測試數(shù)據(jù)在應(yīng)用數(shù)據(jù)包中對應(yīng)的數(shù)據(jù)出入口,生成應(yīng)用數(shù)據(jù)鉤子插件,如wnshook.dylib插件等。其中該應(yīng)用數(shù)據(jù)鉤子插件可從應(yīng)用數(shù)據(jù)包的數(shù)據(jù)出入口獲取對應(yīng)的測試數(shù)據(jù)。隨后轉(zhuǎn)到步驟s102。

在步驟s102中,應(yīng)用測試包生成裝置獲取應(yīng)用數(shù)據(jù)包的加載指令區(qū),如應(yīng)用數(shù)據(jù)包中以二進制文件表示的loadcommands。這里的加載指令區(qū)是指應(yīng)用數(shù)據(jù)包運行時需要調(diào)用對應(yīng)的動態(tài)插件的存儲區(qū)域,該加載指令區(qū)中包含了該應(yīng)用數(shù)據(jù)包正常運行需要的所有插件。隨后轉(zhuǎn)到步驟s103。

在步驟s103中,由于應(yīng)用數(shù)據(jù)鉤子插件本身并沒有將應(yīng)用數(shù)據(jù)包中特定插件掛起的功能,應(yīng)用數(shù)據(jù)鉤子插件一般通過調(diào)用越獄測試動態(tài)庫(如cydiasubstrate動態(tài)庫等)中的其他功能插件(如libsubstrate.dylib插件等)來實現(xiàn)該應(yīng)用數(shù)據(jù)鉤子插件的數(shù)據(jù)獲取功能。這樣可以簡化應(yīng)用數(shù)據(jù)鉤子插件的結(jié)構(gòu)。

因此應(yīng)用測試包生成裝置根據(jù)步驟s101獲取的應(yīng)用數(shù)據(jù)鉤子插件,從越獄測試動態(tài)庫中獲取鉤子功能插件。

然后應(yīng)用測試包生成裝置根據(jù)步驟s101獲取的應(yīng)用數(shù)據(jù)鉤子插件以及對應(yīng)的鉤子功能插件,對步驟s102獲取的應(yīng)用數(shù)據(jù)包的加載指令區(qū)進行更新操作。具體的,應(yīng)用測試包生成裝置將應(yīng)用數(shù)據(jù)鉤子插件以及鉤子功能插件直接拷貝到加載指令區(qū)中,以在應(yīng)用測試包運行時,對應(yīng)用數(shù)據(jù)鉤子插件和鉤子功能插件進行加載操作。隨后轉(zhuǎn)到步驟104。

在步驟s104中,應(yīng)用測試包生成裝置對加載指令區(qū)中的插件已經(jīng)更新后的應(yīng)用數(shù)據(jù)包進行重簽名操作,從而生成對應(yīng)的應(yīng)用測試包。其中生成的應(yīng)用測試包的功能與應(yīng)用數(shù)據(jù)包的功能幾乎相同,但是應(yīng)用測試包可通過應(yīng)用數(shù)據(jù)鉤子插件和鉤子功能插件獲取測試數(shù)據(jù),從而測試人員可通過運行應(yīng)用測試包方便的對應(yīng)用數(shù)據(jù)包進行監(jiān)測數(shù)據(jù)的讀取、展示以及修改操作。

這樣即完成了本優(yōu)選實施例的應(yīng)用測試包生成方法的應(yīng)用測試包的生成過程。

本優(yōu)選實施例的應(yīng)用測試包生成方法通過在應(yīng)用測試包中增加應(yīng)用數(shù)據(jù)鉤子插件以及鉤子功能插件,使得外部終端可獲取到?jīng)]有越獄的蘋果手機中的應(yīng)用測試包的測試數(shù)據(jù),從而提高了應(yīng)用測試包的應(yīng)用測試效率,簡化了應(yīng)用測試流程。

請參照圖2,圖2為本發(fā)明的應(yīng)用測試包生成方法的第二優(yōu)選實施例的流程圖,本優(yōu)選實施例的應(yīng)用測試包生成方法可使用上述的電子設(shè)備進行實施,該應(yīng)用測試包生成方法包括:

步驟s201,基于測試數(shù)據(jù)對應(yīng)的應(yīng)用數(shù)據(jù)包中的數(shù)據(jù)出入口,生成用于獲取測試數(shù)據(jù)的應(yīng)用數(shù)據(jù)鉤子插件;

步驟s202,獲取應(yīng)用數(shù)據(jù)包的加載指令區(qū);

步驟s203,使用應(yīng)用數(shù)據(jù)鉤子插件以及應(yīng)用數(shù)據(jù)鉤子插件對應(yīng)的鉤子功能插件,對應(yīng)用數(shù)據(jù)包的加載指令區(qū)進行更新操作;

步驟s204,對更新后的應(yīng)用數(shù)據(jù)包進行簽名操作,以生成應(yīng)用測試包;

步驟s205,在應(yīng)用測試包運行時,從應(yīng)用測試包中對應(yīng)的數(shù)據(jù)出入口獲取測試數(shù)據(jù);

步驟s206,在其他終端對測試數(shù)據(jù)進行展示操作。

下面詳細說明本優(yōu)選實施例的應(yīng)用測試包生成方法的各步驟的具體流程。

本優(yōu)選實施例的應(yīng)用測試包生成方法的步驟s201至步驟s204的具體流程與應(yīng)用測試包生成方法的第一優(yōu)選實施例的步驟s101至步驟s104的具體流程相同或相似,具體請參見上述應(yīng)用測試包生成方法的第一優(yōu)選實施例中的相關(guān)描述。

在步驟s205中,步驟s204中生成的應(yīng)用測試包運行時,該應(yīng)用測試包生成裝置(即該應(yīng)用測試包的安裝終端)可通過應(yīng)用數(shù)據(jù)鉤子插件調(diào)用鉤子功能插件,進而從應(yīng)用測試包中對應(yīng)的數(shù)據(jù)出入口獲取測試數(shù)據(jù)。

隨后應(yīng)用測試包生成裝置可將獲取的測試數(shù)據(jù)通過有線網(wǎng)絡(luò)或無線網(wǎng)絡(luò)傳輸至其他終端,如其他移動終端、其他固定終端或其他服務(wù)器端等。隨后轉(zhuǎn)到步驟s206。

在步驟s206中,其他終端對步驟s205接收到的測試數(shù)據(jù)進行展示操作以及存儲操作,以便測試人員及時了解應(yīng)用測試包的測試情況。

這樣即完成了本優(yōu)選實施例的應(yīng)用測試包的測試數(shù)據(jù)展示過程。

在第一優(yōu)選實施例的基礎(chǔ)上,本優(yōu)選實施例的應(yīng)用測試包生成方法可使用其他終端對測試數(shù)據(jù)進行展示和存儲操作,從而進一步提高了應(yīng)用測試包的應(yīng)用測試效率。

請參照圖3,圖3為本發(fā)明的應(yīng)用測試包生成方法的第三優(yōu)選實施例的流程圖,本優(yōu)選實施例的應(yīng)用測試包生成方法可使用上述的電子設(shè)備進行實施,該應(yīng)用測試包生成方法包括:

步驟s301,基于測試數(shù)據(jù)對應(yīng)的應(yīng)用數(shù)據(jù)包中的數(shù)據(jù)出入口,生成用于獲取測試數(shù)據(jù)的應(yīng)用數(shù)據(jù)鉤子插件;

步驟s302,獲取應(yīng)用數(shù)據(jù)包的加載指令區(qū);

步驟s303,使用應(yīng)用數(shù)據(jù)鉤子插件以及應(yīng)用數(shù)據(jù)鉤子插件對應(yīng)的鉤子功能插件,對應(yīng)用數(shù)據(jù)包的加載指令區(qū)進行更新操作;

步驟s304,對更新后的應(yīng)用數(shù)據(jù)包進行簽名操作,以生成應(yīng)用測試包;

步驟s305,在應(yīng)用測試包運行時,從應(yīng)用測試包中對應(yīng)的數(shù)據(jù)出入口獲取測試數(shù)據(jù);

步驟s306,在其他終端對測試數(shù)據(jù)進行修改操作;

步驟s307,將修改后的測試數(shù)據(jù)返回至應(yīng)用測試包中對應(yīng)的數(shù)據(jù)出入口。

下面詳細說明本優(yōu)選實施例的應(yīng)用測試包生成方法的各步驟的具體流程。

本優(yōu)選實施例的應(yīng)用測試包生成方法的步驟s301至步驟s304的具體流程與應(yīng)用測試包生成方法的第一優(yōu)選實施例的步驟s101至步驟s104的具體流程相同或相似,具體請參見上述應(yīng)用測試包生成方法的第一優(yōu)選實施例中的相關(guān)描述。

在步驟s305中,步驟s304中生成的應(yīng)用測試包運行時,該應(yīng)用測試包生成裝置(即該應(yīng)用測試包的安裝終端)可通過應(yīng)用數(shù)據(jù)鉤子插件調(diào)用鉤子功能插件,進而從應(yīng)用測試包中對應(yīng)的數(shù)據(jù)出入口獲取測試數(shù)據(jù)。

隨后應(yīng)用測試包生成裝置可將獲取的測試數(shù)據(jù)通過有線網(wǎng)絡(luò)或無線網(wǎng)絡(luò)傳輸至其他終端,如其他移動終端、其他固定終端或其他服務(wù)器端等。隨后轉(zhuǎn)到步驟s306。

在步驟s306中,其他終端對步驟s205接收到的測試數(shù)據(jù)進行展示、存儲以及修改操作,以便測試人員及時了解應(yīng)用測試包的測試情況,并且測試人員可以實時對測試數(shù)據(jù)進行修改操作。

隨后其他終端將修改后的測試數(shù)據(jù)發(fā)送至應(yīng)用測試包生成裝置。隨后轉(zhuǎn)到步驟s307。

在步驟s307中,應(yīng)用測試包生成裝置接收到修改后的測試數(shù)據(jù),并通過應(yīng)用數(shù)據(jù)鉤子插件將修改后的測試數(shù)據(jù)返回到應(yīng)用測試包中對應(yīng)的數(shù)據(jù)出入口。

這樣即完成了本優(yōu)選實施例的應(yīng)用測試包的測試數(shù)據(jù)修改過程。

在第一優(yōu)選實施例的基礎(chǔ)上,本優(yōu)選實施例的應(yīng)用測試包生成方法可使用其他終端對測試數(shù)據(jù)進行修改操作,從而進一步簡化的應(yīng)用測試包的測試流程。

本發(fā)明還提供一種應(yīng)用測試包生成裝置,請參照圖4,圖4為本發(fā)明的應(yīng)用測試包生成裝置的第一優(yōu)選實施例的結(jié)構(gòu)示意圖。本優(yōu)選實施例的應(yīng)用測試包生成裝置可使用應(yīng)用測試包生成方法的第一優(yōu)選實施例進行實施,其中的應(yīng)用測試包用于對相應(yīng)的應(yīng)用數(shù)據(jù)包進行數(shù)據(jù)測試操作。本優(yōu)選實施例的應(yīng)用測試包生成裝置40包括鉤子插件生成模塊41、加載指令區(qū)獲取模塊42、加載指令區(qū)更新模塊43、應(yīng)用測試包生成模塊44以及鉤子功能插件獲取模塊45。

鉤子插件生成模塊41用于基于測試數(shù)據(jù)對應(yīng)的應(yīng)用數(shù)據(jù)包中的數(shù)據(jù)出入口,生成用于獲取測試數(shù)據(jù)的應(yīng)用數(shù)據(jù)鉤子插件;加載指令區(qū)獲取模塊42用于獲取應(yīng)用數(shù)據(jù)包的加載指令區(qū);加載指令區(qū)更新模塊43用于使用應(yīng)用數(shù)據(jù)鉤子插件以及應(yīng)用數(shù)據(jù)鉤子插件對應(yīng)的鉤子功能插件,對應(yīng)用數(shù)據(jù)包的加載指令區(qū)進行更新操作;應(yīng)用測試包生成模塊44用于對更新后的應(yīng)用數(shù)據(jù)包進行簽名操作,以生成應(yīng)用測試包;鉤子功能插件獲取模塊45用于根據(jù)應(yīng)用數(shù)據(jù)鉤子插件,從越獄測試動態(tài)庫獲取鉤子功能插件。

在本優(yōu)選實施例中,應(yīng)用數(shù)據(jù)包為在對應(yīng)的蘋果手機上正常運行的應(yīng)用。本優(yōu)選實施例的應(yīng)用測試包生成裝置40通過對應(yīng)用數(shù)據(jù)包上的檢測數(shù)據(jù)的分析,生成該應(yīng)用數(shù)據(jù)包對應(yīng)的應(yīng)用測試包,從而可通過應(yīng)用測試包對該應(yīng)用數(shù)據(jù)包進行數(shù)據(jù)測試操作。

本優(yōu)選實施例的應(yīng)用測試包生成裝置40使用時,首先鉤子插件生成模塊41基于需要測試數(shù)據(jù)在應(yīng)用數(shù)據(jù)包中對應(yīng)的數(shù)據(jù)出入口,生成應(yīng)用數(shù)據(jù)鉤子插件,如wnshook.dylib插件等。其中該應(yīng)用數(shù)據(jù)鉤子插件可從應(yīng)用數(shù)據(jù)包的數(shù)據(jù)出入口獲取對應(yīng)的測試數(shù)據(jù)。

隨后加載指令區(qū)獲取模塊42獲取應(yīng)用數(shù)據(jù)包的加載指令區(qū),如應(yīng)用數(shù)據(jù)包中以二進制文件表示的loadcommands。這里的加載指令區(qū)是指應(yīng)用數(shù)據(jù)包運行時需要調(diào)用對應(yīng)的動態(tài)插件的存儲區(qū)域,該加載指令區(qū)中包含了該應(yīng)用數(shù)據(jù)包正常運行需要的所有插件。

由于應(yīng)用數(shù)據(jù)鉤子插件本身并沒有將應(yīng)用數(shù)據(jù)包中特定插件掛起的功能,應(yīng)用數(shù)據(jù)鉤子插件一般通過調(diào)用越獄測試動態(tài)庫(如cydiasubstrate動態(tài)庫等)中的其他功能插件(如libsubstrate.dylib插件等)來實現(xiàn)該應(yīng)用數(shù)據(jù)鉤子插件的數(shù)據(jù)獲取功能。這樣可以簡化應(yīng)用數(shù)據(jù)鉤子插件的結(jié)構(gòu)。

因此鉤子功能插件獲取模塊45根據(jù)鉤子插件生成模塊獲取的應(yīng)用數(shù)據(jù)鉤子插件,從越獄測試動態(tài)庫中獲取鉤子功能插件。

然后加載指令區(qū)更新模塊43根據(jù)鉤子插件生成模塊41獲取的應(yīng)用數(shù)據(jù)鉤子插件以及對應(yīng)的鉤子功能插件,對加載指令區(qū)獲取模塊42獲取的應(yīng)用數(shù)據(jù)包的加載指令區(qū)進行更新操作。具體的,加載指令區(qū)更新模塊43將應(yīng)用數(shù)據(jù)鉤子插件以及鉤子功能插件直接拷貝到加載指令區(qū)中,以在應(yīng)用測試包運行時,對應(yīng)用數(shù)據(jù)鉤子插件和鉤子功能插件進行加載操作。

最后應(yīng)用測試包生成模塊44對加載指令區(qū)中的插件已經(jīng)更新后的應(yīng)用數(shù)據(jù)包進行重簽名操作,從而生成對應(yīng)的應(yīng)用測試包。其中生成的應(yīng)用測試包的功能與應(yīng)用數(shù)據(jù)包的功能幾乎相同,但是應(yīng)用測試包可通過應(yīng)用數(shù)據(jù)鉤子插件和鉤子功能插件獲取測試數(shù)據(jù),從而測試人員可通過運行應(yīng)用測試包方便的對應(yīng)用數(shù)據(jù)包進行監(jiān)測數(shù)據(jù)的讀取、展示以及修改操作。

這樣即完成了本優(yōu)選實施例的應(yīng)用測試包生成裝置40的應(yīng)用測試包的生成過程。

本優(yōu)選實施例的應(yīng)用測試包生成裝置通過在應(yīng)用測試包中增加應(yīng)用數(shù)據(jù)鉤子插件以及鉤子功能插件,使得外部終端可獲取到?jīng)]有越獄的蘋果手機中的應(yīng)用測試包的測試數(shù)據(jù),從而提高了應(yīng)用測試包的應(yīng)用測試效率,簡化了應(yīng)用測試流程。

請參照圖5,圖5為本發(fā)明的應(yīng)用測試包生成裝置的第二優(yōu)選實施例的結(jié)構(gòu)示意圖。本優(yōu)選實施例的應(yīng)用測試包生成裝置可使用應(yīng)用測試包生成方法的第二優(yōu)選實施例進行實施,其中的應(yīng)用測試包用于對相應(yīng)的應(yīng)用數(shù)據(jù)包進行數(shù)據(jù)測試操作。本優(yōu)選實施例的應(yīng)用測試包生成裝置50包括鉤子插件生成模塊51、加載指令區(qū)獲取模塊52、加載指令區(qū)更新模塊53、應(yīng)用測試包生成模塊54、鉤子功能插件獲取模塊55以及測試數(shù)據(jù)獲取模塊56。

在第一優(yōu)選實施例的基礎(chǔ)上,本優(yōu)選實施例的應(yīng)用測試包生成裝置50還包括測試數(shù)據(jù)獲取模塊56。測試數(shù)據(jù)獲取模塊56用于在應(yīng)用測試包運行時,從應(yīng)用測試包中對應(yīng)的數(shù)據(jù)出入口獲取測試數(shù)據(jù);其中測試數(shù)據(jù)在其他終端進行展示操作。

本優(yōu)選實施例的應(yīng)用測試包生成裝置50使用時,首先鉤子插件生成模塊51基于需要測試數(shù)據(jù)在應(yīng)用數(shù)據(jù)包中對應(yīng)的數(shù)據(jù)出入口,生成應(yīng)用數(shù)據(jù)鉤子插件。

隨后加載指令區(qū)獲取模塊52獲取應(yīng)用數(shù)據(jù)包的加載指令區(qū),鉤子功能插件獲取模塊55根據(jù)鉤子插件生成模塊獲取的應(yīng)用數(shù)據(jù)鉤子插件,從越獄測試動態(tài)庫中獲取鉤子功能插件。

然后加載指令區(qū)更新模塊53根據(jù)鉤子插件生成模塊51獲取的應(yīng)用數(shù)據(jù)鉤子插件以及對應(yīng)的鉤子功能插件,對加載指令區(qū)獲取模塊獲取的應(yīng)用數(shù)據(jù)包的加載指令區(qū)進行更新操作。

隨后應(yīng)用測試包生成模塊54對加載指令區(qū)中的插件已經(jīng)更新后的應(yīng)用數(shù)據(jù)包進行重簽名操作,從而生成對應(yīng)的應(yīng)用測試包。

生成的應(yīng)用測試包運行時,測試數(shù)據(jù)獲取模塊56可通過應(yīng)用數(shù)據(jù)鉤子插件調(diào)用鉤子功能插件,進而從應(yīng)用測試包中對應(yīng)的數(shù)據(jù)出入口獲取測試數(shù)據(jù)。

隨后測試數(shù)據(jù)獲取模塊56可將獲取的測試數(shù)據(jù)通過有線網(wǎng)絡(luò)或無線網(wǎng)絡(luò)傳輸至其他終端,如其他移動終端、其他固定終端或其他服務(wù)器端等。

最后其他終端對接收到的測試數(shù)據(jù)進行展示操作以及存儲操作,以便測試人員及時了解應(yīng)用測試包的測試情況。

這樣即完成了本優(yōu)選實施例的應(yīng)用測試包的測試數(shù)據(jù)展示過程。

在第一優(yōu)選實施例的基礎(chǔ)上,本優(yōu)選實施例的應(yīng)用測試包生成裝置可使用其他終端對測試數(shù)據(jù)進行展示和存儲操作,從而進一步提高了應(yīng)用測試包的應(yīng)用測試效率。

請參照圖6,圖6為本發(fā)明的應(yīng)用測試包生成裝置的第三優(yōu)選實施例的結(jié)構(gòu)示意圖。本優(yōu)選實施例的應(yīng)用測試包生成裝置可使用應(yīng)用測試包生成方法的第三優(yōu)選實施例進行實施,其中的應(yīng)用測試包用于對相應(yīng)的應(yīng)用數(shù)據(jù)包進行數(shù)據(jù)測試操作。本優(yōu)選實施例的應(yīng)用測試包生成裝置60包括鉤子插件生成模塊61、加載指令區(qū)獲取模塊62、加載指令區(qū)更新模塊63、應(yīng)用測試包生成模塊64、鉤子功能插件獲取模塊65、測試數(shù)據(jù)獲取模塊66以及測試數(shù)據(jù)返回模塊67。

在第一優(yōu)選實施例的基礎(chǔ)上,本優(yōu)選實施例的應(yīng)用測試包生成裝置60還包括測試數(shù)據(jù)獲取模塊66以及測試數(shù)據(jù)返回模塊67。測試數(shù)據(jù)獲取模塊66用于在應(yīng)用測試包運行時,從應(yīng)用測試包中對應(yīng)的數(shù)據(jù)出入口獲取測試數(shù)據(jù);其中測試數(shù)據(jù)在其他終端進行展示操作;測試數(shù)據(jù)返回模塊67用于將修改后的測試數(shù)據(jù)返回至應(yīng)用測試包中對應(yīng)的數(shù)據(jù)出入口。

本優(yōu)選實施例的應(yīng)用測試包生成裝置60使用時,首先鉤子插件生成模塊61基于需要測試數(shù)據(jù)在應(yīng)用數(shù)據(jù)包中對應(yīng)的數(shù)據(jù)出入口,生成應(yīng)用數(shù)據(jù)鉤子插件。

隨后加載指令區(qū)獲取模塊62獲取應(yīng)用數(shù)據(jù)包的加載指令區(qū),鉤子功能插件獲取模塊65根據(jù)鉤子插件生成模塊獲取的應(yīng)用數(shù)據(jù)鉤子插件,從越獄測試動態(tài)庫中獲取鉤子功能插件。

然后加載指令區(qū)更新模塊63根據(jù)鉤子插件生成模塊61獲取的應(yīng)用數(shù)據(jù)鉤子插件以及對應(yīng)的鉤子功能插件,對加載指令區(qū)獲取模塊獲取的應(yīng)用數(shù)據(jù)包的加載指令區(qū)進行更新操作。

隨后應(yīng)用測試包生成模塊64對加載指令區(qū)中的插件已經(jīng)更新后的應(yīng)用數(shù)據(jù)包進行重簽名操作,從而生成對應(yīng)的應(yīng)用測試包。

生成的應(yīng)用測試包運行時,測試數(shù)據(jù)獲取模塊66可通過應(yīng)用數(shù)據(jù)鉤子插件調(diào)用鉤子功能插件,進而從應(yīng)用測試包中對應(yīng)的數(shù)據(jù)出入口獲取測試數(shù)據(jù)。

隨后測試數(shù)據(jù)獲取模塊66可將獲取的測試數(shù)據(jù)通過有線網(wǎng)絡(luò)或無線網(wǎng)絡(luò)傳輸至其他終端,如其他移動終端、其他固定終端或其他服務(wù)器端等。

其他終端對接收到的測試數(shù)據(jù)進行展示、存儲以及修改操作,以便測試人員及時了解應(yīng)用測試包的測試情況,并且實時可以對測試數(shù)據(jù)進行修改操作。

隨后其他終端將修改后的測試數(shù)據(jù)發(fā)送至測試數(shù)據(jù)返回模塊67。

最后測試數(shù)據(jù)返回模塊67接收到修改后的測試數(shù)據(jù),并通過應(yīng)用數(shù)據(jù)鉤子插件將修改后的測試數(shù)據(jù)返回到應(yīng)用測試包中對應(yīng)的數(shù)據(jù)出入口。

這樣即完成了本優(yōu)選實施例的應(yīng)用測試包的測試數(shù)據(jù)修改過程。

在第一優(yōu)選實施例的基礎(chǔ)上,本優(yōu)選實施例的應(yīng)用測試包生成裝置可使用其他終端對測試數(shù)據(jù)進行修改操作,從而進一步簡化的應(yīng)用測試包的測試流程。

下面通過一具體實施例說明本發(fā)明的應(yīng)用測試包生成方法及應(yīng)用測試包生成裝置的具體工作原理。請參照圖7,圖7為本發(fā)明的應(yīng)用測試包生成方法及應(yīng)用測試包生成裝置的應(yīng)用測試包生成流程圖。本具體實施例的應(yīng)用測試包生成方法及生成裝置可設(shè)置在各種安裝有蘋果操作系統(tǒng)的蘋果手機中,該蘋果手機可通過在應(yīng)用測試包增加應(yīng)用數(shù)據(jù)鉤子插件以及鉤子功能插件,實現(xiàn)使用其他終端對應(yīng)用測試包的測試數(shù)據(jù)進行讀取、展示以及修改操作。

這里越獄測試動態(tài)庫為cydiasubstrate動態(tài)庫,該越獄測試動態(tài)庫的主要功能是掛起應(yīng)用測試包的某個功能插件,以便對該功能插件的收發(fā)數(shù)據(jù)進行查看以及修改。

蘋果手機可在設(shè)備的/library/mobilesubstrate/dynamiclibraries目錄下存儲對應(yīng)的測試數(shù)據(jù)包的加載指令區(qū),該加載指令區(qū)中包含有dylib類型文件、plist類型文件以及bundle類型文件,其中dylib類型文件即為加載指令區(qū)中存儲的功能插件;plist類型文件可用來標識對應(yīng)的功能插件的作用范圍,bundle類型文件是用來標識功能插件需要調(diào)用的資源文件。

該應(yīng)用測試包的生成以及測試數(shù)據(jù)的讀取、展示、修改的流程包括:

步驟s701,應(yīng)用測試包生成裝置(設(shè)置在蘋果手機內(nèi))基于測試數(shù)據(jù)在應(yīng)用數(shù)據(jù)包中對應(yīng)的數(shù)據(jù)出入口,生成應(yīng)用數(shù)據(jù)鉤子插件wnshook.dylib。該應(yīng)用數(shù)據(jù)鉤子插件可完成從對應(yīng)的應(yīng)用測試包的數(shù)據(jù)出入口獲取對應(yīng)的測試數(shù)據(jù)。

步驟s702,應(yīng)用測試包生成裝置獲取二進制文件表示的應(yīng)用數(shù)據(jù)包的加載指令區(qū)loadcommands。

步驟s703,應(yīng)用測試包生成裝置從cydiasubstrate動態(tài)庫中獲取可將應(yīng)用數(shù)據(jù)包中特定插件掛起的鉤子功能插件,如libsubstrate.dylib插件。

步驟s704,應(yīng)用測試包生成裝置使用編譯工具install_name_tool將應(yīng)用數(shù)據(jù)鉤子插件wnshook.dylib以及鉤子功能插件libsubstrate.dylib拷貝到應(yīng)用數(shù)據(jù)包的加載指令區(qū)loadcommands。

步驟s705,應(yīng)用測試包生成裝置使用編譯工具insert_dylib將更新后的應(yīng)用數(shù)據(jù)包的加載指令區(qū)loadcommands注入到應(yīng)用測試包中,并對應(yīng)用測試包進行重簽名操作,從而生成對應(yīng)的應(yīng)用測試包。

步驟s706,在應(yīng)用測試包運行時,如應(yīng)用測試包生成裝置通過應(yīng)用數(shù)據(jù)鉤子插件wnshook.dylib調(diào)用鉤子功能插件libsubstrate.dylib從應(yīng)用測試包中對應(yīng)的數(shù)據(jù)出入口獲取到測試數(shù)據(jù),則可把該測試數(shù)據(jù)通過插件libmobiledevice傳輸至其他終端進行展示以及存儲操作。這里的其他終端可為其他移動終端、其他固定終端或其他服務(wù)器端等。

這時測試人員在其他終端還可根據(jù)需要對測試數(shù)據(jù)進行修改操作,并將修改后的數(shù)據(jù)返回至應(yīng)用測試包生成裝置。

步驟s707,應(yīng)用測試包生成裝置接收到修改后的測試數(shù)據(jù),并通過應(yīng)用數(shù)據(jù)鉤子插件wnshook.dylib將修改后的測試數(shù)據(jù)返回到應(yīng)用測試包中對應(yīng)的數(shù)據(jù)出入口,以實現(xiàn)對應(yīng)用測試包中測試數(shù)據(jù)的修改操作。

這樣即完成了本具體實施例的應(yīng)用測試包生成方法及應(yīng)用測試包生成裝置的應(yīng)用測試包生成以及應(yīng)用測試包的測試數(shù)據(jù)進行讀取、展示以及修改過程。

本發(fā)明的應(yīng)用測試包生成方法及應(yīng)用測試包生成裝置通過在應(yīng)用測試包中增加應(yīng)用數(shù)據(jù)鉤子插件以及鉤子功能插件,使得外部終端可獲取到?jīng)]有越獄的蘋果手機中的應(yīng)用測試包的測試數(shù)據(jù),從而提高了應(yīng)用測試包的應(yīng)用測試效率,簡化了應(yīng)用測試流程;解決了現(xiàn)有的蘋果手機的應(yīng)用測試包的測試效率較低且測試流程較為繁瑣的技術(shù)問題。

如本申請所使用的術(shù)語“組件”、“模塊”、“系統(tǒng)”、“接口”、“進程”等等一般地旨在指計算機相關(guān)實體:硬件、硬件和軟件的組合、軟件或執(zhí)行中的軟件。例如,組件可以是但不限于是運行在處理器上的進程、處理器、對象、可執(zhí)行應(yīng)用、執(zhí)行的線程、程序和/或計算機。通過圖示,運行在控制器上的應(yīng)用和該控制器二者都可以是組件。一個或多個組件可以有在于執(zhí)行的進程和/或線程內(nèi),并且組件可以位于一個計算機上和/或分布在兩個或更多計算機之間。

圖8和隨后的討論提供了對實現(xiàn)本發(fā)明所述的應(yīng)用測試包生成裝置所在的電子設(shè)備的工作環(huán)境的簡短、概括的描述。圖8的工作環(huán)境僅僅是適當?shù)墓ぷ鳝h(huán)境的一個實例并且不旨在建議關(guān)于工作環(huán)境的用途或功能的范圍的任何限制。實例電子設(shè)備812包括但不限于可穿戴設(shè)備、頭戴設(shè)備、醫(yī)療健康平臺、個人計算機、服務(wù)器計算機、手持式或膝上型設(shè)備、移動設(shè)備(比如移動電話、個人數(shù)字助理(pda)、媒體播放器等等)、多處理器系統(tǒng)、消費型電子設(shè)備、小型計算機、大型計算機、包括上述任意系統(tǒng)或設(shè)備的分布式計算環(huán)境,等等。

盡管沒有要求,但是在“計算機可讀指令”被一個或多個電子設(shè)備執(zhí)行的通用背景下描述實施例。計算機可讀指令可以經(jīng)由計算機可讀介質(zhì)來分布(下文討論)。計算機可讀指令可以實現(xiàn)為程序模塊,比如執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的功能、對象、應(yīng)用編程接口(api)、數(shù)據(jù)結(jié)構(gòu)等等。典型地,該計算機可讀指令的功能可以在各種環(huán)境中隨意組合或分布。

圖8圖示了包括本發(fā)明的應(yīng)用測試包生成裝置中的一個或多個實施例的電子設(shè)備812的實例。在一種配置中,電子設(shè)備812包括至少一個處理單元816和存儲器818。根據(jù)電子設(shè)備的確切配置和類型,存儲器818可以是易失性的(比如ram)、非易失性的(比如rom、閃存等)或二者的某種組合。該配置在圖8中由虛線814圖示。

在其他實施例中,電子設(shè)備812可以包括附加特征和/或功能。例如,設(shè)備812還可以包括附加的存儲裝置(例如可移除和/或不可移除的),其包括但不限于磁存儲裝置、光存儲裝置等等。這種附加存儲裝置在圖8中由存儲裝置820圖示。在一個實施例中,用于實現(xiàn)本文所提供的一個或多個實施例的計算機可讀指令可以在存儲裝置820中。存儲裝置820還可以存儲用于實現(xiàn)操作系統(tǒng)、應(yīng)用程序等的其他計算機可讀指令。計算機可讀指令可以載入存儲器818中由例如處理單元816執(zhí)行。

本文所使用的術(shù)語“計算機可讀介質(zhì)”包括計算機存儲介質(zhì)。計算機存儲介質(zhì)包括以用于存儲諸如計算機可讀指令或其他數(shù)據(jù)之類的信息的任何方法或技術(shù)實現(xiàn)的易失性和非易失性、可移除和不可移除介質(zhì)。存儲器818和存儲裝置820是計算機存儲介質(zhì)的實例。計算機存儲介質(zhì)包括但不限于ram、rom、eeprom、閃存或其他存儲器技術(shù)、cd-rom、數(shù)字通用盤(dvd)或其他光存儲裝置、盒式磁帶、磁帶、磁盤存儲裝置或其他磁存儲設(shè)備、或可以用于存儲期望信息并可以被電子設(shè)備812訪問的任何其他介質(zhì)。任意這樣的計算機存儲介質(zhì)可以是電子設(shè)備812的一部分。

電子設(shè)備812還可以包括允許電子設(shè)備812與其他設(shè)備通信的通信連接826。通信連接826可以包括但不限于調(diào)制解調(diào)器、網(wǎng)絡(luò)接口卡(nic)、集成網(wǎng)絡(luò)接口、射頻發(fā)射器/接收器、紅外端口、usb連接或用于將電子設(shè)備812連接到其他電子設(shè)備的其他接口。通信連接826可以包括有線連接或無線連接。通信連接826可以發(fā)射和/或接收通信媒體。

術(shù)語“計算機可讀介質(zhì)”可以包括通信介質(zhì)。通信介質(zhì)典型地包含計算機可讀指令或諸如載波或其他傳輸機構(gòu)之類的“己調(diào)制數(shù)據(jù)信號”中的其他數(shù)據(jù),并且包括任何信息遞送介質(zhì)。術(shù)語“己調(diào)制數(shù)據(jù)信號”可以包括這樣的信號:該信號特性中的一個或多個按照將信息編碼到信號中的方式來設(shè)置或改變。

電子設(shè)備812可以包括輸入設(shè)備824,比如鍵盤、鼠標、筆、語音輸入設(shè)備、觸摸輸入設(shè)備、紅外相機、視頻輸入設(shè)備和/或任何其他輸入設(shè)備。設(shè)備812中也可以包括輸出設(shè)備822,比如一個或多個顯示器、揚聲器、打印機和/或任意其他輸出設(shè)備。輸入設(shè)備824和輸出設(shè)備822可以經(jīng)由有線連接、無線連接或其任意組合連接到電子設(shè)備812。在一個實施例中,來自另一個電子設(shè)備的輸入設(shè)備或輸出設(shè)備可以被用作電子設(shè)備812的輸入設(shè)備824或輸出設(shè)備822。

電子設(shè)備812的組件可以通過各種互連(比如總線)連接。這樣的互連可以包括外圍組件互連(pci)(比如快速pci)、通用串行總線(usb)、火線(ieee1394)、光學(xué)總線結(jié)構(gòu)等等。在另一個實施例中,電子設(shè)備812的組件可以通過網(wǎng)絡(luò)互連。例如,存儲器818可以由位于不同物理位置中的、通過網(wǎng)絡(luò)互連的多個物理存儲器單元構(gòu)成。

本領(lǐng)域技術(shù)人員將認識到,用于存儲計算機可讀指令的存儲設(shè)備可以跨越網(wǎng)絡(luò)分布。例如,可經(jīng)由網(wǎng)絡(luò)828訪問的電子設(shè)備830可以存儲用于實現(xiàn)本發(fā)明所提供的一個或多個實施例的計算機可讀指令。電子設(shè)備812可以訪問電子設(shè)備830并且下載計算機可讀指令的一部分或所有以供執(zhí)行??商娲兀娮釉O(shè)備812可以按需要下載多條計算機可讀指令,或者一些指令可以在電子設(shè)備812處執(zhí)行并且一些指令可以在電子設(shè)備830處執(zhí)行。

本文提供了實施例的各種操作。在一個實施例中,所述的一個或多個操作可以構(gòu)成一個或多個計算機可讀介質(zhì)上存儲的計算機可讀指令,其在被電子設(shè)備執(zhí)行時將使得計算設(shè)備執(zhí)行所述操作。描述一些或所有操作的順序不應(yīng)當被解釋為暗示這些操作必需是順序相關(guān)的。本領(lǐng)域技術(shù)人員將理解具有本說明書的益處的可替代的排序。而且,應(yīng)當理解,不是所有操作必需在本文所提供的每個實施例中存在。

而且,盡管已經(jīng)相對于一個或多個實現(xiàn)方式示出并描述了本公開,但是本領(lǐng)域技術(shù)人員基于對本說明書和附圖的閱讀和理解將會想到等價變型和修改。本公開包括所有這樣的修改和變型,并且僅由所附權(quán)利要求的范圍限制。特別地關(guān)于由上述組件(例如元件、資源等)執(zhí)行的各種功能,用于描述這樣的組件的術(shù)語旨在對應(yīng)于執(zhí)行所述組件的指定功能(例如其在功能上是等價的)的任意組件(除非另外指示),即使在結(jié)構(gòu)上與執(zhí)行本文所示的本公開的示范性實現(xiàn)方式中的功能的公開結(jié)構(gòu)不等同。此外,盡管本公開的特定特征已經(jīng)相對于若干實現(xiàn)方式中的僅一個被公開,但是這種特征可以與如可以對給定或特定應(yīng)用而言是期望和有利的其他實現(xiàn)方式的一個或多個其他特征組合。而且,就術(shù)語“包括”、“具有”、“含有”或其變形被用在具體實施方式或權(quán)利要求中而言,這樣的術(shù)語旨在以與術(shù)語“包含”相似的方式包括。

本發(fā)明實施例中的各功能單元可以集成在一個處理模塊中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個模塊中。上述集成的模塊既可以采用硬件的形式實現(xiàn),也可以采用軟件功能模塊的形式實現(xiàn)。所述集成的模塊如果以軟件功能模塊的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,也可以存儲在一個計算機可讀取存儲介質(zhì)中。上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。上述的各裝置或系統(tǒng),可以執(zhí)行相應(yīng)方法實施例中的方法。

綜上所述,雖然本發(fā)明已以實施例揭露如上,實施例前的序號僅為描述方便而使用,對本發(fā)明各實施例的順序不造成限制。并且,上述實施例并非用以限制本發(fā)明,本領(lǐng)域的普通技術(shù)人員,在不脫離本發(fā)明的精神和范圍內(nèi),均可作各種更動與潤飾,因此本發(fā)明的保護范圍以權(quán)利要求界定的范圍為準。

當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
崇左市| 太仆寺旗| 铜陵市| 湟源县| 鹿邑县| 万山特区| 昭苏县| 迁安市| 石河子市| 探索| 松桃| 兴宁市| 岱山县| 乌鲁木齐县| 神池县| 秦安县| 金湖县| 合川市| 襄樊市| 酉阳| 龙井市| 康马县| 南开区| 墨玉县| 文水县| 远安县| 三亚市| 竹溪县| 都安| 双鸭山市| 兴城市| 台江县| 南皮县| 云梦县| 祁阳县| 彭泽县| 满洲里市| 南川市| 乌审旗| 剑川县| 崇明县|