本公開涉及軟件開發(fā)技術(shù)領(lǐng)域,特別涉及一種搜索文件生成方法及裝置。
背景技術(shù):
設(shè)置功能是Android等移動(dòng)操作系統(tǒng)中基礎(chǔ)的功能之一,用戶可以通過終端的系統(tǒng)提供的設(shè)置功能對(duì)終端進(jìn)行設(shè)置。
很多操作系統(tǒng)的設(shè)置功能都提供了搜索入口,以便用戶快捷查找某個(gè)設(shè)置項(xiàng)。目前,設(shè)置功能中的搜索功能所使用的搜索文件由操作系統(tǒng)的開發(fā)人員維護(hù)和更新,即開發(fā)人員整理操作系統(tǒng)的設(shè)置功能中的各個(gè)設(shè)置項(xiàng)對(duì)應(yīng)的搜索資源,并將搜索資源添加入搜索文件。
技術(shù)實(shí)現(xiàn)要素:
本公開實(shí)施例提供了一種搜索文件生成方法及裝置,技術(shù)方案如下:
第一方面,提供了一種搜索文件生成方法,所述方法包括:
搜索文件生成方法,其特征在于,所述方法包括:
獲取操作系統(tǒng)中的設(shè)置功能的第一級(jí)頁面的項(xiàng)目信息,所述項(xiàng)目信息包含對(duì)應(yīng)頁面中的各個(gè)設(shè)置項(xiàng)的搜索資源,所述搜索資源至少包括跳轉(zhuǎn)信息和路徑,所述跳轉(zhuǎn)信息中包含對(duì)應(yīng)的源文件的類名;
確定操作系統(tǒng)中的各個(gè)資源文件;
根據(jù)所述第一級(jí)頁面中的各個(gè)設(shè)置項(xiàng)的跳轉(zhuǎn)信息和路徑,以及所述各個(gè)資源文件,逐級(jí)確定所述設(shè)置功能中各級(jí)頁面的項(xiàng)目信息;
根據(jù)所述各級(jí)頁面的項(xiàng)目信息生成所述設(shè)置功能的搜索文件。
可選的,所述根據(jù)所述第一級(jí)頁面中的各個(gè)設(shè)置項(xiàng)的跳轉(zhuǎn)信息和路徑,以及所述各個(gè)資源文件,逐級(jí)確定所述設(shè)置功能中各級(jí)頁面的項(xiàng)目信息,包括:
以所述第一級(jí)頁面中的各個(gè)設(shè)置項(xiàng)的搜索資源為初始的已確定資源,循環(huán)遍歷所述各個(gè)資源文件中的每一個(gè)資源文件,獲取所述資源文件的跳轉(zhuǎn)信息;
當(dāng)所述已確定資源中包含所述資源文件中的各個(gè)設(shè)置項(xiàng)對(duì)應(yīng)在所述設(shè)置功能中的上一級(jí)設(shè)置項(xiàng)的搜索資源時(shí),根據(jù)所述上一級(jí)設(shè)置項(xiàng)的路徑生成所述資源文件中的各個(gè)設(shè)置項(xiàng)的路徑;
根據(jù)所述資源文件中的各個(gè)設(shè)置項(xiàng)的路徑以及所述資源文件的跳轉(zhuǎn)信息,生成所述資源文件中的各個(gè)設(shè)置項(xiàng)的搜索資源;
將所述資源文件中的各個(gè)設(shè)置項(xiàng)的搜索資源添加入所述已確定資源。
可選的,所述獲取所述資源文件的跳轉(zhuǎn)信息,包括:
判斷所述資源文件中是否包含所述資源文件的跳轉(zhuǎn)信息;
若判斷結(jié)果為所述資源文件中包含所述資源文件的跳轉(zhuǎn)信息,則從所述資源文件中獲取所述資源文件的跳轉(zhuǎn)信息;
若判斷結(jié)果為所述資源文件中不包含所述資源文件的跳轉(zhuǎn)信息,則查詢引用所述資源文件的目標(biāo)源文件,根據(jù)所述目標(biāo)源文件的繼承關(guān)系,確定所述目標(biāo)源文件的類名,根據(jù)所述目標(biāo)源文件的類名確定所述資源文件的跳轉(zhuǎn)信息。
可選的,所述根據(jù)所述上一級(jí)設(shè)置項(xiàng)的路徑生成所述資源文件中的各個(gè)設(shè)置項(xiàng)的路徑之前,還包括:
確定引用所述資源文件的目標(biāo)源文件的類名;
當(dāng)所述已確定資源中包含所述目標(biāo)源文件的類名時(shí),將所述已確定資源中包含所述目標(biāo)源文件的類名的搜索資源,確定為所述資源文件中的各個(gè)設(shè)置項(xiàng)對(duì)應(yīng)在所述設(shè)置功能中的上一級(jí)設(shè)置項(xiàng)的搜索資源。
可選的,所述方法還包括:
當(dāng)所述已確定資源中不包含所述目標(biāo)源文件的類名時(shí),查詢所述目標(biāo)源文件的子類的類名;
當(dāng)所述已確定資源中包含所述子類的類名時(shí),將所述已確定資源中包含所述子類的類名的搜索資源,確定為所述資源文件中的各個(gè)設(shè)置項(xiàng)對(duì)應(yīng)在所述設(shè)置功能中的上一級(jí)設(shè)置項(xiàng)的搜索資源。
可選的,所述方法還包括:
當(dāng)所述已確定資源中不包含所述目標(biāo)源文件的類名,且所述目標(biāo)源文件的類名為Activity類的類名時(shí),分析所述目標(biāo)源文件的代碼,確定所述目標(biāo)源文件的新的類名,所述新的類名是所述Activity類下引用所述資源文件的Fragment類的類名;
當(dāng)所述已確定資源中包含所述新的類名時(shí),將所述已確定資源中包含所述新的類名的搜索資源,確定為所述資源文件中的各個(gè)設(shè)置項(xiàng)對(duì)應(yīng)在所述設(shè)置功能中的上一級(jí)設(shè)置項(xiàng)的搜索資源。
可選的,所述方法還包括:
當(dāng)所述已確定資源中不包含所述目標(biāo)源文件的類名,且所述目標(biāo)源文件的類名為intent類的類名時(shí),查詢所述intent類對(duì)應(yīng)的源文件的類名;
當(dāng)所述已確定資源中包含所述intent類對(duì)應(yīng)的源文件的類名時(shí),將所述已確定資源中包含所述intent類對(duì)應(yīng)的源文件的類名的搜索資源,確定為所述資源文件中的各個(gè)設(shè)置項(xiàng)對(duì)應(yīng)在所述設(shè)置功能中的上一級(jí)設(shè)置項(xiàng)的搜索資源。
可選的,所述方法還包括:
獲取所述設(shè)置功能的各級(jí)頁面中的每個(gè)設(shè)置項(xiàng)對(duì)應(yīng)的配置信息,所述配置信息用于指示對(duì)應(yīng)的設(shè)置項(xiàng)在指定機(jī)型和/或指定場(chǎng)景中是否顯示;
根據(jù)所述配置信息,在所述設(shè)置項(xiàng)的搜索資源中設(shè)置對(duì)應(yīng)的配置參數(shù)。
第二方面,提供了一種搜索文件生成裝置,所述裝置包括:
信息獲取模塊,用于獲取操作系統(tǒng)中的設(shè)置功能的第一級(jí)頁面的項(xiàng)目信息,所述項(xiàng)目信息包含對(duì)應(yīng)頁面中的各個(gè)設(shè)置項(xiàng)的搜索資源,所述搜索資源至少包括跳轉(zhuǎn)信息和路徑,所述跳轉(zhuǎn)信息中包含對(duì)應(yīng)的源文件的類名;
文件確定模塊,用于確定操作系統(tǒng)中的各個(gè)資源文件;
信息生成模塊,用于根據(jù)所述第一級(jí)頁面中的各個(gè)設(shè)置項(xiàng)的跳轉(zhuǎn)信息和路徑,以及所述各個(gè)資源文件,逐級(jí)確定所述設(shè)置功能中各級(jí)頁面的項(xiàng)目信息;
文件生成模塊,用于根據(jù)所述各級(jí)頁面的項(xiàng)目信息生成所述設(shè)置功能的搜索文件。
可選的,所述信息生成模塊,包括:
信息獲取子模塊,用于以所述第一級(jí)頁面中的各個(gè)設(shè)置項(xiàng)的搜索資源為初始的已確定資源,循環(huán)遍歷所述各個(gè)資源文件中的每一個(gè)資源文件,獲取所述資源文件的跳轉(zhuǎn)信息;
路徑生成子模塊,用于當(dāng)所述已確定資源中包含所述資源文件中的各個(gè)設(shè)置項(xiàng)對(duì)應(yīng)在所述設(shè)置功能中的上一級(jí)設(shè)置項(xiàng)的搜索資源時(shí),根據(jù)所述上一級(jí)設(shè)置項(xiàng)的路徑生成所述資源文件中的各個(gè)設(shè)置項(xiàng)的路徑;
資源生成子模塊,用于根據(jù)所述資源文件中的各個(gè)設(shè)置項(xiàng)的路徑以及所述資源文件的跳轉(zhuǎn)信息,生成所述資源文件中的各個(gè)設(shè)置項(xiàng)的搜索資源;
添加子模塊,用于將所述資源文件中的各個(gè)設(shè)置項(xiàng)的搜索資源添加入所述已確定資源。
可選的,所述信息獲取子模塊,包括:
判斷子模塊,用于判斷所述資源文件中是否包含所述資源文件的跳轉(zhuǎn)信息;
第一獲取子模塊,用于若判斷結(jié)果為所述資源文件中包含所述資源文件的跳轉(zhuǎn)信息,則從所述資源文件中獲取所述資源文件的跳轉(zhuǎn)信息;
第二獲取子模塊,用于若判斷結(jié)果為所述資源文件中不包含所述資源文件的跳轉(zhuǎn)信息,則查詢引用所述資源文件的目標(biāo)源文件,根據(jù)所述目標(biāo)源文件的繼承關(guān)系,確定所述目標(biāo)源文件的類名,根據(jù)所述目標(biāo)源文件的類名確定所述資源文件的跳轉(zhuǎn)信息。
可選的,所述信息生成模塊,還包括:
第一類名確定子模塊,用于在所述路徑生成子模塊根據(jù)所述上一級(jí)設(shè)置項(xiàng)的路徑生成所述資源文件中的各個(gè)設(shè)置項(xiàng)的路徑之前,確定引用所述資源文件的目標(biāo)源文件的類名;
第一資源確定子模塊,用于當(dāng)所述已確定資源中包含所述目標(biāo)源文件的類名時(shí),將所述已確定資源中包含所述目標(biāo)源文件的類名的搜索資源,確定為所述資源文件中的各個(gè)設(shè)置項(xiàng)對(duì)應(yīng)在所述設(shè)置功能中的上一級(jí)設(shè)置項(xiàng)的搜索資源。
可選的,所述信息生成模塊還包括:
第一類名查詢子模塊,用于當(dāng)所述已確定資源中不包含所述目標(biāo)源文件的類名時(shí),查詢所述目標(biāo)源文件的子類的類名;
第二資源確定子模塊,用于當(dāng)所述已確定資源中包含所述子類的類名時(shí),將所述已確定資源中包含所述子類的類名的搜索資源,確定為所述資源文件中的各個(gè)設(shè)置項(xiàng)對(duì)應(yīng)在所述設(shè)置功能中的上一級(jí)設(shè)置項(xiàng)的搜索資源。
可選的,所述信息生成模塊還包括:
第二類名確定子模塊,用于當(dāng)所述已確定資源中不包含所述目標(biāo)源文件的類名,且所述目標(biāo)源文件的類名為Activity類的類名時(shí),分析所述目標(biāo)源文件的代碼,確定所述目標(biāo)源文件的新的類名,所述新的類名是所述Activity類下引用所述資源文件的Fragment類的類名;
第三資源確定子模塊,用于當(dāng)所述已確定資源中包含所述新的類名時(shí),將所述已確定資源中包含所述新的類名的搜索資源,確定為所述資源文件中的各個(gè)設(shè)置項(xiàng)對(duì)應(yīng)在所述設(shè)置功能中的上一級(jí)設(shè)置項(xiàng)的搜索資源。
可選的,所述信息生成模塊還包括:
第二類名查詢子模塊,用于當(dāng)所述已確定資源中不包含所述目標(biāo)源文件的類名,且所述目標(biāo)源文件的類名為intent類的類名時(shí),查詢所述intent類對(duì)應(yīng)的源文件的類名;
第四資源確定子模塊,用于當(dāng)所述已確定資源中包含所述intent類對(duì)應(yīng)的源文件的類名時(shí),將所述已確定資源中包含所述intent類對(duì)應(yīng)的源文件的類名的搜索資源,確定為所述資源文件中的各個(gè)設(shè)置項(xiàng)對(duì)應(yīng)在所述設(shè)置功能中的上一級(jí)設(shè)置項(xiàng)的搜索資源。
可選的,所述裝置還包括:
配置獲取模塊,用于獲取所述設(shè)置功能的各級(jí)頁面中的每個(gè)設(shè)置項(xiàng)對(duì)應(yīng)的配置信息,所述配置信息用于指示對(duì)應(yīng)的設(shè)置項(xiàng)在指定機(jī)型和/或指定場(chǎng)景中是否顯示;
參數(shù)設(shè)置模塊,用于根據(jù)所述配置信息,在所述設(shè)置項(xiàng)的搜索資源中設(shè)置對(duì)應(yīng)的配置參數(shù)。
第三方面,提供一種搜索文件生成裝置,所述裝置包括:
處理器;
用于存儲(chǔ)所述處理器的可執(zhí)行指令的存儲(chǔ)器;
其中,所述處理器被配置為:
獲取操作系統(tǒng)中的設(shè)置功能的第一級(jí)頁面的項(xiàng)目信息,所述項(xiàng)目信息包含對(duì)應(yīng)頁面中的各個(gè)設(shè)置項(xiàng)的搜索資源,所述搜索資源至少包括跳轉(zhuǎn)信息和路徑,所述跳轉(zhuǎn)信息中包含對(duì)應(yīng)的源文件的類名;
確定操作系統(tǒng)中的各個(gè)資源文件;
根據(jù)所述第一級(jí)頁面中的各個(gè)設(shè)置項(xiàng)的跳轉(zhuǎn)信息和路徑,以及所述各個(gè)資源文件,逐級(jí)確定所述設(shè)置功能中各級(jí)頁面的項(xiàng)目信息;
根據(jù)所述各級(jí)頁面的項(xiàng)目信息生成所述設(shè)置功能的搜索文件。
本公開實(shí)施例提供的技術(shù)方案可以包括以下有益效果:
獲取操作系統(tǒng)中的設(shè)置功能的第一級(jí)頁面的項(xiàng)目信息,該項(xiàng)目信息包含對(duì)應(yīng)頁面中的各個(gè)設(shè)置項(xiàng)的搜索資源,該搜索資源至少包括跳轉(zhuǎn)信息和路徑,確定操作系統(tǒng)中的各個(gè)資源文件,根據(jù)該第一級(jí)頁面中的各個(gè)設(shè)置項(xiàng)的跳轉(zhuǎn)信息和路徑,以及該各個(gè)資源文件,逐級(jí)確定該設(shè)置功能中各級(jí)頁面的項(xiàng)目信息,根據(jù)該各級(jí)頁面的項(xiàng)目信息生成該設(shè)置功能的搜索文件,基本公開所示的方案,能夠通過設(shè)置功能中的第一級(jí)頁面的搜索資源,結(jié)合操作系統(tǒng)的各個(gè)資源文件自動(dòng)生成設(shè)置功能中的各級(jí)頁面中的各個(gè)設(shè)置項(xiàng)的搜索資源,不需要開發(fā)人員人工整理所有的設(shè)置項(xiàng)的搜索資源,達(dá)到簡(jiǎn)化人工操作步驟,減少人工開發(fā)時(shí)間,提高了軟件開發(fā)效率的效果。
應(yīng)當(dāng)理解的是,以上的一般描述和后文的細(xì)節(jié)描述僅是示例性和解釋性的,并不能限制本公開。
附圖說明
此處的附圖被并入說明書中并構(gòu)成本說明書的一部分,示出了符合本公開的實(shí)施例,并與說明書一起用于解釋本公開的原理。
圖1是根據(jù)一示例性實(shí)施例示出的一種搜索文件生成方法的流程圖;
圖2是根據(jù)一示例性實(shí)施例示出的一種搜索文件生成方法的流程圖;
圖3是圖2所示實(shí)施例涉及的一種項(xiàng)目信息生成方法的流程圖;
圖4是根據(jù)一示例性實(shí)施例示出的一種搜索文件生成裝置的框圖;
圖5是根據(jù)一示例性實(shí)施例示出的一種搜索文件生成裝置的框圖;
圖6是根據(jù)一示例性實(shí)施例提供的電子設(shè)備的結(jié)構(gòu)示意圖。
具體實(shí)施方式
這里將詳細(xì)地對(duì)示例性實(shí)施例進(jìn)行說明,其示例表示在附圖中。下面的描述涉及附圖時(shí),除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實(shí)施例中所描述的實(shí)施方式并不代表與本公開相一致的所有實(shí)施方式。相反,它們僅是與如所附權(quán)利要求書中所詳述的、本公開的一些方面相一致的裝置和方法的例子。
本公開實(shí)施例所示的方案可以應(yīng)用于各類軟件開發(fā)平臺(tái)設(shè)備中。比如,本方案可以應(yīng)用于基于個(gè)人電腦或者工作站等運(yùn)行有軟件開發(fā)工具的電子設(shè)備中。
操作系統(tǒng)中的設(shè)置功能通常由若干級(jí)頁面組成,每一級(jí)頁面中包含一個(gè)或多個(gè)設(shè)置項(xiàng),上級(jí)頁面的某一個(gè)設(shè)置項(xiàng)可以作為下級(jí)頁面的入口。在本公開實(shí)施例所示的方案中,軟件開發(fā)工具只需要獲取到設(shè)置功能的第一級(jí)頁面中的各個(gè)設(shè)置項(xiàng)的搜索資源,即可以結(jié)合操作系統(tǒng)中的各個(gè)資源文件自動(dòng)查找設(shè)置功能中的其它各級(jí)頁面中的設(shè)置項(xiàng)的跳轉(zhuǎn)信息,生成各個(gè)設(shè)置項(xiàng)在設(shè)置功能中的路徑,以自動(dòng)獲得設(shè)置功能的完整的搜索文件。具體的,本公開所示的方案的實(shí)現(xiàn)過程可以參考下面的實(shí)施例。
圖1是根據(jù)一示例性實(shí)施例示出的一種搜索文件生成方法的流程圖,該方法可以用于運(yùn)行有軟件開發(fā)工具的電子設(shè)備中。如圖1所示,該搜索文件生成方法可以包括如下幾個(gè)步驟:
步驟101,獲取操作系統(tǒng)中的設(shè)置功能的第一級(jí)頁面的項(xiàng)目信息,該項(xiàng)目信息包含對(duì)應(yīng)頁面中的各個(gè)設(shè)置項(xiàng)的搜索資源,該搜索資源至少包括跳轉(zhuǎn)信息和路徑,該跳轉(zhuǎn)信息中包含對(duì)應(yīng)的源文件的類名。
步驟102,確定操作系統(tǒng)中的各個(gè)資源文件。
步驟103,根據(jù)該第一級(jí)頁面中的各個(gè)設(shè)置項(xiàng)的跳轉(zhuǎn)信息和路徑,以及該各個(gè)資源文件,逐級(jí)確定該設(shè)置功能中各級(jí)頁面的項(xiàng)目信息。
步驟104,根據(jù)該各級(jí)頁面的項(xiàng)目信息生成該設(shè)置功能的搜索文件。
綜上所述,本公開實(shí)施例所示的方法,獲取操作系統(tǒng)中的設(shè)置功能的第一級(jí)頁面的項(xiàng)目信息,該項(xiàng)目信息包含對(duì)應(yīng)頁面中的各個(gè)設(shè)置項(xiàng)的搜索資源,該搜索資源至少包括跳轉(zhuǎn)信息和路徑,確定操作系統(tǒng)中的各個(gè)資源文件,根據(jù)該第一級(jí)頁面中的各個(gè)設(shè)置項(xiàng)的跳轉(zhuǎn)信息和路徑,以及該各個(gè)資源文件,逐級(jí)確定該設(shè)置功能中各級(jí)頁面的項(xiàng)目信息,根據(jù)該各級(jí)頁面的項(xiàng)目信息生成該設(shè)置功能的搜索文件,基本公開所示的方案,能夠通過設(shè)置功能中的第一級(jí)頁面的搜索資源,結(jié)合操作系統(tǒng)的各個(gè)資源文件自動(dòng)生成設(shè)置功能中的各級(jí)頁面中的各個(gè)設(shè)置項(xiàng)的搜索資源,不需要開發(fā)人員人工整理所有的設(shè)置項(xiàng)的搜索資源,達(dá)到簡(jiǎn)化人工操作步驟,減少人工開發(fā)時(shí)間,提高了軟件開發(fā)效率的效果。
圖2是根據(jù)一示例性實(shí)施例示出的一種搜索文件生成方法的流程圖,該方法可以用于運(yùn)行有軟件開發(fā)工具的電子設(shè)備中。如圖2所示,該搜索文件生成方法可以包括如下幾個(gè)步驟:
步驟201,獲取操作系統(tǒng)中的設(shè)置功能的第一級(jí)頁面的項(xiàng)目信息。
其中,該項(xiàng)目信息包含對(duì)應(yīng)頁面中的各個(gè)設(shè)置項(xiàng)的搜索資源,該搜索資源至少包括跳轉(zhuǎn)信息和路徑,該跳轉(zhuǎn)信息中包含對(duì)應(yīng)的源文件的類名。
比如,以安卓系統(tǒng)中搜索資源為例,設(shè)置功能中的每個(gè)設(shè)置項(xiàng)的搜索資源可以包括顯示信息、用戶輸入數(shù)據(jù)的匹配信息以及跳轉(zhuǎn)信息,其中,顯示信息用于對(duì)搜索結(jié)果進(jìn)行顯示,比如,顯示信息中可以包括資源名稱(resource_name)以及路徑(path)信息,用戶輸入數(shù)據(jù)的匹配信息可以是關(guān)鍵字(keywords),跳轉(zhuǎn)信息中可以包括設(shè)置項(xiàng)對(duì)應(yīng)的源文件的類名,比如,該跳轉(zhuǎn)信息可以是引用該設(shè)置項(xiàng)的資源文件的類的類名。在安卓系統(tǒng)中,源文件可以是Java文件,跳轉(zhuǎn)信息中可以設(shè)置四種標(biāo)簽,分別為intent標(biāo)簽、class標(biāo)簽、package標(biāo)簽以及fragment標(biāo)簽,其中,intent標(biāo)簽中的內(nèi)容可以是設(shè)置項(xiàng)對(duì)應(yīng)的intent類的類名,class標(biāo)簽中的內(nèi)容可以是設(shè)置項(xiàng)對(duì)應(yīng)的Activity類的類名,package標(biāo)簽中的內(nèi)容可以是設(shè)置項(xiàng)對(duì)應(yīng)的package類的類名,fragment標(biāo)簽中的內(nèi)容可以是設(shè)置項(xiàng)對(duì)應(yīng)的fragment類的類名。
本公開實(shí)施例中,軟件開發(fā)工具需要先獲取設(shè)置功能的第一級(jí)頁面(即設(shè)置主頁面)中的各個(gè)設(shè)置項(xiàng)的搜索資源。比如,某操作系統(tǒng)中的設(shè)置功能的第一級(jí)頁面包含“連接”、“設(shè)備”、“控制”以及“一般”這四個(gè)設(shè)置項(xiàng),且這四個(gè)設(shè)置項(xiàng)中每個(gè)設(shè)置項(xiàng)下面都包含至少一級(jí)設(shè)界面,比如,通過點(diǎn)擊“練級(jí)”設(shè)置項(xiàng),可以進(jìn)入對(duì)應(yīng)的連接界面,該連接界面中又包含若干個(gè)設(shè)置項(xiàng),比如“WLAN”、“藍(lán)牙”以及“網(wǎng)絡(luò)共享和移動(dòng)熱點(diǎn)”等等,其中,該連接界面中的各個(gè)設(shè)置項(xiàng)下面也可能包含再下一級(jí)頁面,以此類推。本步驟中,軟件開發(fā)工具只需要獲取第一級(jí)頁面中的“連接”、“設(shè)備”、“控制”以及“一般”這四個(gè)設(shè)置項(xiàng)的搜索資源即可。
步驟202,確定操作系統(tǒng)中的各個(gè)資源文件。
在本公開所示的方案中,軟件開發(fā)工具可以遍歷操作系統(tǒng)的所有資源文件(比如,安卓系統(tǒng)中的資源文件可以是.xml文件)。
或者,也可以由開發(fā)人員通過加標(biāo)簽(TAG)的方式從操作系統(tǒng)中的各個(gè)資源文件中指定出設(shè)置項(xiàng)相關(guān)的資源文件。
步驟203,根據(jù)該第一級(jí)頁面中的各個(gè)設(shè)置項(xiàng)的跳轉(zhuǎn)信息和路徑,以及該各個(gè)資源文件,逐級(jí)確定該設(shè)置功能中各級(jí)頁面的項(xiàng)目信息。
本公開所示的方案中,跳轉(zhuǎn)信息中包含的源文件的類名,可以是引用對(duì)應(yīng)的設(shè)置項(xiàng)的資源文件的類的類名,在已經(jīng)能夠確定設(shè)置功能的第一級(jí)頁面的各個(gè)設(shè)置項(xiàng)的跳轉(zhuǎn)信息的情況下,如果引用某個(gè)資源文件的類與第一級(jí)頁面中的各個(gè)設(shè)置項(xiàng)中某個(gè)指定設(shè)置項(xiàng)的跳轉(zhuǎn)信息中的類匹配,則說明該資源文件中包含的各個(gè)設(shè)置項(xiàng)就是該指定設(shè)置項(xiàng)的下一級(jí)設(shè)置項(xiàng),據(jù)此可以獲得該資源文件中包含的各個(gè)設(shè)置項(xiàng)的搜索資源,類似的,根據(jù)該資源文件中包含的各個(gè)設(shè)置項(xiàng)的搜索資源,結(jié)合其它資源文件,又可以獲取該資源文件中包含的各個(gè)設(shè)置項(xiàng)的下一級(jí)頁面的設(shè)置項(xiàng)的搜索資源,以此類推,直至獲取到設(shè)置功能中所有各級(jí)頁面中的設(shè)置項(xiàng)的搜索資源。
請(qǐng)參考圖3,其示出了本公開實(shí)施例涉及的一種項(xiàng)目信息生成方法的流程圖。如圖3所示,該方法可以包括如下步驟:
步驟31,以該第一級(jí)頁面中的各個(gè)設(shè)置項(xiàng)的搜索資源為初始的已確定資源,循環(huán)遍歷該各個(gè)資源文件中的每一個(gè)資源文件,獲取該資源文件的跳轉(zhuǎn)信息。
其中,在獲取資源文件的條件信息時(shí),可以判斷該資源文件中是否包含該資源文件的跳轉(zhuǎn)信息;若判斷結(jié)果為該資源文件中包含該資源文件的跳轉(zhuǎn)信息,則從該資源文件中獲取該資源文件的跳轉(zhuǎn)信息;若判斷結(jié)果為該資源文件中不包含該資源文件的跳轉(zhuǎn)信息,則查詢引用該資源文件的目標(biāo)源文件,根據(jù)該目標(biāo)源文件的繼承關(guān)系,確定該目標(biāo)源文件的類名,根據(jù)該目標(biāo)源文件的類名確定該資源文件的跳轉(zhuǎn)信息。
操作系統(tǒng)中部分資源文件可能本身已經(jīng)包含了可以作為跳轉(zhuǎn)信息的相關(guān)信息,比如,以安卓系統(tǒng)為例,部分資源文件中可能已經(jīng)包含了intent標(biāo)簽、class標(biāo)簽、package標(biāo)簽以及fragment標(biāo)簽中的一種或多種,且這些標(biāo)簽中至少一個(gè)標(biāo)簽不為空,此時(shí),可以直接將該資源文件中的intent標(biāo)簽、class標(biāo)簽、package標(biāo)簽以及fragment標(biāo)簽獲取為資源文件的跳轉(zhuǎn)信息。
在另一些資源文件中,可能并不存在跳轉(zhuǎn)信息,此時(shí),軟件開發(fā)工具可以查詢引用該資源信息的源文件,根據(jù)源文件的繼承關(guān)系(即查詢?cè)次募械幕惡透鱾€(gè)子類),確定該源文件的類名,即通過源文件的基類和各個(gè)子類確定源文件對(duì)應(yīng)的類是Activity類還是Fragment類,并記錄對(duì)應(yīng)的類名和類型,比如,若源文件對(duì)應(yīng)的類是Activity類,則為該資源文件生成class標(biāo)簽,并在class標(biāo)簽中添加Activity類的類名,如果該資源文件是Fragment類,則為該資源文件生成Fragment標(biāo)簽,并在Fragment標(biāo)簽中添加Fragment類的類名。
步驟32,當(dāng)該已確定資源中包含該資源文件中的各個(gè)設(shè)置項(xiàng)對(duì)應(yīng)在該設(shè)置功能中的上一級(jí)設(shè)置項(xiàng)的搜索資源時(shí),根據(jù)該上一級(jí)設(shè)置項(xiàng)的路徑生成該資源文件中的各個(gè)設(shè)置項(xiàng)的路徑。
當(dāng)已確定資源中包含該資源文件中的各個(gè)設(shè)置項(xiàng)對(duì)應(yīng)在該設(shè)置功能中的上一級(jí)設(shè)置項(xiàng)的搜索資源時(shí),軟件開發(fā)工具可以將該資源文件中的各個(gè)設(shè)置項(xiàng)的名稱與上一級(jí)設(shè)置項(xiàng)的路徑進(jìn)行組合,即可以生成各個(gè)設(shè)置項(xiàng)的路徑。
比如,以上一級(jí)設(shè)置項(xiàng)為“連接”為例,該上一級(jí)設(shè)置項(xiàng)的路徑為“設(shè)置/連接”,若資源文件中的各個(gè)設(shè)置項(xiàng)為“WLAN”、“藍(lán)牙”以及“網(wǎng)絡(luò)共享和移動(dòng)熱點(diǎn)”,則對(duì)應(yīng)設(shè)置項(xiàng)“WLAN”的路徑為“設(shè)置/連接/WLAN”,相應(yīng)的,對(duì)應(yīng)“藍(lán)牙”的路徑為“設(shè)置/連接/藍(lán)牙”,以此類推。
可選的,在根據(jù)該上一級(jí)設(shè)置項(xiàng)的路徑生成該資源文件中的各個(gè)設(shè)置項(xiàng)的路徑之前,軟件開發(fā)工具可以通過如下方法,來從已確定資源中找出資源文件中的各個(gè)設(shè)置項(xiàng)對(duì)應(yīng)的上一級(jí)設(shè)置項(xiàng)的搜索資源:
1)軟件開發(fā)工具確定引用該資源文件的目標(biāo)源文件的類名;當(dāng)該已確定資源中包含該目標(biāo)源文件的類名時(shí),將該已確定資源中包含該目標(biāo)源文件的類名的搜索資源,確定為該資源文件中的各個(gè)設(shè)置項(xiàng)對(duì)應(yīng)在該設(shè)置功能中的上一級(jí)設(shè)置項(xiàng)的搜索資源。
軟件開發(fā)工具可以先確定引用該資源文件的源文件(Java文件)的類名,并從已確定資源中查找該源文件的類名,如果查找到該源文件的類名,則將已確定資源中的該源文件的類名對(duì)應(yīng)的設(shè)置項(xiàng)確定為上一級(jí)設(shè)置項(xiàng)。
2)當(dāng)該已確定資源中不包含該目標(biāo)源文件的類名時(shí),軟件開發(fā)工具查詢?cè)撃繕?biāo)源文件的子類的類名;當(dāng)該已確定資源中包含該子類的類名時(shí),將該已確定資源中包含該子類的類名的搜索資源,確定為該資源文件中的各個(gè)設(shè)置項(xiàng)對(duì)應(yīng)在該設(shè)置功能中的上一級(jí)設(shè)置項(xiàng)的搜索資源。
以安卓系統(tǒng)為例,如果步驟(1)查找不到引用該資源文件的源文件的類名,則有可能是在步驟(1)中找到的Java文件是基類,而已確定資源中寫入的是其子類,因此需將步驟(1)中找到的Java文件的子類的類名都找出,并在已確定資源中搜索,如果找到該子類的類名,則將該子類的類名對(duì)應(yīng)的設(shè)置項(xiàng)確定為上一級(jí)設(shè)置項(xiàng)。
3)當(dāng)該已確定資源中不包含該目標(biāo)源文件的類名,且該目標(biāo)源文件的類名為Activity類的類名時(shí),分析該目標(biāo)源文件的代碼,確定該目標(biāo)源文件的新的類名,該新的類名是該Activity類下引用該資源文件的Fragment類的類名;當(dāng)該已確定資源中包含該新的類名時(shí),將該已確定資源中包含該新的類名的搜索資源,確定為該資源文件中的各個(gè)設(shè)置項(xiàng)對(duì)應(yīng)在該設(shè)置功能中的上一級(jí)設(shè)置項(xiàng)的搜索資源。
以安卓系統(tǒng)為例,如果步驟(1)查找不到引用該資源文件的源文件的類名,則可能是上述資源文件中聲明的跳轉(zhuǎn)信息是Activity類的類名,而在步驟(1)時(shí)找到的源文件的類是Fragment類,而這兩個(gè)文件無法建立聯(lián)系的,此時(shí)可根據(jù)Activity類中的代碼,搜索引用該資源文件的Java文件,確定Fragment類的類名,在已確定資源中查找Fragment類的類名,若查找到該Fragment類的類名,則將該Fragment類的類名對(duì)應(yīng)的設(shè)置項(xiàng)確定為上一級(jí)設(shè)置項(xiàng)。
4)當(dāng)該已確定資源中不包含該目標(biāo)源文件的類名,且該目標(biāo)源文件的類名為intent類的類名時(shí),查詢?cè)搃ntent類對(duì)應(yīng)的源文件的類名;當(dāng)該已確定資源中包含該intent類對(duì)應(yīng)的源文件的類名時(shí),將該已確定資源中包含該intent類對(duì)應(yīng)的源文件的類名的搜索資源,確定為該資源文件中的各個(gè)設(shè)置項(xiàng)對(duì)應(yīng)在該設(shè)置功能中的上一級(jí)設(shè)置項(xiàng)的搜索資源。
以安卓系統(tǒng)為例,如果步驟(1)查找不到引用該資源文件的源文件的類名,則可能是上述資源文件中聲明的跳轉(zhuǎn)信息是Intent,而在步驟(1)中找到的是Java文件,此時(shí)需根據(jù)AndroidManifest文件(Activity聲明文件)來確定關(guān)系,即通過掃描每一個(gè)activity標(biāo)簽的信息,來建立Intent和Java文件的對(duì)應(yīng)關(guān)系,并獲取對(duì)應(yīng)的Java文件的類名,在已確定資源中查找該Java文件的類名,若查找到該Java文件的類名,則將該Java文件的類名對(duì)應(yīng)的設(shè)置項(xiàng)確定為上一級(jí)設(shè)置項(xiàng)。
步驟33,根據(jù)該資源文件中的各個(gè)設(shè)置項(xiàng)的路徑以及該資源文件的跳轉(zhuǎn)信息,生成該資源文件中的各個(gè)設(shè)置項(xiàng)的搜索資源。
步驟34,將該資源文件中的各個(gè)設(shè)置項(xiàng)的搜索資源添加入該已確定資源。
軟件開發(fā)工具確定出資源文件中的設(shè)置項(xiàng)的路徑后,獲取該設(shè)置項(xiàng)的關(guān)鍵詞,并將該設(shè)置項(xiàng)的路徑、關(guān)鍵詞以及資源文件的跳轉(zhuǎn)信息組合生成該設(shè)置項(xiàng)的搜索資源,并將新生成的搜索資源添加入已確定資源,以便后續(xù)繼續(xù)尋找該設(shè)置項(xiàng)的下一級(jí)設(shè)置項(xiàng)。
相應(yīng)的,如果通過上述步驟(1)至步驟(4)都沒能確定出資源文件中的各個(gè)設(shè)置項(xiàng)對(duì)應(yīng)在該設(shè)置功能中的上一級(jí)設(shè)置項(xiàng),則可能是該上一級(jí)設(shè)置項(xiàng)尚未建立,此時(shí),等待所有的資源文件都遍歷一遍并生成和添加設(shè)置項(xiàng)的搜索資源后,再重新按照上述步驟,從已確定資源中查找該資源文件中的各個(gè)設(shè)置項(xiàng)的上一級(jí)設(shè)置項(xiàng)。
步驟204,根據(jù)該各級(jí)頁面的項(xiàng)目信息生成該設(shè)置功能的搜索文件。
軟件開發(fā)工具生成各個(gè)設(shè)置項(xiàng)的搜索資源并添加入已確定資源后,將已確定資源都寫入一個(gè)搜索文件(比如,命名為functionindex.xml)。
步驟205,獲取該設(shè)置功能的各級(jí)頁面中的每個(gè)設(shè)置項(xiàng)對(duì)應(yīng)的配置信息,該配置信息用于指示對(duì)應(yīng)的設(shè)置項(xiàng)在指定機(jī)型和/或指定場(chǎng)景中是否顯示。
步驟206,根據(jù)該配置信息,在該設(shè)置項(xiàng)的搜索資源中設(shè)置對(duì)應(yīng)的配置參數(shù)。
在實(shí)際應(yīng)用中,一個(gè)操作系統(tǒng)可能匹配多個(gè)不同的機(jī)型,而不同的機(jī)型中,設(shè)置功能的設(shè)置項(xiàng)的顯示也可能不同,比如,在某些機(jī)型中的設(shè)置功能中顯示某個(gè)設(shè)置項(xiàng),而在另一些機(jī)型中可能不顯示該設(shè)置項(xiàng);或者,在某些場(chǎng)景(比如老人模式或第二空間等)下,設(shè)置功能的某些設(shè)置項(xiàng)可能會(huì)不顯示。對(duì)此,在本方案中,可以預(yù)先設(shè)置每個(gè)設(shè)置項(xiàng)對(duì)應(yīng)的配置信息,該配置信息用于指示對(duì)應(yīng)的設(shè)置項(xiàng)在指定機(jī)型和/或指定場(chǎng)景中是否顯示,并按照配置信息設(shè)置響應(yīng)的設(shè)置項(xiàng)的配置參數(shù),比如,可以設(shè)置is_searchable和is_secondspace等字段來描述設(shè)置項(xiàng)在指定機(jī)型和/或指定場(chǎng)景中是否顯示,其中,is_searchable可以用來存儲(chǔ)機(jī)型對(duì)應(yīng)的控制條件,is_secondspace可以用來描述在第二空間中是否顯示。
具體的,以安卓系統(tǒng)為例,本公開實(shí)施例的完整流程可以如下:
<1>將設(shè)置功能的設(shè)置樹的一級(jí)目錄寫入文件搜索。
初始化設(shè)置樹數(shù)據(jù)結(jié)構(gòu),并將頭節(jié)點(diǎn)寫入(頭結(jié)點(diǎn)可以為“設(shè)置”)。設(shè)置樹的節(jié)點(diǎn),主要包含data和children,data存儲(chǔ)設(shè)置項(xiàng)對(duì)應(yīng)搜索資源(主要包含path,resource_name,fragment,class,package,is_searchable,is_secondspace),children存儲(chǔ)設(shè)置項(xiàng)下的子頁面。設(shè)置樹一級(jí)節(jié)點(diǎn)在系統(tǒng)中可以對(duì)應(yīng)settings_headers.xml文件,作為整個(gè)設(shè)置樹的主干,同時(shí)為后面的搜索資源的路徑生成做準(zhǔn)備。
<2>將其他相關(guān)資源依次寫入搜索文件。
1>確定系統(tǒng)中各個(gè)資源文件,將這些資源文件依次加載至內(nèi)存;
2>以A來代替其中一個(gè)資源文件,如果資源文件中已包含足夠的可供生成搜索資源的信息(即跳轉(zhuǎn)信息),則將這些跳轉(zhuǎn)信息直接寫入文件,并;
3>如果在資源文件中沒有相關(guān)的跳轉(zhuǎn)信息(即intent,class,package,fragment都為空),則可通過掃描java文件,可以得到哪些java文件中引用了A資源文件(一般只有一個(gè)java文件),然后通過此java文件的基類和子類來確定此Java文件是Fragment類還是Activity類,最終將類型和類名寫入文件中,作為資源文件的搜索資源;
4>搜索資源分組(即搜索上一級(jí)設(shè)置項(xiàng))并生成當(dāng)前設(shè)置項(xiàng)的路徑;
具體實(shí)現(xiàn)方式:
(1)通過掃描java文件,確認(rèn)A資源文件被引用的Java文件,用J來描述;
(2)在搜索文件中已寫入的搜索資源中搜索J,如果找到,則可以確認(rèn)分組,將A資源文件中每一個(gè)設(shè)置項(xiàng)對(duì)應(yīng)的資源文件名稱與分組的path(即上一級(jí)設(shè)置項(xiàng)的路徑)拼接起來,成為此設(shè)置項(xiàng)對(duì)應(yīng)的搜索資源的path;
(3)如果步驟(2)找不到,則很有可能是在步驟(1)中找到的Java文件是基類,而已寫入的搜索資源中寫入的是其子類,因此需將此Java文件的子類都找到,并在已寫入的搜索資源中搜索,如果找到,則確立分組,寫入設(shè)置項(xiàng)的搜索資源的path;
(4)如果步驟(3)找不到,則有可能是A資源文件中聲明的跳轉(zhuǎn)信息是Activity,而在步驟(1)時(shí)找到的Java文件是Fragment,而這兩個(gè)文件無法建立聯(lián)系,此時(shí)可根據(jù)Activity中的代碼,搜索引用A資源文件的Java文件來建立關(guān)系,進(jìn)而確立分組,寫入設(shè)置項(xiàng)的搜索資源的path;
(5)如果步驟(4)找不到,很有可能A資源文件中聲明的跳轉(zhuǎn)信息是Intent,而在步驟(1)中找到的是Java文件,此時(shí)需根據(jù)AndroidManifest文件來確認(rèn)關(guān)系,通過掃描每一個(gè)activity標(biāo)簽的信息,來建立Intent和Java文件的對(duì)應(yīng)關(guān)系,進(jìn)而確認(rèn)分組,寫入設(shè)置項(xiàng)的搜索資源的path;
(6)如果步驟(5)找不到,則很有可能資源文件的上一級(jí)設(shè)置項(xiàng)還沒有寫入,無法建立分組,此時(shí)將A資源文件的標(biāo)識(shí)寫入數(shù)組Array中;
(7)以數(shù)組Array中的資源為輸入,重復(fù)步驟(1)至步驟(5)。
5>設(shè)置機(jī)型差異項(xiàng)(比如is_searchable)以及特殊場(chǎng)景差異項(xiàng)(比如is_secondspace)的搜索資源。
本公開帶來的有益效果主要體現(xiàn)在搜索的靈活性,當(dāng)某工程師開發(fā)某一新功能時(shí),不再需要搜索工程師配合來完成此功能的搜索相關(guān)的開發(fā),老版本的搜索需要人工維護(hù)搜索資源,設(shè)置項(xiàng)數(shù)量較大且較為繁瑣,而且難免會(huì)出現(xiàn)遺漏現(xiàn)象,導(dǎo)致用戶搜索不到,而本方案后期維護(hù)成本非常低,提高了工程師了工作效率的同時(shí),較低工程師后期維護(hù)的成本,而且會(huì)大大改善用戶使用搜索功能的體驗(yàn)。
由于上述自動(dòng)化處理過程是在編譯時(shí)完成,屬于靜態(tài)處理,無法處理運(yùn)行時(shí)情況,為了保證搜索正常運(yùn)行且準(zhǔn)確,需要設(shè)置Java上層代碼根據(jù)系統(tǒng)的動(dòng)態(tài)運(yùn)行的情況更新數(shù)據(jù)庫的內(nèi)容,比如,設(shè)置項(xiàng)中有“鎖屏和密碼”,而在部分手機(jī)中是“鎖屏密碼和指紋”,系統(tǒng)在運(yùn)行時(shí)會(huì)根據(jù)手機(jī)是否支持指紋識(shí)別,來判斷是顯示“鎖屏和密碼”還是“鎖屏密碼和指紋”,而資源文件里的資源只是“鎖屏和密碼”,系統(tǒng)無法獲取動(dòng)態(tài)運(yùn)行值,因此寫到搜索資源中的只會(huì)是“鎖屏和密碼”,對(duì)此,可以在Java上層設(shè)置代碼,在系統(tǒng)安裝運(yùn)行時(shí)判斷手機(jī)是否支持指紋識(shí)別,若是,則將“鎖屏和密碼”更新為“鎖屏密碼和指紋”。
綜上所述,本公開實(shí)施例所示的方案,獲取操作系統(tǒng)中的設(shè)置功能的第一級(jí)頁面的項(xiàng)目信息,該項(xiàng)目信息包含對(duì)應(yīng)頁面中的各個(gè)設(shè)置項(xiàng)的搜索資源,該搜索資源至少包括跳轉(zhuǎn)信息和路徑,確定操作系統(tǒng)中的各個(gè)資源文件,根據(jù)該第一級(jí)頁面中的各個(gè)設(shè)置項(xiàng)的跳轉(zhuǎn)信息和路徑,以及該各個(gè)資源文件,逐級(jí)確定該設(shè)置功能中各級(jí)頁面的項(xiàng)目信息,根據(jù)該各級(jí)頁面的項(xiàng)目信息生成該設(shè)置功能的搜索文件,基本公開所示的方案,能夠通過設(shè)置功能中的第一級(jí)頁面的搜索資源,結(jié)合操作系統(tǒng)的各個(gè)資源文件自動(dòng)生成設(shè)置功能中的各級(jí)頁面中的各個(gè)設(shè)置項(xiàng)的搜索資源,不需要開發(fā)人員人工整理所有的設(shè)置項(xiàng)的搜索資源,達(dá)到簡(jiǎn)化人工操作步驟,減少人工開發(fā)時(shí)間,提高了軟件開發(fā)效率的效果。
下述為本公開裝置實(shí)施例,可以用于執(zhí)行本公開方法實(shí)施例。對(duì)于本公開裝置實(shí)施例中未披露的細(xì)節(jié),請(qǐng)參照本公開方法實(shí)施例。
請(qǐng)參考圖4,其示出了一示例性實(shí)施例示出的一種搜索文件生成裝置的框圖。該搜索文件生成裝置可以通過硬件或者軟硬結(jié)合的方式實(shí)現(xiàn)為電子設(shè)備的全部或者部分。該搜索文件生成裝置可以包括:
信息獲取模塊401,用于獲取操作系統(tǒng)中的設(shè)置功能的第一級(jí)頁面的項(xiàng)目信息,所述項(xiàng)目信息包含對(duì)應(yīng)頁面中的各個(gè)設(shè)置項(xiàng)的搜索資源,所述搜索資源至少包括跳轉(zhuǎn)信息和路徑,所述跳轉(zhuǎn)信息中包含對(duì)應(yīng)的源文件的類名;
文件確定模塊402,用于確定操作系統(tǒng)中的各個(gè)資源文件;
信息生成模塊403,用于根據(jù)所述第一級(jí)頁面中的各個(gè)設(shè)置項(xiàng)的跳轉(zhuǎn)信息和路徑,以及所述各個(gè)資源文件,逐級(jí)確定所述設(shè)置功能中各級(jí)頁面的項(xiàng)目信息;
文件生成模塊404,用于根據(jù)所述各級(jí)頁面的項(xiàng)目信息生成所述設(shè)置功能的搜索文件。
基于圖4所示的裝置,請(qǐng)參考圖5,其示出了本公開一示例性實(shí)施例示出的一種搜索文件生成裝置的框圖。如圖5所示,所述信息生成模塊403,包括:
信息獲取子模塊403a,用于以所述第一級(jí)頁面中的各個(gè)設(shè)置項(xiàng)的搜索資源為初始的已確定資源,循環(huán)遍歷所述各個(gè)資源文件中的每一個(gè)資源文件,獲取所述資源文件的跳轉(zhuǎn)信息;
路徑生成子模塊403b,用于當(dāng)所述已確定資源中包含所述資源文件中的各個(gè)設(shè)置項(xiàng)對(duì)應(yīng)在所述設(shè)置功能中的上一級(jí)設(shè)置項(xiàng)的搜索資源時(shí),根據(jù)所述上一級(jí)設(shè)置項(xiàng)的路徑生成所述資源文件中的各個(gè)設(shè)置項(xiàng)的路徑;
資源生成子模塊403c,用于根據(jù)所述資源文件中的各個(gè)設(shè)置項(xiàng)的路徑以及所述資源文件的跳轉(zhuǎn)信息,生成所述資源文件中的各個(gè)設(shè)置項(xiàng)的搜索資源;
添加子模塊403d,用于將所述資源文件中的各個(gè)設(shè)置項(xiàng)的搜索資源添加入所述已確定資源。
可選的,所述信息獲取子模塊403a,包括:
判斷子模塊403a1,用于判斷所述資源文件中是否包含所述資源文件的跳轉(zhuǎn)信息;
第一獲取子模塊403a2,用于若判斷結(jié)果為所述資源文件中包含所述資源文件的跳轉(zhuǎn)信息,則從所述資源文件中獲取所述資源文件的跳轉(zhuǎn)信息;
第二獲取子模塊403a3,用于若判斷結(jié)果為所述資源文件中不包含所述資源文件的跳轉(zhuǎn)信息,則查詢引用所述資源文件的目標(biāo)源文件,根據(jù)所述目標(biāo)源文件的繼承關(guān)系,確定所述目標(biāo)源文件的類名,根據(jù)所述目標(biāo)源文件的類名確定所述資源文件的跳轉(zhuǎn)信息。
可選的,所述信息生成模塊403,還包括:
第一類名確定子模塊403e,用于在所述路徑生成子模塊根據(jù)所述上一級(jí)設(shè)置項(xiàng)的路徑生成所述資源文件中的各個(gè)設(shè)置項(xiàng)的路徑之前,確定引用所述資源文件的目標(biāo)源文件的類名;
第一資源確定子模塊403f,用于當(dāng)所述已確定資源中包含所述目標(biāo)源文件的類名時(shí),將所述已確定資源中包含所述目標(biāo)源文件的類名的搜索資源,確定為所述資源文件中的各個(gè)設(shè)置項(xiàng)對(duì)應(yīng)在所述設(shè)置功能中的上一級(jí)設(shè)置項(xiàng)的搜索資源。
可選的,所述信息生成模塊403還包括:
第一類名查詢子模塊403g,用于當(dāng)所述已確定資源中不包含所述目標(biāo)源文件的類名時(shí),查詢所述目標(biāo)源文件的子類的類名;
第二資源確定子模塊403h,用于當(dāng)所述已確定資源中包含所述子類的類名時(shí),將所述已確定資源中包含所述子類的類名的搜索資源,確定為所述資源文件中的各個(gè)設(shè)置項(xiàng)對(duì)應(yīng)在所述設(shè)置功能中的上一級(jí)設(shè)置項(xiàng)的搜索資源。
可選的,所述信息生成模塊403還包括:
第二類名確定子模塊403i,用于當(dāng)所述已確定資源中不包含所述目標(biāo)源文件的類名,且所述目標(biāo)源文件的類名為Activity類的類名時(shí),分析所述目標(biāo)源文件的代碼,確定所述目標(biāo)源文件的新的類名,所述新的類名是所述Activity類下引用所述資源文件的Fragment類的類名;
第三資源確定子模塊403j,用于當(dāng)所述已確定資源中包含所述新的類名時(shí),將所述已確定資源中包含所述新的類名的搜索資源,確定為所述資源文件中的各個(gè)設(shè)置項(xiàng)對(duì)應(yīng)在所述設(shè)置功能中的上一級(jí)設(shè)置項(xiàng)的搜索資源。
可選的,所述信息生成模塊403還包括:
第二類名查詢子模塊403k,用于當(dāng)所述已確定資源中不包含所述目標(biāo)源文件的類名,且所述目標(biāo)源文件的類名為intent類的類名時(shí),查詢所述intent類對(duì)應(yīng)的源文件的類名;
第四資源確定子模塊403m,用于當(dāng)所述已確定資源中包含所述intent類對(duì)應(yīng)的源文件的類名時(shí),將所述已確定資源中包含所述intent類對(duì)應(yīng)的源文件的類名的搜索資源,確定為所述資源文件中的各個(gè)設(shè)置項(xiàng)對(duì)應(yīng)在所述設(shè)置功能中的上一級(jí)設(shè)置項(xiàng)的搜索資源。
可選的,所述裝置還包括:
配置獲取模塊405,用于獲取所述設(shè)置功能的各級(jí)頁面中的每個(gè)設(shè)置項(xiàng)對(duì)應(yīng)的配置信息,所述配置信息用于指示對(duì)應(yīng)的設(shè)置項(xiàng)在指定機(jī)型和/或指定場(chǎng)景中是否顯示;
參數(shù)設(shè)置模塊406,用于根據(jù)所述配置信息,在所述設(shè)置項(xiàng)的搜索資源中設(shè)置對(duì)應(yīng)的配置參數(shù)。
綜上所述,本公開實(shí)施例所示的裝置,獲取操作系統(tǒng)中的設(shè)置功能的第一級(jí)頁面的項(xiàng)目信息,該項(xiàng)目信息包含對(duì)應(yīng)頁面中的各個(gè)設(shè)置項(xiàng)的搜索資源,該搜索資源至少包括跳轉(zhuǎn)信息和路徑,確定操作系統(tǒng)中的各個(gè)資源文件,根據(jù)該第一級(jí)頁面中的各個(gè)設(shè)置項(xiàng)的跳轉(zhuǎn)信息和路徑,以及該各個(gè)資源文件,逐級(jí)確定該設(shè)置功能中各級(jí)頁面的項(xiàng)目信息,根據(jù)該各級(jí)頁面的項(xiàng)目信息生成該設(shè)置功能的搜索文件,基本公開所示的方案,能夠通過設(shè)置功能中的第一級(jí)頁面的搜索資源,結(jié)合操作系統(tǒng)的各個(gè)資源文件自動(dòng)生成設(shè)置功能中的各級(jí)頁面中的各個(gè)設(shè)置項(xiàng)的搜索資源,不需要開發(fā)人員人工整理所有的設(shè)置項(xiàng)的搜索資源,達(dá)到簡(jiǎn)化人工操作步驟,減少人工開發(fā)時(shí)間,提高了軟件開發(fā)效率的效果。
本公開實(shí)施例還提供一種搜索文件生成裝置,所述裝置包括:處理器;用于存儲(chǔ)所述處理器的可執(zhí)行指令的存儲(chǔ)器;其中,所述處理器用于執(zhí)行存儲(chǔ)器中存儲(chǔ)的可執(zhí)行指令,以實(shí)現(xiàn)上述圖1或圖2任一所示的方法的全部或者部分步驟,即所述處理器被配置為:
獲取操作系統(tǒng)中的設(shè)置功能的第一級(jí)頁面的項(xiàng)目信息,所述項(xiàng)目信息包含對(duì)應(yīng)頁面中的各個(gè)設(shè)置項(xiàng)的搜索資源,所述搜索資源至少包括跳轉(zhuǎn)信息和路徑,所述跳轉(zhuǎn)信息中包含對(duì)應(yīng)的源文件的類名;
確定操作系統(tǒng)中的各個(gè)資源文件;
根據(jù)所述第一級(jí)頁面中的各個(gè)設(shè)置項(xiàng)的跳轉(zhuǎn)信息和路徑,以及所述各個(gè)資源文件,逐級(jí)確定所述設(shè)置功能中各級(jí)頁面的項(xiàng)目信息;
根據(jù)所述各級(jí)頁面的項(xiàng)目信息生成所述設(shè)置功能的搜索文件。
可選的,所述根據(jù)所述第一級(jí)頁面中的各個(gè)設(shè)置項(xiàng)的跳轉(zhuǎn)信息和路徑,以及所述各個(gè)資源文件,逐級(jí)確定所述設(shè)置功能中各級(jí)頁面的項(xiàng)目信息,包括:
以所述第一級(jí)頁面中的各個(gè)設(shè)置項(xiàng)的搜索資源為初始的已確定資源,循環(huán)遍歷所述各個(gè)資源文件中的每一個(gè)資源文件,獲取所述資源文件的跳轉(zhuǎn)信息;
當(dāng)所述已確定資源中包含所述資源文件中的各個(gè)設(shè)置項(xiàng)對(duì)應(yīng)在所述設(shè)置功能中的上一級(jí)設(shè)置項(xiàng)的搜索資源時(shí),根據(jù)所述上一級(jí)設(shè)置項(xiàng)的路徑生成所述資源文件中的各個(gè)設(shè)置項(xiàng)的路徑;
根據(jù)所述資源文件中的各個(gè)設(shè)置項(xiàng)的路徑以及所述資源文件的跳轉(zhuǎn)信息,生成所述資源文件中的各個(gè)設(shè)置項(xiàng)的搜索資源;
將所述資源文件中的各個(gè)設(shè)置項(xiàng)的搜索資源添加入所述已確定資源。
可選的,所述獲取所述資源文件的跳轉(zhuǎn)信息,包括:
判斷所述資源文件中是否包含所述資源文件的跳轉(zhuǎn)信息;
若判斷結(jié)果為所述資源文件中包含所述資源文件的跳轉(zhuǎn)信息,則從所述資源文件中獲取所述資源文件的跳轉(zhuǎn)信息;
若判斷結(jié)果為所述資源文件中不包含所述資源文件的跳轉(zhuǎn)信息,則查詢引用所述資源文件的目標(biāo)源文件,根據(jù)所述目標(biāo)源文件的繼承關(guān)系,確定所述目標(biāo)源文件的類名,根據(jù)所述目標(biāo)源文件的類名確定所述資源文件的跳轉(zhuǎn)信息。
可選的,所述根據(jù)所述上一級(jí)設(shè)置項(xiàng)的路徑生成所述資源文件中的各個(gè)設(shè)置項(xiàng)的路徑之前,還包括:
確定引用所述資源文件的目標(biāo)源文件的類名;
當(dāng)所述已確定資源中包含所述目標(biāo)源文件的類名時(shí),將所述已確定資源中包含所述目標(biāo)源文件的類名的搜索資源,確定為所述資源文件中的各個(gè)設(shè)置項(xiàng)對(duì)應(yīng)在所述設(shè)置功能中的上一級(jí)設(shè)置項(xiàng)的搜索資源。
可選的,所述處理器還被配置為:
當(dāng)所述已確定資源中不包含所述目標(biāo)源文件的類名時(shí),查詢所述目標(biāo)源文件的子類的類名;
當(dāng)所述已確定資源中包含所述子類的類名時(shí),將所述已確定資源中包含所述子類的類名的搜索資源,確定為所述資源文件中的各個(gè)設(shè)置項(xiàng)對(duì)應(yīng)在所述設(shè)置功能中的上一級(jí)設(shè)置項(xiàng)的搜索資源。
可選的,所述處理器還被配置為:
當(dāng)所述已確定資源中不包含所述目標(biāo)源文件的類名,且所述目標(biāo)源文件的類名為Activity類的類名時(shí),分析所述目標(biāo)源文件的代碼,確定所述目標(biāo)源文件的新的類名,所述新的類名是所述Activity類下引用所述資源文件的Fragment類的類名;
當(dāng)所述已確定資源中包含所述新的類名時(shí),將所述已確定資源中包含所述新的類名的搜索資源,確定為所述資源文件中的各個(gè)設(shè)置項(xiàng)對(duì)應(yīng)在所述設(shè)置功能中的上一級(jí)設(shè)置項(xiàng)的搜索資源。
可選的,所述處理器還被配置為:
當(dāng)所述已確定資源中不包含所述目標(biāo)源文件的類名,且所述目標(biāo)源文件的類名為intent類的類名時(shí),查詢所述intent類對(duì)應(yīng)的源文件的類名;
當(dāng)所述已確定資源中包含所述intent類對(duì)應(yīng)的源文件的類名時(shí),將所述已確定資源中包含所述intent類對(duì)應(yīng)的源文件的類名的搜索資源,確定為所述資源文件中的各個(gè)設(shè)置項(xiàng)對(duì)應(yīng)在所述設(shè)置功能中的上一級(jí)設(shè)置項(xiàng)的搜索資源。
本公開實(shí)施例還提供了一種包括指令的非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),例如包括指令的存儲(chǔ)器,上述指令可由數(shù)據(jù)庫管理設(shè)備的處理器執(zhí)行以完成本公開各個(gè)實(shí)施例所示的搜索文件生成方法。例如,所述非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是ROM、隨機(jī)存取存儲(chǔ)器(RAM)、CD-ROM、磁帶、軟盤和光數(shù)據(jù)存儲(chǔ)設(shè)備等。
圖6是根據(jù)一示例性實(shí)施例示出的一種電子設(shè)備的結(jié)構(gòu)示意圖。該電子設(shè)備可以實(shí)現(xiàn)為本公開上述方案中運(yùn)行有軟件開發(fā)工具的設(shè)備。所述電子設(shè)備600包括中央處理單元(CPU)601、包括隨機(jī)存取存儲(chǔ)器(RAM)602和只讀存儲(chǔ)器(ROM)603的系統(tǒng)存儲(chǔ)器604,以及連接系統(tǒng)存儲(chǔ)器604和中央處理單元601的系統(tǒng)總線605。所述電子設(shè)備600還包括幫助計(jì)算機(jī)內(nèi)的各個(gè)器件之間傳輸信息的基本輸入/輸出系統(tǒng)(I/O系統(tǒng))606,和用于存儲(chǔ)操作系統(tǒng)613、應(yīng)用程序614和其他程序模塊615的大容量存儲(chǔ)設(shè)備607。
所述基本輸入/輸出系統(tǒng)606包括有用于顯示信息的顯示器608和用于用戶輸入信息的諸如鼠標(biāo)、鍵盤之類的輸入設(shè)備609。其中所述顯示器608和輸入設(shè)備609都通過連接到系統(tǒng)總線605的輸入輸出控制器610連接到中央處理單元601。所述基本輸入/輸出系統(tǒng)606還可以包括輸入輸出控制器610以用于接收和處理來自鍵盤、鼠標(biāo)、或電子觸控筆等多個(gè)其他設(shè)備的輸入。類似地,輸入輸出控制器610還提供輸出到顯示屏、打印機(jī)或其他類型的輸出設(shè)備。
所述大容量存儲(chǔ)設(shè)備607通過連接到系統(tǒng)總線605的大容量存儲(chǔ)控制器(未示出)連接到中央處理單元601。所述大容量存儲(chǔ)設(shè)備607及其相關(guān)聯(lián)的計(jì)算機(jī)可讀介質(zhì)為電子設(shè)備600提供非易失性存儲(chǔ)。也就是說,所述大容量存儲(chǔ)設(shè)備607可以包括諸如硬盤或者CD-ROM驅(qū)動(dòng)器之類的計(jì)算機(jī)可讀介質(zhì)(未示出)。
不失一般性,所述計(jì)算機(jī)可讀介質(zhì)可以包括計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括以用于存儲(chǔ)諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù)等信息的任何方法或技術(shù)實(shí)現(xiàn)的易失性和非易失性、可移動(dòng)和不可移動(dòng)介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括RAM、ROM、EPROM、EEPROM、閃存或其他固態(tài)存儲(chǔ)其技術(shù),CD-ROM、DVD或其他光學(xué)存儲(chǔ)、磁帶盒、磁帶、磁盤存儲(chǔ)或其他磁性存儲(chǔ)設(shè)備。當(dāng)然,本領(lǐng)域技術(shù)人員可知所述計(jì)算機(jī)存儲(chǔ)介質(zhì)不局限于上述幾種。上述的系統(tǒng)存儲(chǔ)器604和大容量存儲(chǔ)設(shè)備607可以統(tǒng)稱為存儲(chǔ)器。
根據(jù)本公開的各種實(shí)施例,所述電子設(shè)備600還可以通過諸如因特網(wǎng)等網(wǎng)絡(luò)連接到網(wǎng)絡(luò)上的遠(yuǎn)程計(jì)算機(jī)運(yùn)行。也即電子設(shè)備600可以通過連接在所述系統(tǒng)總線605上的網(wǎng)絡(luò)接口單元611連接到網(wǎng)絡(luò)612,或者說,也可以使用網(wǎng)絡(luò)接口單元611來連接到其他類型的網(wǎng)絡(luò)或遠(yuǎn)程計(jì)算機(jī)系統(tǒng)(未示出)。
所述存儲(chǔ)器還包括一個(gè)或者一個(gè)以上的程序,所述一個(gè)或者一個(gè)以上程序存儲(chǔ)于存儲(chǔ)器中,中央處理器601通過執(zhí)行該一個(gè)或一個(gè)以上程序來實(shí)現(xiàn)圖1或圖2所示的搜索文件生成方法。
本領(lǐng)域技術(shù)人員在考慮說明書及實(shí)踐這里公開的方案后,將容易想到本公開的其它實(shí)施方案。本申請(qǐng)旨在涵蓋本公開的任何變型、用途或者適應(yīng)性變化,這些變型、用途或者適應(yīng)性變化遵循本公開的一般性原理并包括本公開未公開的本技術(shù)領(lǐng)域中的公知常識(shí)或慣用技術(shù)手段。說明書和實(shí)施例僅被視為示例性的,本公開的真正范圍和精神由下面的權(quán)利要求指出。
應(yīng)當(dāng)理解的是,本公開并不局限于上面已經(jīng)描述并在附圖中示出的精確結(jié)構(gòu),并且可以在不脫離其范圍進(jìn)行各種修改和改變。本公開的范圍僅由所附的權(quán)利要求來限制。