CN109542459A - 应用程序打包方法及装置、计算机装置及计算机存储介质 - Google Patents
应用程序打包方法及装置、计算机装置及计算机存储介质 Download PDFInfo
- Publication number
- CN109542459A CN109542459A CN201811151310.8A CN201811151310A CN109542459A CN 109542459 A CN109542459 A CN 109542459A CN 201811151310 A CN201811151310 A CN 201811151310A CN 109542459 A CN109542459 A CN 109542459A
- Authority
- CN
- China
- Prior art keywords
- file
- application program
- installation kit
- channel
- androidmanifest
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
Abstract
一种应用程序打包方法,包括:获取应用程序的基础安装包;创建所述应用程序的渠道号配置文件;从所述渠道号配置文件中读取一个渠道号;复制所述基础安装包,得到所述渠道号对应的初始安装包;在所述初始安装包的META‑INF目录下生成一个空文件;在所述初始安装包中,将所述空文件以所述渠道号命名,得到所述渠道号对应的渠道包。本发明还提供一种应用程序打包装置、计算机装置及计算机可读存储介质。本发明可以快速生成包含渠道信息的安装包。
Description
技术领域
本发明计算机软件技术领域,具体涉及一种应用程序打包方法及装置、计算机装置和计算机可读存储介质。
背景技术
目前市面上的App有很多需要配置多个渠道号,渠道号写在安装包里的一个静态文件里。现有的打包方式打多渠道号的安装包有下面几个问题:
(1)增加一个渠道号需要打一次包,打包需要执行完全多个步骤,打一次包耗时约五六分钟;
(2)依赖开发环境,比如Android Studio、eclipse,如果没有开发环境那么就无法提供其他的渠道包。
发明内容
鉴于以上内容,有必要提出一种应用程序打包方法及装置、计算机装置和计算机可读存储介质,其可以快速生成包含渠道信息的安装包。
本申请的第一方面提供一种应用程序打包方法,所述方法包括:
获取应用程序的基础安装包;
创建所述应用程序的渠道号配置文件;
从所述渠道号配置文件中读取一个渠道号;
复制所述基础安装包,得到所述渠道号对应的初始安装包;
在所述初始安装包的META-INF目录下生成一个空文件;
在所述初始安装包中,将所述空文件以所述渠道号命名,得到所述渠道号对应的渠道包。
另一种可能的实现方式中,所述获取应用程序的基础安装包包括:
打包所述应用程序的资源文件,生成R.java文件;
对所述应用程序的源码文件、aidl文件生成对应的java文件;
编译所述R.java文件、所述源码文件对应的java文件、所述aidl文件对应的java文件与所述应用程序的库文件,生成对应的class文件;
将所述class文件转化为Davik VM支持的dex文件;
将所述R.java文件、所述dex文件、所述应用程序的libs文件打包,生成apk文件。
另一种可能的实现方式中,所述获取应用程序的基础安装包还包括:
对所述apk文件进行签名;和/或
对所述apk文件进行对齐处理。
另一种可能的实现方式中,所述从所述渠道号配置文件中读取一个渠道号包括:
通过python脚本文件的调用命令从所述渠道号配置文件中读取所述渠道号。
另一种可能的实现方式中,所述方法还包括:
以所述渠道号对所述初始安装包命名。
另一种可能的实现方式中,所述方法还包括:
对所述渠道包进行加固,包括:
解压所述渠道包,提取所述渠道包中初始的AndroidManifest.xml文件;
对所述初始的AndroidManifest.xml文件进行修改,得到修改后的AndroidManifest.xml文件;
对所述修改后的AndroidManifest.xml文件进行加密,得到加密后的AndroidManifest.xml文件;
将所述加密后的AndroidManifest.xml文件与所述渠道包中所述初始的AndroidManifest.xml文件以外的其他文件打包,生成加固后的渠道包。
另一种可能的实现方式中,所述对所述初始的AndroidManifest.xml文件进行修改,得到修改后的AndroidManifest.xml文件包括:
在所述初始的AndroidManifest.xml文件的预设位置加入第一预设代码,得到所述修改后的AndroidManifest.xml文件;或者
搜索所述初始的AndroidManifest.xml文件中的第二预设代码,将所述初始的AndroidManifest.xml文件中的所述第二预设代码替换为指定代码,得到所述修改后的AndroidManifest.xml文件;或者
删除所述初始的AndroidManifest.xml文件中的第三预设代码,得到所述修改后的AndroidManifest.xml文件。
本申请的第二方面提供一种应用程序打包装置,所述装置包括:
获取单元,用于获取应用程序的基础安装包;
创建单元,用于创建所述应用程序的渠道号配置文件;
读取单元,用于从所述渠道号配置文件中读取一个渠道号;
复制单元,用于复制所述基础安装包,得到所述渠道号对应的初始安装包;
生成单元,用于在所述初始安装包的META-INF目录下生成一个空文件;
命名单元,用于在所述初始安装包中,将所述空文件以所述渠道号命名,得到所述渠道号对应的渠道包。
本申请的第三方面提供一种计算机装置,所述计算机装置包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现所述应用程序打包方法。
本申请的第四方面提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述应用程序打包方法。
本发明获取应用程序的基础安装包;创建所述应用程序的渠道号配置文件;从所述渠道号配置文件中读取一个渠道号;复制所述基础安装包,得到所述渠道号对应的初始安装包;在所述初始安装包的META-INF目录下生成一个空文件;在所述初始安装包中,将所述空文件以所述渠道号命名,得到所述渠道号对应的渠道包。本发明将读取的渠道号写入初始安装包的META-INF目录下,无需对初始安装包解压缩和重新打包生成渠道包,大大提高应用程序的打包效率,可以快速生成包含渠道信息的安装包。
附图说明
图1是本发明实施例提供的应用程序打包方法的流程图。
图2是本发明实施例提供的应用程序打包装置的结构图。
图3是本发明实施例提供的计算机装置的示意图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施例对本发明进行详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。
优选地,本发明的应用程序打包方法应用在多个计算机装置中。所述计算机装置是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程门阵列(Field-Programmable Gate Array,FPGA)、数字处理器(DigitalSignal Processor,DSP)、嵌入式设备等。
所述计算机装置可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述计算机装置可以与用户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互。
实施例一
图1是本发明实施例一提供的应用程序打包方法的流程图。所述应用程序打包方法应用于计算机装置中。所述应用程序打包方法对应用程序打包,生成包含渠道信息的安装包。如图1所示,所述应用程序打包方法具体包括以下步骤:
步骤101,获取应用程序的基础安装包。
所述基础安装包是不包含渠道信息的安装包。
可以获取一个已打包好的应用程序的基础安装包。或者,可以根据应用程序的源代码生成所述基础安装包。
在一个实施例中,生成基础安装包可以包括以下步骤:
第一步:打包应用程序的资源文件,生成R.java文件。此步骤中,可以利用安卓组件打包工具(Android Asset Packaging Tool,AAPT)对应用程序的Resource文件、AndroidManifest.xml文件、Android基础类库(Android.jar文件)等资源文件进行打包。
第二步:对应用程序的源码文件、aidl文件(包括framework.aidl文件)生成对应的java文件。此步骤中,可以利用Android接口定义语言(Android Interface DefinitionLanguage,AIDL)对应用程序的源码文件、aidl文件生成对应的java文件。
第三步:编译所述R.java文件、所述源码文件对应的java文件、所述aidl文件对应的java文件与所述应用程序的库文件,生成对应的class文件。此步骤中,可以利用javac工具将各个java文件(包括R.java文件以及源码文件对应的java文件、aidl文件对应的java文件)、库文件(jar文件)分别编译为class文件。
第四步:将所述class文件转化为Davik VM支持的dex文件。此步骤中的class文件包括由R.java文件生成的class文件、由源码文件对应的java文件生成的class文件、由aidl文件对应的java文件生成的class文件、由库文件生成的class文件。
第五步:将所述R.java文件、所述dex文件、所述应用程序的libs文件打包,生成apk文件。此步骤中,可以利用apkbuilder工具将R.java文件、dex文件、libs文件打包成apk文件。
上述步骤生成的基础安装包不带有任何的渠道信息,是根据应用程序的源代码编译得到的原始安装包。
基础安装包通常是压缩文件的形式。
在另一实施例中,生成基础安装包还可以包括:对所述apk文件进行签名。此步骤中,可以使用jarsigner对apk文件进行签名,得到签名后的apk文件。签名就是对安装包进行加密,签名操作可以提高安装包的安全性。
在另一实施例中,生成基础安装包还可以包括:对所述apk文件进行对齐处理。可以对签名后的apk文件进行对齐处理。此步骤中,可以使用zipalign工具对apk文件进行对齐处理。对齐处理是对apk文件的字节码进行优化,以提高应用程序的运行速度。
步骤102,创建所述应用程序的渠道号配置文件。
所述渠道号配置文件用于记录多个渠道号。
所述渠道号配置文件可以是文本文件,例如txt文件。可以在渠道号配置文件中按照预设格式记录所述多个渠道号。例如,可以每行记录一个渠道号。又如,可以用斜线(/)间隔不同的渠道号。
每个渠道号对应应用程序的一个应用市场(即下载渠道)。用户可以在移动终端上使用多个应用程序。具体地,用户首先需要从应用市场下载选定的应用程序的安装包,然后利用该安装包完成应用程序的安装,当应用程序安装完成后,用户就可以在移动终端上使用该应用程序。
目前,用于下载应用程序的应用市场数量众多。以安卓(Android)操作系统为例,目前可以支持Android应用程序下载的应用市场包括腾讯应用宝、谷歌(Google)应用商店、豌豆荚、应用宝、360手机助手等。一般情况下,一个应用程序在开发完成后,需要将应用程序的安装包发布到不同的应用市场上,以供用户从其中一个应用市场上下载选定的应用程序。
应用程序的安装包通过渠道号来区分不同的应用市场。
渠道号可以是channel加编号的形式,例如,共有15个渠道号,分别是Channel01、Channel02、Channel03…、channel15。渠道号也可以应用市场名称的形式,例如,360手机助手的渠道号为360-zhushou,豌豆荚的渠道号为wandoujia,乐视官方网站的渠道号为LETV-gov,安智市场的渠道号为Anzhi_market。需要说明的是,本发明实施例中,对于渠道号的命名方式并不唯一,上述命名仅供举例使用,渠道号的名称可以是数字、应用市场名称的全拼或缩写,也可以是随机字符串或者上述的任意组合,也可以是其他命名方式,只要能够唯一识别对应应用市场即可。
步骤103,从所述渠道号配置文件中读取一个渠道号。
例如,从所述渠道号配置文件中读取渠道号Channel01,对应的应用市场为腾讯应用宝。
在一个实施例中,可以通过python脚本文件的调用命令从渠道号配置文件中读取渠道号。
步骤104,复制所述基础安装包,得到所述渠道号对应的初始安装包。
例如,复制所述基础安装包,得到渠道号Channel01的初始安装包。
在本实施例中,可以以所述渠道号对所述初始安装包命名,以标识该初始安装包对应的应用市场。
例如,读取的渠道号为Channel01,将所述初始安装包命名为Channel01。
步骤105,在所述初始安装包的META-INF目录下生成一个空文件。
可以预先生成一个空文件,将所述空文件复制到所述初始安装包的META-INF目录下。
或者,可以在所述初始安装包的META-INF目录下创建一个空文件。
META-INF目录是安装包下面的一个目录,用来存放一些应用程序的信息(例如开发版本等),修改此目录中的文件内容不会对安装包产生影响。
步骤106,在所述初始安装包中,将所述空文件以所述渠道号命名,得到所述渠道号对应的渠道包。
例如,在所述初始安装包中,将所述空文件命名为Channel01,得到渠道号Channel01对应的渠道包。
在所述初始安装包中,将所述空文件以读取的渠道号命名,实现了将应用市场的渠道信息加入所述初始安装包,从而得到渠道包。
本发明将读取的渠道号写入所述初始安装包中的META-INF目录下,在应用程序安装启动后,可以读取所述渠道号。
实施例一的应用程序打包方法获取应用程序的基础安装包;创建所述应用程序的渠道号配置文件;从所述渠道号配置文件中读取一个渠道号;复制所述基础安装包,得到所述渠道号对应的初始安装包;在所述初始安装包的META-INF目录下生成一个空文件;在所述初始安装包中,将所述空文件以所述渠道号命名,得到所述渠道号对应的渠道包。实施例一将读取的渠道号写入初始安装包的META-INF目录下,无需对初始安装包解压缩和重新打包生成渠道包,大大提高应用程序的打包效率。
在另一实施例中,在将所述空文件以渠道号命名,得到所述应用程序的渠道包之后,所述应用程序打包方法还可以包括:对所述渠道包进行加固,具体包括:
(1)解压渠道包,提取渠道包中的初始的AndroidManifest.xml文件。
(2)对初始的AndroidManifest.xml文件进行修改,得到修改后的AndroidManifest.xml文件。例如,在初始的AndroidManifest.xml文件的预设位置(例如文件的结尾)加入第一预设代码,得到修改后的AndroidManifest.xml文件。或者,搜索初始的AndroidManifest.xml文件中的第二预设代码,将初始的AndroidManifest.xml文件中的第二预设代码替换为指定代码,得到修改后的AndroidManifest.xml文件。或者,删除初始的AndroidManifest.xml文件中的第三预设代码,得到修改后的AndroidManifest.xml文件。
(3)对修改后的AndroidManifest.xml文件进行加密,得到加密后的AndroidManifest.xml文件。可以按照预设加密算法(例如密钥对非对称加密算法)对修改后的AndroidManifest.xml文件进行加密。
(4)将加密后的AndroidManifest.xml文件与所述渠道包中初始的AndroidManifest.xml文件以外的其他文件打包,生成加固后的渠道包。
在另一实施例中,在将所述空文件以渠道号命名,得到所述应用程序的渠道包之后,所述应用程序打包方法还可以包括:将所述渠道包拷贝到指定目录。可以预设一个渠道包的目录,将得到的渠道包拷贝到该目录,以方便用户使用。
实施例二
图2为本发明实施例二提供的应用程序打包装置的结构图。如图2所示,所述应用程序打包装置10可以包括:获取单元201、创建单元202、读取单元203、复制单元204、生成单元205、命名单元206。
获取单元201,用于获取应用程序的基础安装包。
所述基础安装包是不包含渠道信息的安装包。
可以获取一个已打包好的应用程序的基础安装包。或者,可以根据应用程序的源代码生成所述基础安装包。
在一个实施例中,获取单元201生成基础安装包可以包括以下步骤:
第一步:打包应用程序的资源文件,生成R.java文件。此步骤中,可以利用安卓组件打包工具(Android Asset Packaging Tool,AAPT)对应用程序的Resource文件、AndroidManifest.xml文件、Android基础类库(Android.jar文件)等资源文件进行打包。
第二步:对应用程序的源码文件、aidl文件(包括framework.aidl文件)生成对应的java文件。此步骤中,可以利用Android接口定义语言(Android Interface DefinitionLanguage,AIDL)对应用程序的源码文件、aidl文件生成对应的java文件。
第三步:编译所述R.java文件、所述源码文件对应的java文件、所述aidl文件对应的java文件与所述应用程序的库文件,生成对应的class文件。此步骤中,可以利用javac工具将各个java文件(包括R.java文件以及源码文件对应的java文件、aidl文件对应的java文件)、库文件(jar文件)分别编译为class文件。
第四步:将所述class文件转化为Davik VM支持的dex文件。此步骤中的class文件包括由R.java文件生成的class文件、由源码文件对应的java文件生成的class文件、由aidl文件对应的java文件生成的class文件、由库文件生成的class文件。
第五步:将所述R.java文件、所述dex文件、所述应用程序的libs文件打包,生成apk文件。此步骤中,可以利用apkbuilder工具将R.java文件、dex文件、libs文件打包成apk文件。
获取单元201根据上述步骤生成的基础安装包不带有任何的渠道信息,是根据应用程序的源代码编译得到的原始安装包。
基础安装包通常是压缩文件的形式。
在另一实施例中,获取单元201生成基础安装包还可以包括:对所述apk文件进行签名。此步骤中,可以使用jarsigner对apk文件进行签名,得到签名后的apk文件。签名就是对安装包进行加密,签名操作可以提高安装包的安全性。
在另一实施例中,获取单元201生成基础安装包还可以包括:对所述apk文件进行对齐处理。可以对签名后的apk文件进行对齐处理。此步骤中,可以使用zipalign工具对apk文件进行对齐处理。对齐处理是对apk文件的字节码进行优化,以提高应用程序的运行速度。
创建单元202,用于创建所述应用程序的渠道号配置文件。
所述渠道号配置文件用于记录多个渠道号。
所述渠道号配置文件可以是文本文件,例如txt文件。可以在渠道号配置文件中按照预设格式记录所述多个渠道号。例如,可以每行记录一个渠道号。又如,可以用斜线(/)间隔不同的渠道号。
每个渠道号对应应用程序的一个应用市场(即下载渠道)。用户可以在移动终端上使用多个应用程序。具体地,用户首先需要从应用市场下载选定的应用程序的安装包,然后利用该安装包完成应用程序的安装,当应用程序安装完成后,用户就可以在移动终端上使用该应用程序。
目前,用于下载应用程序的应用市场数量众多。以安卓(Android)操作系统为例,目前可以支持Android应用程序下载的应用市场包括腾讯应用宝、谷歌(Google)应用商店、豌豆荚、应用宝、360手机助手等。一般情况下,一个应用程序在开发完成后,需要将应用程序的安装包发布到不同的应用市场上,以供用户从其中一个应用市场上下载选定的应用程序。
应用程序的安装包通过渠道号来区分不同的应用市场。
渠道号可以是channel加编号的形式,例如,共有15个渠道号,分别是Channel01、Channel02、Channel03…、channel15。渠道号也可以应用市场名称的形式,例如,360手机助手的渠道号为360-zhushou,豌豆荚的渠道号为wandoujia,乐视官方网站的渠道号为LETV-gov,安智市场的渠道号为Anzhi_market。需要说明的是,本发明实施例中,对于渠道号的命名方式并不唯一,上述命名仅供举例使用,渠道号的名称可以是数字、应用市场名称的全拼或缩写,也可以是随机字符串或者上述的任意组合,也可以是其他命名方式,只要能够唯一识别对应应用市场即可。
读取单元203,用于从所述渠道号配置文件中读取一个渠道号。
例如,从所述渠道号配置文件中读取渠道号Channel01,对应的应用市场为腾讯应用宝。
在一个实施例中,可以通过python脚本文件的调用命令从渠道号配置文件中读取渠道号。
复制单元204,用于复制所述基础安装包,得到所述渠道号对应的初始安装包。
例如,复制所述基础安装包,得到渠道号Channel01的初始安装包。
在本实施例中,可以以所述渠道号对所述初始安装包命名,以标识该初始安装包对应的应用市场。
例如,读取的渠道号为Channel01,将所述初始安装包命名为Channel01。
生成单元205,用于在所述初始安装包的META-INF目录下生成一个空文件。
可以预先生成一个空文件,将所述空文件复制到所述初始安装包的META-INF目录下。
或者,可以在所述初始安装包的META-INF目录下创建一个空文件。
META-INF目录是安装包下面的一个目录,用来存放一些应用程序的信息(例如开发版本等),修改此目录中的文件内容不会对安装包产生影响。
命名单元206,用于在所述初始安装包中,将所述空文件以所述渠道号命名,得到所述渠道号对应的渠道包。
例如,在所述初始安装包中,将所述空文件命名为Channel01,得到渠道号Channel01对应的渠道包。
在所述初始安装包中,将所述空文件以读取的渠道号命名,实现了将应用市场的渠道信息加入所述初始安装包,从而得到渠道包。
本发明将读取的渠道号写入所述初始安装包中的META-INF目录下,在应用程序安装启动后,可以读取所述渠道号。
实施例二的应用程序打包装置10获取应用程序的基础安装包;创建所述应用程序的渠道号配置文件;从所述渠道号配置文件中读取一个渠道号;复制所述基础安装包,得到所述渠道号对应的初始安装包;在所述初始安装包的META-INF目录下生成一个空文件;在所述初始安装包中,将所述空文件以所述渠道号命名,得到所述渠道号对应的渠道包。实施例二将读取的渠道号写入初始安装包的META-INF目录下,无需对初始安装包解压缩和重新打包生成渠道包,大大提高应用程序的打包效率,可以快速生成包含渠道信息的安装包。
在另一实施例中,所述程序打包装置10还可以包括:加固单元,用于对所述渠道包进行加固。对所述渠道包进行加固可以包括:
(1)解压渠道包,提取渠道包中的初始的AndroidManifest.xml文件。
(2)对初始的AndroidManifest.xml文件进行修改,得到修改后的AndroidManifest.xml文件。例如,在初始的AndroidManifest.xml文件的预设位置(例如文件的结尾)加入第一预设代码,得到修改后的AndroidManifest.xml文件。或者,搜索初始的AndroidManifest.xml文件中的第二预设代码,将初始的AndroidManifest.xml文件中的第二预设代码替换为指定代码,得到修改后的AndroidManifest.xml文件。或者,删除初始的AndroidManifest.xml文件中的第三预设代码,得到修改后的AndroidManifest.xml文件。
(3)对修改后的AndroidManifest.xml文件进行加密,得到加密后的AndroidManifest.xml文件。可以按照预设加密算法(例如密钥对非对称加密算法)对修改后的AndroidManifest.xml文件进行加密。
(4)将加密后的AndroidManifest.xml文件与所述渠道包中初始的AndroidManifest.xml文件以外的其他文件打包,生成加固后的渠道包。
在另一实施例中,所述程序打包装置10还可以包括:拷贝单元,用于将所述渠道包拷贝到指定目录。可以预设一个渠道包的目录,将得到的渠道包拷贝到该目录,以方便用户使用。
实施例三
本实施例提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述应用程序打包方法实施例中的步骤,例如图1所示的步骤101-106:
步骤101,获取应用程序的基础安装包;
步骤102,创建所述应用程序的渠道号配置文件;
步骤103,从所述渠道号配置文件中读取一个渠道号;
步骤104,复制所述基础安装包,得到所述渠道号对应的初始安装包;
步骤105,在所述初始安装包的META-INF目录下生成一个空文件;
步骤106,在所述初始安装包中,将所述空文件以所述渠道号命名,得到所述渠道号对应的渠道包。
或者,该计算机程序被处理器执行时实现上述装置实施例中各模块/单元的功能,例如图2中的单元201-206:
获取单元201,用于获取应用程序的基础安装包;
创建单元202,用于创建所述应用程序的渠道号配置文件;
读取单元203,用于从所述渠道号配置文件中读取一个渠道号;
复制单元204,用于复制所述基础安装包,得到所述渠道号对应的初始安装包;
生成单元205,用于在所述初始安装包的META-INF目录下生成一个空文件;
命名单元206,用于在所述初始安装包中,将所述空文件以所述渠道号命名,得到所述渠道号对应的渠道包。
实施例四
图3为本发明实施例四提供的计算机装置的示意图。所述计算机装置1包括存储器20、处理器30以及存储在所述存储器20中并可在所述处理器30上运行的计算机程序40,例如应用程序打包程序。所述处理器30执行所述计算机程序40时实现上述应用程序打包方法实施例中的步骤,例如图1所示的步骤101-106:
步骤101,获取应用程序的基础安装包;
步骤102,创建所述应用程序的渠道号配置文件;
步骤103,从所述渠道号配置文件中读取一个渠道号;
步骤104,复制所述基础安装包,得到所述渠道号对应的初始安装包;
步骤105,在所述初始安装包的META-INF目录下生成一个空文件;
步骤106,在所述初始安装包中,将所述空文件以所述渠道号命名,得到所述渠道号对应的渠道包。
或者,所述处理器30执行所述计算机程序40时实现上述装置实施例中各模块/单元的功能,例如图2中的单元201-206:
获取单元201,用于获取应用程序的基础安装包;
创建单元202,用于创建所述应用程序的渠道号配置文件;
读取单元203,用于从所述渠道号配置文件中读取一个渠道号;
复制单元204,用于复制所述基础安装包,得到所述渠道号对应的初始安装包;
生成单元205,用于在所述初始安装包的META-INF目录下生成一个空文件;
命名单元206,用于在所述初始安装包中,将所述空文件以所述渠道号命名,得到所述渠道号对应的渠道包。
示例性的,所述计算机程序40可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器20中,并由所述处理器30执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序40在所述计算机装置1中的执行过程。例如,所述计算机程序40可以被分割成图2中的获取单元201、创建单元202、读取单元203、复制单元204、生成单元205、命名单元206,各单元具体功能参见实施例二。
所述计算机装置1可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。本领域技术人员可以理解,所述示意图3仅仅是计算机装置1的示例,并不构成对计算机装置1的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述计算机装置1还可以包括输入输出设备、网络接入设备、总线等。
所称处理器30可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器30也可以是任何常规的处理器等,所述处理器30是所述计算机装置1的控制中心,利用各种接口和线路连接整个计算机装置1的各个部分。
所述存储器20可用于存储所述计算机程序40和/或模块/单元,所述处理器30通过运行或执行存储在所述存储器20内的计算机程序和/或模块/单元,以及调用存储在存储器20内的数据,实现所述计算机装置1的各种功能。所述存储器20可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据计算机装置1的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器20可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
所述计算机装置1集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
在本发明所提供的几个实施例中,应该理解到,所揭露的计算机装置和方法,可以通过其它的方式实现。例如,以上所描述的计算机装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
另外,在本发明各个实施例中的各功能单元可以集成在相同处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在相同单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。计算机装置权利要求中陈述的多个单元或计算机装置也可以由同一个单元或计算机装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。
Claims (10)
1.一种应用程序打包方法,其特征在于,所述方法包括:
获取应用程序的基础安装包;
创建所述应用程序的渠道号配置文件;
从所述渠道号配置文件中读取一个渠道号;
复制所述基础安装包,得到所述渠道号对应的初始安装包;
在所述初始安装包的META-INF目录下生成一个空文件;
在所述初始安装包中,将所述空文件以所述渠道号命名,得到所述渠道号对应的渠道包。
2.如权利要求1所述的方法,其特征在于,所述获取应用程序的基础安装包包括:
打包所述应用程序的资源文件,生成R.java文件;
对所述应用程序的源码文件、aidl文件生成对应的java文件;
编译所述R.java文件、所述源码文件对应的java文件、所述aidl文件对应的java文件与所述应用程序的库文件,生成对应的class文件;
将所述class文件转化为Davik VM支持的dex文件;
将所述R.java文件、所述dex文件、所述应用程序的libs文件打包,生成apk文件。
3.如权利要求2所述的方法,其特征在于,所述获取应用程序的基础安装包还包括:
对所述apk文件进行签名;和/或
对所述apk文件进行对齐处理。
4.如权利要求1所述的方法,其特征在于,所述从所述渠道号配置文件中读取一个渠道号包括:
通过python脚本文件的调用命令从所述渠道号配置文件中读取所述渠道号。
5.如权利要求1所述的方法,其特征在于,所述方法还包括:
以所述渠道号对所述初始安装包命名。
6.如权利要求1所述的方法,其特征在于,所述方法还包括:
对所述渠道包进行加固,包括:
解压所述渠道包,提取所述渠道包中初始的AndroidManifest.xml文件;
对所述初始的AndroidManifest.xml文件进行修改,得到修改后的AndroidManifest.xml文件;
对所述修改后的AndroidManifest.xml文件进行加密,得到加密后的AndroidManifest.xml文件;
将所述加密后的AndroidManifest.xml文件与所述渠道包中所述初始的AndroidManifest.xml文件以外的其他文件打包,生成加固后的渠道包。
7.如权利要求6所述的方法,其特征在于,所述对所述初始的AndroidManifest.xml文件进行修改,得到修改后的AndroidManifest.xml文件包括:
在所述初始的AndroidManifest.xml文件的预设位置加入第一预设代码,得到所述修改后的AndroidManifest.xml文件;或者
搜索所述初始的AndroidManifest.xml文件中的第二预设代码,将所述初始的AndroidManifest.xml文件中的所述第二预设代码替换为指定代码,得到所述修改后的AndroidManifest.xml文件;或者
删除所述初始的AndroidManifest.xml文件中的第三预设代码,得到所述修改后的AndroidManifest.xml文件。
8.一种应用程序打包装置,其特征在于,所述装置包括:
获取单元,用于获取应用程序的基础安装包;
创建单元,用于创建所述应用程序的渠道号配置文件;
读取单元,用于从所述渠道号配置文件中读取一个渠道号;
复制单元,用于复制所述基础安装包,得到所述渠道号对应的初始安装包;
生成单元,用于在所述初始安装包的META-INF目录下生成一个空文件;
命名单元,用于在所述初始安装包中,将所述空文件以所述渠道号命名,得到所述渠道号对应的渠道包。
9.一种计算机装置,其特征在于:所述计算机装置包括处理器,所述处理器用于执行存储器中存储的计算机程序以实现如权利要求1-7中任一项所述应用程序打包方法。
10.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现如权利要求1-7中任一项所述应用程序打包方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811151310.8A CN109542459A (zh) | 2018-09-29 | 2018-09-29 | 应用程序打包方法及装置、计算机装置及计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811151310.8A CN109542459A (zh) | 2018-09-29 | 2018-09-29 | 应用程序打包方法及装置、计算机装置及计算机存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109542459A true CN109542459A (zh) | 2019-03-29 |
Family
ID=65841367
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811151310.8A Pending CN109542459A (zh) | 2018-09-29 | 2018-09-29 | 应用程序打包方法及装置、计算机装置及计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109542459A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110377333A (zh) * | 2019-07-24 | 2019-10-25 | 上海游民网络科技有限公司 | 一种应用安装包文件处理方法及系统 |
CN110399160A (zh) * | 2019-07-29 | 2019-11-01 | 腾讯科技(深圳)有限公司 | 渠道包打包方法、装置、服务器以及存储介质 |
CN110442551A (zh) * | 2019-07-31 | 2019-11-12 | 江铃汽车股份有限公司 | 数据提取方法、装置、可读存储介质及计算机设备 |
CN110620827A (zh) * | 2019-10-29 | 2019-12-27 | 广州趣丸网络科技有限公司 | 一种Android云上分片打包方法、主机、系统和设备 |
CN111090422A (zh) * | 2019-10-23 | 2020-05-01 | 贝壳技术有限公司 | 一种基于Flutter的资源打包方法、装置和存储介质 |
CN111381865A (zh) * | 2020-04-01 | 2020-07-07 | 深圳传趣网络技术有限公司 | 游戏应用的打包方法、装置、设备及存储介质 |
CN111399864A (zh) * | 2020-03-16 | 2020-07-10 | 北京五八信息技术有限公司 | 一种安卓系统应用程序基础包生成方法以及生成装置 |
CN111596931A (zh) * | 2020-05-27 | 2020-08-28 | 北京学之途网络科技有限公司 | 应用程序封装方法、装置、电子设备及可读存储介质 |
CN111984300A (zh) * | 2020-09-08 | 2020-11-24 | 网易(杭州)网络有限公司 | 代码复制方法及装置、电子设备和计算机可读存储介质 |
CN113992655A (zh) * | 2021-10-26 | 2022-01-28 | 陕西绝顶人峰网络科技有限公司 | 一种软件分包方法、系统及计算机存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102087605A (zh) * | 2011-01-28 | 2011-06-08 | 宇龙计算机通信科技(深圳)有限公司 | 一种基于android平台应用安装控制方法及系统 |
KR101518420B1 (ko) * | 2014-11-11 | 2015-05-07 | 주식회사 에스이웍스 | 안드로이드 플랫폼에서의 apk 파일 관리 장치 및 방법 |
CN105718764A (zh) * | 2016-01-19 | 2016-06-29 | 北京鼎源科技有限公司 | 一种基于Android系统陷阱指令的软件加固方法 |
CN105893008A (zh) * | 2015-11-16 | 2016-08-24 | 乐视网信息技术(北京)股份有限公司 | 一种定制多渠道安装包的方法及装置 |
CN106843909A (zh) * | 2017-03-07 | 2017-06-13 | 东软集团股份有限公司 | 支持渠道定制的渠道打包方法及装置 |
-
2018
- 2018-09-29 CN CN201811151310.8A patent/CN109542459A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102087605A (zh) * | 2011-01-28 | 2011-06-08 | 宇龙计算机通信科技(深圳)有限公司 | 一种基于android平台应用安装控制方法及系统 |
KR101518420B1 (ko) * | 2014-11-11 | 2015-05-07 | 주식회사 에스이웍스 | 안드로이드 플랫폼에서의 apk 파일 관리 장치 및 방법 |
CN105893008A (zh) * | 2015-11-16 | 2016-08-24 | 乐视网信息技术(北京)股份有限公司 | 一种定制多渠道安装包的方法及装置 |
CN105718764A (zh) * | 2016-01-19 | 2016-06-29 | 北京鼎源科技有限公司 | 一种基于Android系统陷阱指令的软件加固方法 |
CN106843909A (zh) * | 2017-03-07 | 2017-06-13 | 东软集团股份有限公司 | 支持渠道定制的渠道打包方法及装置 |
Non-Patent Citations (8)
Title |
---|
JLINS: "浅谈Android的资源编译过程", 《HTTPS://CNBLOGS.COM/DYLLOVE98/P/3144950.HTML》 * |
JLINS: "浅谈Android的资源编译过程", 《HTTPS://CNBLOGS.COM/DYLLOVE98/P/3144950.HTML》, 19 June 2013 (2013-06-19), pages 1 - 80 * |
Q博士: "Android安全专项-Apk加固", pages 138 - 146, Retrieved from the Internet <URL:https://blog.csdn.net/itfootball/article/details/50962459/> * |
WALTER_FENG: "Android加固技术分析与多渠道打包实践", pages 1 - 8, Retrieved from the Internet <URL:https://www.jianshu.com/p/6529a7a550b8> * |
蕉下客--): "浅谈android代码保护技术_加固", 《HTTPS://WWW.CNBLOGS.COM/JIAOXIAKE/P/6536824.HTML》 * |
蕉下客--): "浅谈android代码保护技术_加固", 《HTTPS://WWW.CNBLOGS.COM/JIAOXIAKE/P/6536824.HTML》, 12 March 2017 (2017-03-12), pages 1 - 16 * |
马德棚: "Android应用差异性检测与分析", 《无线互联科技》 * |
马德棚: "Android应用差异性检测与分析", 《无线互联科技》, 25 January 2016 (2016-01-25), pages 77 - 79 * |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110377333A (zh) * | 2019-07-24 | 2019-10-25 | 上海游民网络科技有限公司 | 一种应用安装包文件处理方法及系统 |
CN110399160A (zh) * | 2019-07-29 | 2019-11-01 | 腾讯科技(深圳)有限公司 | 渠道包打包方法、装置、服务器以及存储介质 |
CN110399160B (zh) * | 2019-07-29 | 2024-04-02 | 腾讯科技(深圳)有限公司 | 渠道包打包方法、装置、服务器以及存储介质 |
CN110442551B (zh) * | 2019-07-31 | 2021-10-08 | 江铃汽车股份有限公司 | 数据提取方法、装置、可读存储介质及计算机设备 |
CN110442551A (zh) * | 2019-07-31 | 2019-11-12 | 江铃汽车股份有限公司 | 数据提取方法、装置、可读存储介质及计算机设备 |
CN111090422A (zh) * | 2019-10-23 | 2020-05-01 | 贝壳技术有限公司 | 一种基于Flutter的资源打包方法、装置和存储介质 |
CN110620827A (zh) * | 2019-10-29 | 2019-12-27 | 广州趣丸网络科技有限公司 | 一种Android云上分片打包方法、主机、系统和设备 |
CN110620827B (zh) * | 2019-10-29 | 2022-02-25 | 广州趣丸网络科技有限公司 | 一种Android云上分片打包方法、主机、系统和设备 |
CN111399864A (zh) * | 2020-03-16 | 2020-07-10 | 北京五八信息技术有限公司 | 一种安卓系统应用程序基础包生成方法以及生成装置 |
CN111381865A (zh) * | 2020-04-01 | 2020-07-07 | 深圳传趣网络技术有限公司 | 游戏应用的打包方法、装置、设备及存储介质 |
CN111596931A (zh) * | 2020-05-27 | 2020-08-28 | 北京学之途网络科技有限公司 | 应用程序封装方法、装置、电子设备及可读存储介质 |
CN111984300A (zh) * | 2020-09-08 | 2020-11-24 | 网易(杭州)网络有限公司 | 代码复制方法及装置、电子设备和计算机可读存储介质 |
CN111984300B (zh) * | 2020-09-08 | 2024-01-23 | 网易(杭州)网络有限公司 | 代码复制方法及装置、电子设备和计算机可读存储介质 |
CN113992655A (zh) * | 2021-10-26 | 2022-01-28 | 陕西绝顶人峰网络科技有限公司 | 一种软件分包方法、系统及计算机存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109542459A (zh) | 应用程序打包方法及装置、计算机装置及计算机存储介质 | |
US11029976B2 (en) | Facilitating multi-inheritance within a single inheritance container-based environment | |
US11093216B2 (en) | Automatic discovery of microservices from monolithic applications | |
CN104267978B (zh) | 一种生成差分包的方法及装置 | |
CN108830720A (zh) | 智能合约运行方法、装置、系统和计算机可读存储介质 | |
CN102314358B (zh) | 一种在云平台上以soa的方式部署常规应用的方法 | |
CN105814579A (zh) | 沙盒应用数据重定向至数据中心 | |
CN110908707B (zh) | 一种资源打包方法、装置、服务器及存储介质 | |
CN109976803B (zh) | 一种文件的生成方法及装置 | |
JPWO2017033441A1 (ja) | システム構築支援システム、方法および記憶媒体 | |
CN110059456A (zh) | 代码保护方法、代码保护装置、存储介质与电子设备 | |
CN111399840A (zh) | 一种模块开发方法及装置 | |
CN107463406A (zh) | 发布移动应用的方法和电子设备 | |
CN113778445A (zh) | 一种跨平台组件生成方法、装置、电子设备及存储介质 | |
CN102193818B (zh) | 虚拟应用程序包重构 | |
US10318262B2 (en) | Smart hashing to reduce server memory usage in a distributed system | |
CN110532016A (zh) | 版本管理方法、版本更新方法和版本管理系统 | |
CN103984554A (zh) | 软件设计文档的生成方法及装置 | |
US20180349102A1 (en) | Apparatus and method for converting large-scale application | |
CN102289367A (zh) | 根据模式的命令行外壳命令生成 | |
CN112270003A (zh) | 一种多业务动态配置数据源方法、平台及电子设备 | |
CN106557343A (zh) | 生成功能应用及加载资源的方法及装置 | |
US11301223B2 (en) | Artificial intelligence enabled function logic infusion | |
CN109933325A (zh) | 一种dex文件构建方法、装置及系统 | |
CN111176912A (zh) | 一种继电保护装置硬件配置信息管理系统和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |