生成應(yīng)用程序安裝包的方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及無(wú)線通信領(lǐng)域,特別涉及一種生成應(yīng)用程序安裝包的方法及裝置。
【背景技術(shù)】
[0002] 隨著應(yīng)用程序的功能越來(lái)越多,應(yīng)用程序中所用到的圖片、文字、布局的增多,應(yīng) 用程序安裝包也越來(lái)越大,給本身的存儲(chǔ)容量就很有限的手持智能終端帶來(lái)了較大的壓 力。而且隨著移動(dòng)互聯(lián)網(wǎng)的發(fā)展,攻擊手持智能終端、反編譯篡改應(yīng)用程序安裝包的技術(shù)也 在逐漸成熟,在這個(gè)時(shí)代背景下,減小應(yīng)用程序安裝包的大小和提高反編譯篡改應(yīng)用程序 安裝包難度的需求越發(fā)強(qiáng)烈。
[0003] 如何針對(duì)應(yīng)用程序安裝包中占用存儲(chǔ)空間較大的圖片、文字、布局等資源文件進(jìn) 行處理,以減少應(yīng)用程序安裝包的大小及提高反編譯篡改的難度,目前還沒有相關(guān)的解決 方法。
【發(fā)明內(nèi)容】
[0004] 為了解決現(xiàn)有技術(shù)中不能對(duì)應(yīng)用程序安裝包的資源文件進(jìn)行相關(guān)處理,從而不能 減小應(yīng)用程序安裝包的大小和提高篡改應(yīng)用程序安裝包難度的問題,本發(fā)明實(shí)施例提供了 一種生成應(yīng)用程序安裝包的方法及裝置。
[0005] 第一方面,本發(fā)明實(shí)施例提供了一種生成應(yīng)用程序安裝包的方法,所述方法包 括:
[0006] 獲取應(yīng)用程序中的資源文件夾中的資源文件的名稱,以及代碼文件夾中的代碼文 件中資源文件的調(diào)用位置;
[0007] 當(dāng)所述資源文件的名稱的長(zhǎng)度大于設(shè)定閾值時(shí),將資源文件夾中的資源文件的 名稱和所述代碼文件中調(diào)用位置處的資源文件名稱替換為一長(zhǎng)度小于所述設(shè)定閾值的名 稱;
[0008] 將資源文件夾中名稱替換后的資源文件、調(diào)用位置處的資源文件名稱替換后的代 碼文件和所述應(yīng)用程序的其余文件打包,生成所述應(yīng)用程序的安裝包。
[0009] 第二方面,本發(fā)明實(shí)施例提供了一種生成應(yīng)用程序安裝包的裝置,所述裝置包 括:
[0010] 獲取模塊,用于獲取應(yīng)用程序中的資源文件夾中的資源文件的名稱,以及代碼文 件夾中的代碼文件中資源文件的調(diào)用位置;
[0011] 替換模塊,用于當(dāng)所述資源文件的名稱的長(zhǎng)度大于設(shè)定閾值時(shí),將資源文件夾中 的資源文件的名稱和所述代碼文件中調(diào)用位置處的資源文件名稱替換為一長(zhǎng)度小于所述 設(shè)定閾值的名稱;
[0012] 打包模塊,用于將資源文件夾中名稱替換后的資源文件、調(diào)用位置處的資源文件 名稱替換后的代碼文件和所述應(yīng)用程序的其余文件打包,生成所述應(yīng)用程序的安裝包。
[0013] 本發(fā)明實(shí)施例通過獲取應(yīng)用程序中的資源文件夾中的資源文件的名稱,以及代碼 文件夾中的代碼文件中資源文件的調(diào)用位置;當(dāng)所述資源文件的名稱的長(zhǎng)度大于設(shè)定閾值 時(shí),將資源文件夾中的資源文件的名稱和所述代碼文件中調(diào)用位置處的資源文件名稱替換 為一長(zhǎng)度小于所述設(shè)定閾值的名稱;將資源文件夾中名稱替換后的資源文件、調(diào)用位置處 的資源文件名稱替換后的代碼文件和所述應(yīng)用程序的其余文件打包,生成所述應(yīng)用程序的 安裝包,從而減小了應(yīng)用程序安裝包的大小,提高了應(yīng)用程序安裝包反編譯篡改的難度,同 時(shí)減小了應(yīng)用程序運(yùn)行時(shí)所占用的內(nèi)存空間。
【附圖說明】
[0014] 為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使 用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于 本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他 的附圖。
[0015] 圖1是本發(fā)明實(shí)施例公開的一種生成應(yīng)用程序安裝包的方法的流程圖;
[0016] 圖2是本發(fā)明實(shí)施例公開的另一種生成應(yīng)用程序安裝包的方法的流程圖;
[0017] 圖3是本發(fā)明實(shí)施例公開的資源文件夾中的資源文件的名稱以及代碼文件夾中 的代碼文件中資源文件的調(diào)用位置的存儲(chǔ)結(jié)構(gòu)示意圖;
[0018] 圖4是本發(fā)明實(shí)施例公開的一種生成應(yīng)用程序安裝包的裝置的結(jié)構(gòu)示意圖;
[0019] 圖5是本發(fā)明實(shí)施例公開的另一種生成應(yīng)用程序安裝包的裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0020] 下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完 整地描述,顯然,所描述的實(shí)施例是本發(fā)明的一部分實(shí)施例,而不是全部的實(shí)施例?;诒?發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí) 施例,都屬于本發(fā)明保護(hù)的范圍。
[0021] 本發(fā)明實(shí)施例公開了一種生成應(yīng)用程序安裝包的方法及裝置,通過將應(yīng)用程序中 的資源文件夾中的資源文件的名稱和所述調(diào)用位置處的資源文件名稱替換為一長(zhǎng)度小于 所述設(shè)定閾值的名稱,從而減小了應(yīng)用程序安裝包的大小,提高了應(yīng)用程序安裝包反編譯 篡改的難度,同時(shí)減小了應(yīng)用程序運(yùn)行時(shí)所占用的內(nèi)存空間。以下分別通過實(shí)施例進(jìn)行詳 細(xì)說明。
[0022] 請(qǐng)參閱圖1,圖1示出了本發(fā)明實(shí)施例公開的一種生成應(yīng)用程序安裝包的方法的 流程圖。如圖1所示,該生成應(yīng)用程序安裝包的方法可以包括以下步驟:
[0023] S101:獲取應(yīng)用程序中的資源文件夾中的資源文件的名稱,以及代碼文件夾中的 代碼文件中資源文件的調(diào)用位置;
[0024] android應(yīng)用程序包括代碼文件、資源文件和配置文件等,其中代碼文件存儲(chǔ)在應(yīng) 用程序的代碼文件夾中,資源文件存儲(chǔ)在應(yīng)用程序的資源文件夾中。
[0025] 具體地,android應(yīng)用程序的資源文件包括圖片、文字、布局文件、動(dòng)畫效果配置文 件、顏色值和固定數(shù)值等,為了開發(fā)方便、表達(dá)清晰,很多的資源的名稱都很長(zhǎng),例如,名稱 為add_friend_recommend_layout. xml的布局文件,調(diào)用這個(gè)布局文件的時(shí)候,在代碼中 占據(jù)比較多的字符,如layout= 〃@layout/add_friend_recommend_layout〃/>。這種資源 文件很多的話,會(huì)直接導(dǎo)致應(yīng)用程序安裝包變大,而且運(yùn)行時(shí)占用的內(nèi)存也會(huì)較大。
[0026] 本發(fā)明實(shí)施例中,在應(yīng)用程序打包之前,掃描應(yīng)用程序全套項(xiàng)目,找出資源文件 夾中所有的資源文件和代碼文件夾中調(diào)用資源文件的代碼文件,并獲取找出的資源文件 夾中所有的資源文件的名稱,獲取代碼文件夾中的代碼文件中資源文件的調(diào)用位置,所述 調(diào)用位置具體為代碼文件的第幾行或者第幾行第幾列。資源文件包括圖片、文字、布局 文件、動(dòng)畫效果配置文件、顏色值和固定數(shù)值等。比如,名稱為add_friend_recommend_ layout,xml的布局文件,名稱為add_friend.xml的文件第79行調(diào)用了該布局文件;名稱 為R.drawable.icon的資源文件,名稱為BaseApplicationlmpl.java的文件第131行,第 24列到第39列調(diào)用了該資源文件。
[0027]S102:當(dāng)所述資源文件的名稱的長(zhǎng)度大于設(shè)定閾值時(shí),將資源文件夾中的資源文 件的名稱和所述代碼文件中調(diào)用位置處的資源文件名稱替換為一長(zhǎng)度小于所述設(shè)定閾值 的名稱;
[0028] 具體地,可先設(shè)定閾值,閾值可以為,例如,4個(gè)字符。判斷步驟S101中找出的資 源文件夾中的所有資源文件的名稱的長(zhǎng)度是否大于設(shè)定閾值,若資源文件的名稱的長(zhǎng)度大 于設(shè)定閾值,則將資源文件夾中的資源文件的名稱和代碼文件中調(diào)用位置處的資源文件 名稱替換為一長(zhǎng)度小于所述設(shè)定閾值的名稱;若資源文件的名稱的長(zhǎng)度小于等于設(shè)定閾 值,則不對(duì)資源文件夾中的資源文件的名稱和代碼文件中調(diào)用位置處的資源文件名稱進(jìn)行 替換。進(jìn)一步,可用英文字母或英文字母和數(shù)字的組合來(lái)替換資源文件夾中的資源文件 的名稱和代碼文件中調(diào)用位置處的資源文件名稱。例如,設(shè)定閾值為4個(gè)字符,布局文件 add_friend_recommend_layout. xml的名稱的長(zhǎng)度為27個(gè)字符,其長(zhǎng)度超過4個(gè)字符,貝丨J 將add_friend_recommend_layout. xml替換為:auo. xml,替換后的名稱的長(zhǎng)度小于4個(gè) 字符;相應(yīng)的將調(diào)用該布局文件的add_friend. xml文件的第79行做如下替換:替換前為 layout= 〃@layout/add_friend_recommend_layout〃/>,替換后為layout =〃@layout/ auo〃/>。又如,strings, xml文件中的內(nèi)容〈string name =〃cancel〃>取消〈/string〉,其 中cancel為6個(gè)字符,其長(zhǎng)度超過4字符,則將〈string name = "cancel"〉取消〈/string〉 替換為:〈string name =〃a2〃>取消〈/string〉,調(diào)用此文字資源的TroopShareUtility. java代碼中,將chooseShareTypeSheet. addCancelButton(R. string, cancel)替換為: chooseShareTypeSheet. addCancelButton(R. string. a2)〇
[0029]S103:將資源文件夾中名稱替換后的資源文件、調(diào)用位置處的資源文件名稱替換 后的代碼文件和所述應(yīng)用程序的其余文件打包,生成所述應(yīng)用程序的安裝包;
[0030] 具體地,將步驟