CN105204823B - 生成应用程序安装包的方法及装置 - Google Patents
生成应用程序安装包的方法及装置 Download PDFInfo
- Publication number
- CN105204823B CN105204823B CN201410234714.9A CN201410234714A CN105204823B CN 105204823 B CN105204823 B CN 105204823B CN 201410234714 A CN201410234714 A CN 201410234714A CN 105204823 B CN105204823 B CN 105204823B
- Authority
- CN
- China
- Prior art keywords
- file
- resource
- title
- folder
- resource file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种生成应用程序安装包的方法及装置,属于无线通信领域。其中,该方法包括:获取应用程序中的资源文件夹中的资源文件的名称,以及代码文件夹中的代码文件中资源文件的调用位置;当所述资源文件的名称的长度大于设定阈值时,将资源文件夹中的资源文件的名称和所述代码文件中调用位置处的资源文件名称替换为一长度小于所述设定阈值的名称;将资源文件夹中名称替换后的资源文件、调用位置处的资源文件名称替换后的代码文件和所述应用程序的其余文件打包,生成所述应用程序的安装包。本发明通过将应用程序中的资源文件夹中的资源文件的名称和所述代码文件中调用位置处的资源文件名称替换为一长度小于所述设定阈值的名称,从而减小了应用程序安装包的大小,提高了应用程序安装包反编译篡改的难度,同时减小了应用程序运行时所占用的内存空间。
Description
技术领域
本发明涉及无线通信领域,特别涉及一种生成应用程序安装包的方法及装置。
背景技术
随着应用程序的功能越来越多,应用程序中所用到的图片、文字、布局的增多,应用程序安装包也越来越大,给本身的存储容量就很有限的手持智能终端带来了较大的压力。而且随着移动互联网的发展,攻击手持智能终端、反编译篡改应用程序安装包的技术也在逐渐成熟,在这个时代背景下,减小应用程序安装包的大小和提高反编译篡改应用程序安装包难度的需求越发强烈。
如何针对应用程序安装包中占用存储空间较大的图片、文字、布局等资源文件进行处理,以减少应用程序安装包的大小及提高反编译篡改的难度,目前还没有相关的解决方法。
发明内容
为了解决现有技术中不能对应用程序安装包的资源文件进行相关处理,从而不能减小应用程序安装包的大小和提高篡改应用程序安装包难度的问题,本发明实施例提供了一种生成应用程序安装包的方法及装置。
第一方面,本发明实施例提供了一种生成应用程序安装包的方法,所述方法包括:
获取应用程序中的资源文件夹中的资源文件的名称,以及代码文件夹中的代码文件中资源文件的调用位置;
当所述资源文件的名称的长度大于设定阈值时,将资源文件夹中的资源文件的名称和所述代码文件中调用位置处的资源文件名称替换为一长度小于所述设定阈值的名称;
将资源文件夹中名称替换后的资源文件、调用位置处的资源文件名称替换后的代码文件和所述应用程序的其余文件打包,生成所述应用程序的安装包。
第二方面,本发明实施例提供了一种生成应用程序安装包的装置,所述装置包括:
获取模块,用于获取应用程序中的资源文件夹中的资源文件的名称,以及代码文件夹中的代码文件中资源文件的调用位置;
替换模块,用于当所述资源文件的名称的长度大于设定阈值时,将资源文件夹中的资源文件的名称和所述代码文件中调用位置处的资源文件名称替换为一长度小于所述设定阈值的名称;
打包模块,用于将资源文件夹中名称替换后的资源文件、调用位置处的资源文件名称替换后的代码文件和所述应用程序的其余文件打包,生成所述应用程序的安装包。
本发明实施例通过获取应用程序中的资源文件夹中的资源文件的名称,以及代码文件夹中的代码文件中资源文件的调用位置;当所述资源文件的名称的长度大于设定阈值时,将资源文件夹中的资源文件的名称和所述代码文件中调用位置处的资源文件名称替换为一长度小于所述设定阈值的名称;将资源文件夹中名称替换后的资源文件、调用位置处的资源文件名称替换后的代码文件和所述应用程序的其余文件打包,生成所述应用程序的安装包,从而减小了应用程序安装包的大小,提高了应用程序安装包反编译篡改的难度,同时减小了应用程序运行时所占用的内存空间。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例公开的一种生成应用程序安装包的方法的流程图;
图2是本发明实施例公开的另一种生成应用程序安装包的方法的流程图;
图3是本发明实施例公开的资源文件夹中的资源文件的名称以及代码文件夹中的代码文件中资源文件的调用位置的存储结构示意图;
图4是本发明实施例公开的一种生成应用程序安装包的装置的结构示意图;
图5是本发明实施例公开的另一种生成应用程序安装包的装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例公开了一种生成应用程序安装包的方法及装置,通过将应用程序中的资源文件夹中的资源文件的名称和所述调用位置处的资源文件名称替换为一长度小于所述设定阈值的名称,从而减小了应用程序安装包的大小,提高了应用程序安装包反编译篡改的难度,同时减小了应用程序运行时所占用的内存空间。以下分别通过实施例进行详细说明。
请参阅图1,图1示出了本发明实施例公开的一种生成应用程序安装包的方法的流程图。如图1所示,该生成应用程序安装包的方法可以包括以下步骤:
S101:获取应用程序中的资源文件夹中的资源文件的名称,以及代码文件夹中的代码文件中资源文件的调用位置;
android应用程序包括代码文件、资源文件和配置文件等,其中代码文件存储在应用程序的代码文件夹中,资源文件存储在应用程序的资源文件夹中。
具体地,android应用程序的资源文件包括图片、文字、布局文件、动画效果配置文件、颜色值和固定数值等,为了开发方便、表达清晰,很多的资源的名称都很长,例如,名称为add_friend_recommend_layout.xml的布局文件,调用这个布局文件的时候,在代码中占据比较多的字符,如 layout="@layout/add_friend_recommend_layout"/>。这种资源文件很多的话,会直接导致应用程序安装包变大,而且运行时占用的内存也会较大。
本发明实施例中,在应用程序打包之前,扫描应用程序全套项目,找出资源文件夹中所有的资源文件和代码文件夹中调用资源文件的代码文件,并获取找出的资源文件夹中所有的资源文件的名称,获取代码文件夹中的代码文件中资源文件的调用位置,所述调用位置具体为代码文件的第几行或者第几行第几列。资源文件包括图片、文字、布局文件、动画效果配置文件、颜色值和固定数值等。比如,名称为add_friend_recommend_layout.xml的布局文件,名称为 add_friend.xml的文件第79行调用了该布局文件;名称为R.drawable.icon的资源文件,名称为BaseApplicationlmpl.java的文件第131行,第24列到第39列调用了该资源文件。
S102:当所述资源文件的名称的长度大于设定阈值时,将资源文件夹中的资源文件的名称和所述代码文件中调用位置处的资源文件名称替换为一长度小于所述设定阈值的名称;
具体地,可先设定阈值,阈值可以为,例如,4个字符。判断步骤S101中找出的资源文件夹中的所有资源文件的名称的长度是否大于设定阈值,若资源文件的名称的长度大于设定阈值,则将资源文件夹中的资源文件的名称和代码文件中调用位置处的资源文件名称替换为一长度小于所述设定阈值的名称;若资源文件的名称的长度小于等于设定阈值,则不对资源文件夹中的资源文件的名称和代码文件中调用位置处的资源文件名称进行替换。进一步,可用英文字母或英文字母和数字的组合来替换资源文件夹中的资源文件的名称和代码文件中调用位置处的资源文件名称。例如,设定阈值为4个字符,布局文件add_friend_recommend_layout.xml的名称的长度为27个字符,其长度超过4个字符,则将add_friend_recommend_layout.xml 替换为:auo.xml,替换后的名称的长度小于4个字符;相应的将调用该布局文件的add_friend.xml文件的第79行做如下替换:替换前为 layout="@layout/add_friend_recommend_layout"/>,替换后为 layout="@layout/auo"/>。又如,strings.xml文件中的内容<string name="cancel"> 取消</string>,其中cancel为6个字符,其长度超过4字符,则将 <string name="cancel">取消</string>替换为:<stringname="a2">取消</string>,调用此文字资源的TroopShareUtility.java代码中,将 chooseShareTypeSheet.addCancelButton(R.string.cancel)替换为: chooseShareTypeSheet.addCancelButton(R.string.a2)。
S103:将资源文件夹中名称替换后的资源文件、调用位置处的资源文件名称替换后的代码文件和所述应用程序的其余文件打包,生成所述应用程序的安装包;
具体地,将步骤102中资源文件夹中名称替换后的资源文件、调用位置处的资源文件名称替换后的代码文件和应用程序的其余文件,利用ant脚本调用 android提供的软件开发工具包(Software Development Kit,简称SDK)中的打包工具aapt(Android AssetPackaging Tool)进行打包,生成应用程序安装包 (AndroidPackage,简称APK)。其中,应用程序的其余文件包括:名称长度小于等于设定阈值的资源文件夹中的资源文件、调用该资源文件的代码文件、其他配置文件等。具体的打包方法同现有技术,在此不再赘述。
在图1提供的生成应用程序安装包的方法中,获取应用程序中的资源文件夹中的资源文件的名称,以及代码文件夹中的代码文件中资源文件的调用位置;当所述资源文件的名称的长度大于设定阈值时,将资源文件夹中的资源文件的名称和所述代码文件中调用位置处的资源文件名称替换为一长度小于所述设定阈值的名称;将资源文件夹中名称替换后的资源文件、调用位置处的资源文件名称替换后的代码文件和所述应用程序的其余文件打包,生成所述应用程序的安装包,从而减小了应用程序安装包的大小,同时减小了应用程序运行时所占用的内存空间。
请参阅图2,图2示出了本发明实施例公开的另一种生成应用程序安装包的方法的流程图。如图2所示,该生成应用程序安装包的方法可以包括以下步骤:
S201:打包应用程序之前,判断是否对应用程序进行处理;
具体地,当完成应用程序的开发,准备进行打包以生成应用程序安装包之前,判断是否对应用程序进行处理,若要对应用程序进行测试,则不对应用程序进行处理,执行步骤S202;否则,则对应用程序进行处理,执行步骤S203。
S202:正常打包应用程序;
具体地,利用ant脚本调用android提供的软件开发工具包(SoftwareDevelopment Kit,简称SDK)中的打包工具aapt(Android Asset Packaging Tool),将代码文件、资源文件以及其他配置文件打包,生成应用程序安装包 (AndroidPackage,简称APK)。
S203:扫描所述应用程序,获取应用程序中的资源文件夹中的资源文件的名称,以及代码文件夹中的代码文件中资源文件的调用位置;
具体地,遍历应用程序全套项目中的所有文件,找出资源文件夹中所有的资源文件和代码文件夹中调用资源文件的代码文件,并获取找出的资源文件夹中所有的资源文件的名称,获取代码文件夹中的代码文件中资源文件的调用位置,所述调用位置具体为代码文件的第几行或者第几行第几列。资源文件包括图片、文字、布局、动画效果配置文件、颜色值和固定数值等。比如,名称为 add_friend_recommend_layout.xml的布局文件,名称为add_friend.xml的文件第 79行调用了该布局文件;名称为R.drawable.icon的资源文件,名称为 BaseApplicationlmpl.java的文件第131行,第24列到第39列调用了该资源文件。
S204:以键值的形式存储所述资源文件夹中的资源文件的名称以及代码文件夹中的代码文件中资源文件的调用位置;
图3示出了资源文件夹中的资源文件的名称以及代码文件夹中的代码文件中资源文件的调用位置的存储结构示意图。按照图3的结构,将步骤S203中获取的找出的资源文件夹中所有的资源文件的名称以键值的形式进行存储,将代码文件夹中的代码文件中资源文件的调用位置以链表的形式进行存储。例如:名称为R.drawable.icon的资源文件1,调用该资源文件1的调用位置1为: BaseApplicationlmpl.java文件第131行第24列到第39列;调用该资源文件1的调用位置2为:SplashActivityCore.java文件第658行第59列到第74列。名称为 add_friend_recommend_layout.xml的资源文件2,调用该资源文件2的调用位置为: add_friend.xml文件的第79行。
S205:当所述资源文件的名称的长度大于设定阈值时,将资源文件夹中的资源文件的名称和所述代码文件中调用位置处的资源文件名称替换为一长度小于所述设定阈值的名称,其中所述设定阈值的名称为单个英文字母或多个英文字母的组合,所述设定阈值的名称还可以为英文字母和数字的组合;
具体地,按照图3中资源文件夹中的资源文件的名称存储的顺序,依次用英文字母来替换资源文件夹中的资源文件的名称,即用a来替换资源文件夹中资源文件1的名称,用b来替换资源文件夹中资源文件2的名称,用c来替换资源文件夹中资源文件3的名称,按顺序进行替换,z用完之后,从aa开始到 az,az用完之后,从ba开始到bz,按照英文字母排序增长,直到资源文件夹中所有的资源文件名称都被替换完为止。同时将代码文件中调用位置处的资源文件名称用相应的字母进行替换。表一示出了资源文件夹中名称替换前和名称替换后的资源文件。
具体地,按照图3中资源文件夹中的资源文件名称存储的顺序,依次用英文字母和数字的组合来替换资源文件夹中的资源文件的名称,即用a1替换资源文件夹中资源文件1的名称,用a2替换资源文件夹中资源文件2的名称,用a3 替换资源文件夹中资源文件3的名称,直到a9,a9用完之后,从b1到b9,c1 到c9,直到z9,之后从a11到a19,从a21到a29,直到a99,之后从b11开始,直到资源文件夹中所有的资源文件名称都被替换完为止。同时将代码文件中调用位置处的资源文件名称用相应的英文字母和数字的组合进行替换。表二示出了资源文件夹中名称替换前和名称替换后的资源文件。
S207:生成地图日志文件;
具体地,生成地图日志文件是为了给以后的排查除错带来便利,地图日志文件记录了资源文件夹中的资源文件的名称替换前和替换后的对应关系,以及代码文件中调用位置处的资源文件名称替换前和替换后的对应关系。例如:文字资源名称can_not_set_birth_of_date替换为bqt的地图日志如下,具体表达的意思是:资源文件夹中文字资源文件中字符串名称can_not_set_birth_of_date替换前和替换后的对应关系,代码文件夹中的代码文件中调用位置处字符串名称 can_not_set_birth_of_date替换前和替换后的对应关系。
-----------------------bqt-----------------------------------------res\values\strings.xml
—>line:1366<string name="can_not_set_birth_of_date">-->"<stringname="bqt">
src\com\tencent\mobileqq\activity\DetailProfileActivity.java
—>line:596 notifyUser(R.string.can_not_set_birth_of_date,QQToast.ICON_ERROR);-->notifyUser(R.string.bqt,QQToast.ICON_ERROR);
S207:将资源文件夹中名称替换后的资源文件、调用位置处的资源文件名称替换后的代码文件和所述应用程序的其余文件打包,生成所述应用程序的安装包。
具体地,利用ant脚本调用android提供的软件开发工具包(SoftwareDevelopment Kit,简称SDK)中的打包工具aapt(Android Asset Packaging Tool) 将资源文件夹中名称替换后的资源文件、调用位置处的资源文件名称替换后的代码文件和所述应用程序的其余文件打包,生成应用程序安装包 (AndroidPackage,简称APK),其中,应用程序的其余文件包括:资源文件夹中名称长度小于等于设定阈值的资源文件、代码文件夹中调用该资源文件的代码文件、其他配置文件等。具体的打包方法同现有技术,在此不再赘述。
在图2提供的生成应用程序安装包的方法中,获取应用程序中的资源文件夹中的资源文件的名称,以及代码文件夹中的代码文件中资源文件的调用位置;当所述资源文件的名称的长度大于设定阈值时,将资源文件夹中的资源文件的名称和所述代码文件中调用位置处的资源文件名称替换为英文字母或者英文字母和数字的组合,从而使资源文件的名称由长的自然语言变成了短的字符名称,这样既减小了应用程序安装包的大小,减小了应用程序运行时所占用的内存空间,同时提高了反编译篡改应用程序安装包的难度。
请参阅图4,图4示出了本发明实施例提供的一种生成应用程序安装包的装置的结构示意图。如图4所示,该生成应用程序安装包的装置40可以包括获取模块401、替换模块402和打包模块403,其中:
获取模块401,用于获取应用程序中的资源文件夹中的资源文件的名称,以及代码文件夹中的代码文件中资源文件的调用位置。具体地,在应用程序打包之前,扫描应用程序全套项目,找出资源文件夹中所有的资源文件和代码文件夹中调用资源文件的代码文件,并获取找出的资源文件夹中所有的资源文件的名称,获取代码文件夹中的代码文件中资源文件的调用位置,所述调用位置具体为代码文件的第几行或者第几行第几列。资源文件包括图片、文字、布局文件、动画效果配置文件、颜色值和固定数值等。比如,名称为 add_friend_recommend_layout.xml的布局文件,名称为add_friend.xml的文件第 79行调用了该布局文件;名称为R.drawable.icon的资源文件,名称为 BaseApplicationlmpl.java的文件第131行,第24列到第39列调用了该资源文件。
替换模块402,用于当所述资源文件的名称的长度大于设定阈值时,将资源文件夹中的资源文件的名称和所述代码文件中调用位置处的资源文件名称替换为一长度小于所述设定阈值的名称。具体地,可先设定阈值,阈值可以为,例如,4个字符。判断找出的资源文件夹中的所有资源文件的名称的长度是否大于设定阈值,若资源文件的名称的长度大于设定阈值,则将资源文件夹中的资源文件的名称和代码文件中调用位置处的资源文件名称替换为一长度小于所述设定阈值的名称;若资源文件的名称的长度小于等于设定阈值,则不对资源文件夹中的资源文件的名称和代码文件中调用位置处的资源文件名称进行替换。进一步,可用英文字母或英文字母和数字的组合来替换资源文件夹中的资源文件的名称和代码文件中调用位置处的资源文件名称。例如,设定阈值为4个字符,布局文件add_friend_recommend_layout.xml的名称的长度为27个字符,其长度超过4个字符,则将add_friend_recommend_layout.xml替换为:auo.xml,替换后的名称的长度小于4个字符;相应的将调用该布局文件的add_friend.xml 文件的第79行做如下替换:替换前为 layout="@layout/add_friend_recommend_layout"/>,替换后为 layout="@layout/auo"/>。又如,strings.xml文件中的内容<string name="cancel"> 取消</string>,其中cancel为6个字符,其长度超过4字符,则将 <string name="cancel">取消</string>替换为:<stringname="a2">取消</string>,调用此文字资源的TroopShareUtility.java代码中,将 chooseShareTypeSheet.addCancelButton(R.string.cancel)替换为: chooseShareTypeSheet.addCancelButton(R.string.a2)。
打包模块403,用于将资源文件夹中名称替换后的资源文件、调用位置处的资源文件名称替换后的代码文件和所述应用程序的其余文件打包,生成所述应用程序的安装包。具体地,将资源文件夹中名称替换后的资源文件、调用位置处的资源文件名称替换后的代码文件和应用程序的其余文件,利用ant脚本调用 android提供的软件开发工具包(Software Development Kit,简称SDK)中的打包工具aapt(Android Asset PackagingTool)进行打包,生成应用程序安装包 (AndroidPackage,简称APK)。其中,应用程序的其余文件包括:名称长度小于等于设定阈值的资源文件夹中的资源文件、调用该资源文件的代码文件、其他配置文件等。具体的打包方法同现有技术,在此不再赘述。
在图4提供的生成应用程序安装包的方法中,获取应用程序中的资源文件夹中的资源文件的名称,以及代码文件夹中的代码文件中资源文件的调用位置;当所述资源文件的名称的长度大于设定阈值时,将资源文件夹中的资源文件的名称和所述代码文件中调用位置处的资源文件名称替换为一长度小于所述设定阈值的名称;将资源文件夹中名称替换后的资源文件、调用位置处的资源文件名称替换后的代码文件和所述应用程序的其余文件打包,生成所述应用程序的安装包,从而减小了应用程序安装包的大小,同时减小了应用程序运行时所占用的内存空间。
请参阅图5,图5示出了本发明实施例公开的另一种生成应用程序安装包的的装置的结构示意图。其中,图5所示的生成应用程序安装包的装置是由图4 所示的生成应用程序安装包的装置进行优化得到的。在图5所示的生成应用程序安装包的装置50中,进一步包括了判断模块501、正常打包模块502、地图日志文件生成模块503,而获取模块401可进一步包括扫描单元4011和存储单元4012,装置50还包括打包模块403,其中:
判断模块501:用于打包应用程序之前,判断是否对应用程序进行处理。具体地,当完成应用程序的开发,准备进行打包以生成应用程序安装包之前,判断是否对应用程序进行处理,若要对应用程序进行测试,则不对应用程序进行处理;否则,则对应用程序进行处理。
正常打包模块502:用于正常打包应用程序。具体地,利用ant脚本调用 android提供的软件开发工具包(Software Development Kit,简称SDK)中的打包工具aapt(AndroidAsset Packaging Tool),将代码文件、资源文件以及其他配置文件打包,生成应用程序安装包(AndroidPackage,简称APK)。
获取模块401中的扫描单元4011,用于扫描所述应用程序,获取应用程序中的资源文件夹中的资源文件的名称,以及代码文件夹中的代码文件中资源文件的调用位置。具体地,遍历应用程序全套项目中的所有文件,找出资源文件夹中所有的资源文件和代码文件夹中调用资源文件的代码文件,并获取找出的资源文件夹中所有的资源文件的名称,获取代码文件夹中的代码文件中资源文件的调用位置,所述调用位置具体为代码文件的第几行或者第几行第几列。资源文件包括图片、文字、布局、动画效果配置文件、颜色值和固定数值等。比如,名称为add_friend_recommend_layout.xml的布局文件,名称为add_friend.xml的文件第79行调用了该布局文件;名称为R.drawable.icon的资源文件,名称为BaseApplicationlmpl.java的文件第131行,第24列到第39列调用了该资源文件。
获取模块401中的存储单元4012,用于以键值的形式存储所述资源文件夹中的资源文件的名称以及代码文件夹中的代码文件中资源文件的调用位置。按照图3的结构,将获取的找出的资源文件夹中所有的资源文件的名称以键值的形式进行存储,将代码文件夹中的代码文件中资源文件的调用位置以链表的形式进行存储。例如:名称为R.drawable.icon的资源文件1,调用该资源文件1的调用位置1为:BaseApplicationlmpl.java文件第131行第24列到第39列;调用该资源文件1 的调用位置2为:SplashActivityCore.java文件第658行第59列到第74列。名称为 add_friend_recommend_layout.xml的资源文件2,调用该资源文件2的调用位置为: add_friend.xml文件的第79行。
替换模块402,用于当所述资源文件的名称的长度大于设定阈值时,将资源文件夹中的资源文件的名称和所述代码文件中调用位置处的资源文件名称替换为一长度小于所述设定阈值的名称,其中所述设定阈值的名称为单个英文字母或多个英文字母的组合,所述设定阈值的名称还可以为英文字母和数字的组合;
具体地,按照图3中资源文件夹中的资源文件的名称存储的顺序,依次用英文字母来替换资源文件夹中的资源文件的名称,即用a来替换资源文件夹中资源文件1的名称,用b来替换资源文件夹中资源文件2的名称,用c来替换资源文件夹中资源文件3的名称,按顺序进行替换,z用完之后,从aa开始到 az,az用完之后,从ba开始到bz,按照英文字母排序增长,直到资源文件夹中所有的资源文件名称都被替换完为止。同时将代码文件中调用位置处的资源文件名称用相应的字母进行替换。
具体地,按照图3中资源文件夹中的资源文件名称存储的顺序,依次用英文字母和数字的组合来替换资源文件夹中的资源文件的名称,即用a1替换资源文件夹中资源文件1的名称,用a2替换资源文件夹中资源文件2的名称,用a3 替换资源文件夹中资源文件3的名称,直到a9,a9用完之后,从b1到b9,c1 到c9,直到z9,之后从a11到a19,从a21到a29,直到a99,之后从b11开始,直到资源文件夹中所有的资源文件名称都被替换完为止。同时将代码文件中调用位置处的资源文件名称用相应的英文字母和数字的组合进行替换。
地图日志生成模块503:用于生成地图日志文件。具体地,生成地图日志文件是为了给以后的排查除错带来便利,地图日志文件记录了资源文件夹中的资源文件的名称替换前和替换后的对应关系,以及代码文件中调用位置处的资源文件名称替换前和替换后的对应关系。
打包模块403:用于将资源文件夹中名称替换后的资源文件、调用位置处的资源文件名称替换后的代码文件和所述应用程序的其余文件打包,生成所述应用程序的安装包。具体地,利用ant脚本调用android提供的软件开发工具包 (Software Development Kit,简称SDK)中的打包工具aapt(Android Asset Packaging Tool)将资源文件夹中名称替换后的资源文件、调用位置处的资源文件名称替换后的代码文件和所述应用程序的其余文件打包,生成应用程序安装包(AndroidPackage,简称APK),其中,应用程序的其余文件包括:资源文件夹中名称长度小于等于设定阈值的资源文件、代码文件夹中调用该资源文件的代码文件、其他配置文件等。具体的打包方法同现有技术,在此不再赘述。
在图5提供的生成应用程序安装包的装置中,获取应用程序中的资源文件夹中的资源文件的名称,以及代码文件夹中的代码文件中资源文件的调用位置;当所述资源文件的名称的长度大于设定阈值时,将资源文件夹中的资源文件的名称和所述代码文件中调用位置处的资源文件名称替换为英文字母或者英文字母和数字的组合,从而使资源文件的名称由长的自然语言变成了短的字符名称,这样既减小了应用程序安装包的大小,减小了应用程序运行时所占用的内存空间,同时提高了反编译篡改应用程序安装包的难度。
本发明实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。本发明实施例装置中的模块或单元可以根据实际需要进行合并、划分和删减。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random AccessMemory,RAM)、磁盘或光盘等。
以上对本发明实施例公开的生成应用程序安装包的方法及装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般
技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (12)
1.一种应用程序安装包的生成方法,其特征在于,所述方法包括如下步骤:
扫描应用程序全套项目,找出资源文件夹中所有的资源文件和代码文件夹中调用资源文件的代码文件;
获取应用程序中的资源文件夹中的资源文件的名称,以及代码文件夹中的代码文件中资源文件的调用位置;其中,将所述资源文件夹中的资源文件的名称以键值的形式进行存储,将所述代码文件夹中的代码文件中资源文件的调用位置以链表的形式进行存储;
当所述资源文件的名称的长度大于设定阈值时,将资源文件夹中的资源文件的名称和所述代码文件中调用位置处的资源文件名称替换为一长度小于所述设定阈值的名称;包括:按照所述资源文件夹中的资源文件名称存储的顺序,依次为所述资源文件分配替换后的资源文件名称;
生成地图日志文件,所述地图日志文件记录了所述资源文件夹中的资源文件的名称替换前和替换后的对应关系,以及代码文件中调用位置处的资源文件名称替换前和替换后的对应关系;
将资源文件夹中名称替换后的资源文件、调用位置处的资源文件名称替换后的代码文件和所述应用程序的其余文件打包,生成所述应用程序的安装包。
2.根据权利要求1所述的方法,其特征在于,所述获取应用程序中的资源文件夹中的资源文件的名称,以及代码文件夹中的代码文件中资源文件名称的调用位置包括:
扫描所述应用程序,获取应用程序中的资源文件夹中的资源文件的名称,以及代码文件夹中的代码文件中资源文件名称的调用位置。
3.根据权利要求2所述的方法,其特征在于,所述当所述资源文件的名称的长度大于设定阈值时,将资源文件夹中的资源文件的名称和所述代码文件中调用位置处的资源文件名称替换为一长度小于所述设定阈值的名称,其中所述设定阈值的名称为单个英文字母或多个英文字母的组合。
4.根据权利要求2所述的方法,其特征在于,所述当所述资源文件的名称的长度大于设定阈值时,将资源文件夹中的资源文件的名称和所述代码文件中调用位置处的资源文件名称替换为一长度小于所述设定阈值的名称,其中所述设定阈值的名称为英文字母和数字的组合。
5.根据权利要求3所述的方法,其特征在于,所述当所述资源文件的名称的长度大于设定阈值时,将资源文件夹中的资源文件的名称和所述代码文件中调用位置处的资源文件名称替换为一长度小于所述设定阈值的名称,具体为:
按照所述资源文件夹中的资源文件名称存储的顺序,依次用英文字母来替换所述资源文件夹中的资源文件的名称,直到资源文件夹中所有的资源文件名称都被替换完为止;
将所述代码文件中调用位置处的资源文件名称用相应的英文字母进行替换。
6.根据权利要求4所述的方法,其特征在于,所述当所述资源文件的名称的长度大于设定阈值时,将资源文件夹中的资源文件的名称和所述代码文件中调用位置处的资源文件名称替换为一长度小于所述设定阈值的名称,具体为:
按照所述资源文件夹中的资源文件名称存储的顺序,依次用英文字母和数字的组合来替换所述资源文件夹中的资源文件的名称,直到资源文件夹中所有的资源文件名称都被替换完为止;
将所述代码文件中调用位置处的资源文件名称用相应的英文字母和数字的组合进行替换。
7.一种生成应用程序安装包的装置,其特征在于,包括:
获取模块,用于扫描应用程序全套项目,找出资源文件夹中所有的资源文件和代码文件夹中调用资源文件的代码文件;获取应用程序中的资源文件夹中的资源文件的名称,以及代码文件夹中的代码文件中资源文件的调用位置;其中,将所述资源文件夹中的资源文件的名称以键值的形式进行存储,将所述代码文件夹中的代码文件中资源文件的调用位置以链表的形式进行存储;
替换模块,用于当所述资源文件的名称的长度大于设定阈值时,将资源文件夹中的资源文件的名称和所述代码文件中调用位置处的资源文件名称替换为一长度小于所述设定阈值的名称;包括:按照所述资源文件夹中的资源文件名称存储的顺序,依次为所述资源文件分配替换后的资源文件名称;
打包模块,用于将资源文件夹中名称替换后的资源文件、调用位置处的资源文件名称替换后的代码文件和所述应用程序的其余文件打包,生成所述应用程序的安装包;
地图日志文件生成模块,用于生成地图日志文件,所述地图日志文件记录了所述资源文件夹中的资源文件的名称替换前和替换后的对应关系,以及代码文件中调用位置处的资源文件名称替换前和替换后的对应关系。
8.根据权利要求7所述的装置,其特征在于,所述获取模块包括:
扫描单元,用于扫描所述应用程序,获取应用程序中的资源文件夹中的资源文件的名称,以及代码文件夹中的代码文件中资源文件的调用位置;
存储单元,用于以键值的形式存储所述资源文件夹中的资源文件的名称以及代码文件夹中的代码文件中资源文件的调用位置。
9.根据权利要求8所述的装置,其特征在于,所述当所述资源文件的名称的长度大于设定阈值时,将资源文件夹中的资源文件的名称和所述代码文件中调用位置处的资源文件名称替换为一长度小于所述设定阈值的名称,其中所述设定阈值的名称为单个英文字母或多个英文字母的组合。
10.根据权利要求8所述的装置,其特征在于,所述当所述资源文件的名称的长度大于设定阈值时,将资源文件夹中的资源文件的名称和所述代码文件中调用位置处的资源文件名称替换为一长度小于所述设定阈值的名称,其中所述设定阈值的名称为英文字母和数字的组合。
11.一种存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时可实现如权利要求1至6中任一项所述的应用程序安装包的生成方法。
12.一种终端设备,包括存储介质,处理器及存储在存储介质上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如权利要求1至6中任一项所述的应用程序安装包的生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410234714.9A CN105204823B (zh) | 2014-05-29 | 2014-05-29 | 生成应用程序安装包的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410234714.9A CN105204823B (zh) | 2014-05-29 | 2014-05-29 | 生成应用程序安装包的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105204823A CN105204823A (zh) | 2015-12-30 |
CN105204823B true CN105204823B (zh) | 2019-11-05 |
Family
ID=54952535
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410234714.9A Active CN105204823B (zh) | 2014-05-29 | 2014-05-29 | 生成应用程序安装包的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105204823B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106997364A (zh) * | 2016-01-26 | 2017-08-01 | 阿里巴巴集团控股有限公司 | 一种终端的应用资源检测方法及装置 |
CN107315951B (zh) * | 2016-04-26 | 2021-04-30 | 腾讯科技(深圳)有限公司 | 一种程序安装包反拦截方法及装置 |
CN105915623A (zh) * | 2016-05-20 | 2016-08-31 | 努比亚技术有限公司 | 应用安装包处理装置及方法 |
CN106020725B (zh) * | 2016-05-20 | 2019-07-12 | 努比亚技术有限公司 | 应用文件处理装置及方法 |
CN107741844B (zh) | 2016-08-22 | 2020-12-01 | 腾讯科技(深圳)有限公司 | 一种应用安装包的生成方法和装置 |
CN106648638B (zh) * | 2016-12-09 | 2019-08-23 | 武汉斗鱼网络科技有限公司 | 一种基于python的R.java文件的优化方法及优化系统 |
CN106681788B (zh) * | 2017-02-17 | 2019-10-29 | 北京金山安全软件有限公司 | 减小应用安装包的方法、装置及电子设备 |
CN106775781B (zh) * | 2017-02-17 | 2021-04-27 | 北京金山安全软件有限公司 | 减小应用安装包的方法、装置及电子设备 |
CN106775916B (zh) * | 2017-02-17 | 2020-02-28 | 北京金山安全软件有限公司 | 减小应用安装包的方法、装置及电子设备 |
CN106909391A (zh) * | 2017-02-28 | 2017-06-30 | 东软集团股份有限公司 | 应用程序的定制方法及装置 |
CN107168719A (zh) * | 2017-06-02 | 2017-09-15 | 广州视源电子科技股份有限公司 | 应用程序运行方法、装置、终端及计算机可读存储介质 |
CN108089880A (zh) * | 2017-12-28 | 2018-05-29 | 北京奇虎科技有限公司 | 对应用程序安装文件进行预处理的方法、装置和服务器 |
CN110795114B (zh) * | 2019-10-29 | 2023-08-01 | 北京五八信息技术有限公司 | 应用程序安装包容量的监测方法、装置、电子设备及存储介质 |
CN111008178B (zh) * | 2019-11-05 | 2024-04-30 | 北京字节跳动网络技术有限公司 | 数据处理方法、装置、电子设备及计算机可读存储介质 |
CN111782230B (zh) * | 2020-07-07 | 2022-05-31 | 联想(北京)有限公司 | 程序安装控制方法、装置和电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101051319A (zh) * | 2007-05-11 | 2007-10-10 | 北京中星微电子有限公司 | 文件分配系统中的文件名生成方法及生成装置 |
CN101673261A (zh) * | 2008-09-10 | 2010-03-17 | 上海摩波彼克半导体有限公司 | 短文件名文件系统中实现支持长文件名的系统结构及方法 |
CN102033903A (zh) * | 2009-10-06 | 2011-04-27 | 罗伯特·博世有限公司 | 用于分析文件名的方法 |
CN102521309A (zh) * | 2011-11-24 | 2012-06-27 | 中国船舶重工集团公司第七○九研究所 | 一种数字视频录像文件存储组织及检索方法 |
-
2014
- 2014-05-29 CN CN201410234714.9A patent/CN105204823B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101051319A (zh) * | 2007-05-11 | 2007-10-10 | 北京中星微电子有限公司 | 文件分配系统中的文件名生成方法及生成装置 |
CN101673261A (zh) * | 2008-09-10 | 2010-03-17 | 上海摩波彼克半导体有限公司 | 短文件名文件系统中实现支持长文件名的系统结构及方法 |
CN102033903A (zh) * | 2009-10-06 | 2011-04-27 | 罗伯特·博世有限公司 | 用于分析文件名的方法 |
CN102521309A (zh) * | 2011-11-24 | 2012-06-27 | 中国船舶重工集团公司第七○九研究所 | 一种数字视频录像文件存储组织及检索方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105204823A (zh) | 2015-12-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105204823B (zh) | 生成应用程序安装包的方法及装置 | |
CN105100191B (zh) | 一种云编译实现Java应用安装的方法、装置及系统 | |
CN108197114B (zh) | 表格数据的检测方法、装置、存储介质及电子装置 | |
CN102810060B (zh) | 一种安致图片资源配置方法及装置 | |
WO2017088509A1 (zh) | 一种页面定制化的方法和装置 | |
CN107463668B (zh) | 序列化和反序列化的方法及装置、计算机设备及存储介质 | |
CN109144615A (zh) | 一种信息发布方法、装置、设备及存储介质 | |
CN106970820A (zh) | 代码存储方法及代码存储装置 | |
CN108804188A (zh) | 界面换肤方法及装置 | |
CN108376073A (zh) | 一种测试软件包生成方法及终端 | |
CN104965834B (zh) | 字体显示方法和装置 | |
CN108399072A (zh) | 应用页面更新方法和装置 | |
CN104850498B (zh) | 一种填充信息测试方法及系统 | |
CN106648569A (zh) | 目标序列化实现方法和装置 | |
CN109815115A (zh) | 调试桥接口的方法及装置、计算机设备、存储介质 | |
CN107301046A (zh) | 图标的处理方法和装置、计算机设备和存储介质 | |
CN104750472A (zh) | 一种终端应用的资源包管理方法和装置 | |
CN108418797A (zh) | 网页访问方法、装置、计算机设备和存储介质 | |
CN110555291B (zh) | 网页脚本代码保护方法及装置 | |
CN112035273A (zh) | 一种硬件数据获取方法、系统和计算机设备 | |
CN107678741A (zh) | 列表视图的实现方法、装置、可读存储介质及设备 | |
CN109669678A (zh) | 模板引擎整合方法、装置、电子设备及存储介质 | |
CN105279076B (zh) | 一种网页测试方法及终端 | |
CN108153745B (zh) | 一种应用数据调用方法及应用开发系统 | |
US10140278B2 (en) | Computer-implemented methods and systems for associating files with cells of a collaborative spreadsheet |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |