CN107301074A - 在服务器上自动打包apk安装包的方法及*** - Google Patents

在服务器上自动打包apk安装包的方法及*** Download PDF

Info

Publication number
CN107301074A
CN107301074A CN201710495210.6A CN201710495210A CN107301074A CN 107301074 A CN107301074 A CN 107301074A CN 201710495210 A CN201710495210 A CN 201710495210A CN 107301074 A CN107301074 A CN 107301074A
Authority
CN
China
Prior art keywords
apk
packing
node
git
tasks carrying
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
Application number
CN201710495210.6A
Other languages
English (en)
Inventor
纪琦华
蒲珂
曾泽基
李哲山
赵永超
胡彬
方宏
蔡忠善
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Science And Technology Co Ltd
Original Assignee
China Science And Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by China Science And Technology Co Ltd filed Critical China Science And Technology Co Ltd
Priority to CN201710495210.6A priority Critical patent/CN107301074A/zh
Publication of CN107301074A publication Critical patent/CN107301074A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明涉及一种在服务器上自动打包APK安装包的方法,所述方法至少包括下述步骤:预先在管理服务器上搭建Jenkins平台,在其平台建立gradle命令任务;管理服务器获取目标项目代码的测试代码,生成测试项目集并保存至git库中;Jenkins执行节点定时自动从特定git库中获取目标测试项目集,采用gradle工具对获取的目标测试项目集文件进行编译打包,生成APK文件:通过接口脚本文件将生成的APK文件移动到指定的目录下。本发明旨在建立高效、准确、持续的打包APK安装包的自动化运作方法及***。

Description

在服务器上自动打包APK安装包的方法及***
技术领域
本发明涉及APK安装包打包领域,具体涉及一种在服务器上自动打包APK安装包的方法及***。
背景技术
现有的研发人员对安卓/iOS软件打包APK安装包,都是通过TDE手动升级后使用开发工具导出APK安装包,探后通过QQ或者邮件等形式发送给测试人员进行测试。这种通过人工打包及传输的方式无疑会增大研发人员内的工作量,且该工作为重复、耗时的工作,无法人工完成大量的打包过程,影响研发工作效率,且容易出错。
Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件做到可以持续集成,用于监控持续重复的工作,如安卓/iOS软件自动打包、自动测试、软件发布、网站监控等工作。但在服务器上实现测试人员根据自己的需求进行自动化打包的相关技术鲜少,且现有Jenkins服务器的测试文件的打包未能进行较好配置,导致Jenkins平台打包效率低。
因此,需要在服务器上,研发一种新的持续打包APK安装包的技术,可以在现有的资源和配置生成方式基础上,充分利用Jenkins平台完成多对象类型的APK安装包的打包,建立高效、准确、持续的自动化打包APK安装包的技术思路。
发明内容
本发明的目的在于提出一种在服务器上自动打包APK安装包的方法,该方法基于现有Jenkins平台持续集成和git库托管平台的应用,充分利用相应插件和信息配置,建立高效、准确、持续的打包APK安装包的自动化运作方法及***。
为实现上述目的,本发明所采用的技术方案是一种在服务器上自动打包APK安装包的方法,所述方法至少包括下述步骤:
预先在管理服务器上搭建Jenkins平台,在其平台建立gradle命令任务;
管理服务器获取目标项目代码的测试代码,生成测试项目集并保存至git库中;
Jenkins执行节点定时自动从特定git库中获取目标测试项目集,采用gradle工具对获取的目标测试项目集文件进行编译打包,生成APK文件:
通过接口脚本文件将生成的APK文件移动到指定的目录下。
本发明进一步的方案中,所述在Jenkins平台建立gradle命令任务具体包括下述步骤:
在Jenkins平台中配置特定git库和gradle工具包在所述管理服务器中的存储路径,以及测试代码集在打包前和打包后的存储路径;
在build命令中设置自动构建打包任务的执行时间,完成build.gradle配置文件。
在一个优选方案中,所述方法还包括对打包后的APK文件进行加固,具体为:
在Jenkins平台上添加用于加固的工具包插件,并配置加固工具包在所述管理服务器中的存储路径;
生成APK文件后,通过所述加固工具包先对APK文件进行签名,再对已签名的APK文件进行加固;
其中,所述加固是对指定的特征信息进行双重加密,所述指定的特征信息为AndroidMainfest.xml以及Dex文件。
本发明方法中git服务器生成特定git库,并对特定git库可设置权限角色,并依据相应的角色权限生成相应任务,具体为:
git服务器通过界面输入APK打包项目信息,并创建APK打包项目;其中,所述项目信息包括APK打包项目编码、项目的唯一标识码以及项目引用的配置服务器信息;
录入需要使用APK打包项目的参与人员,对其配置APK打包权限,生成APK打包项目的参与人员列表,随后引入至所述APK打包项目,创建打包模块信息;
git仓库生成一个.git目录,即特定git库,并将打包模块信息设为所述特定git库的匹配阈值;
管理服务器将获取的用户及其测试项目集上传至特定git库,与匹配阈值比对,判断是否为APK打包对象;如是,则加入特定git库。
进一步的方案中,所述判断是否为APK打包对象的方法为:
将管理服务器获取的用户与APK打包项目的参与人员列表匹配,如匹配成功,则满足APK打包项目的参与人员条件;
判断为满足APK打包项目的参与人员条件后,获取该用户的测试项目集的上下文信息;用git add命令告诉特定git库开始对测试项目集文件进行跟踪,并提交至特定git库。
本发明方法为提高Jenkins平台的打包效率,对其执行节点进行配置。具体的,所述方法在搭建Jenkins平台时,还包括:
在Jenkins平台上建立一个打包任务分配节点和N个打包任务执行节点,其中N为自然数;
在Jenkins执行任务时,还包括:到达执行时间,查询特定git库的任务,此时任务状态为待执行,特定git库分配任务给Jenkins平台的打包任务分配节点,再经由打包任务分配节点将任务平均分配给所有的任务执行节点,并更新状态为执行中。
再进一步的方案中,所述方法还包括在执行APK打包和加固时,监测任务执行节点的状态,并根据N个任务执行节点的状态反馈至git服务器,并采取相应操作,具体包括:
当加固状态的任务执行节点数为零,且空闲状态的任务执行节点数至少为打包状态的任务执行节点数的2倍时,则打包状态的任务执行节点强制离线,并更新状态为待执行,到达预设时间后,特定git库重新分配待执行状态的任务给Jenkins平台的打包任务分配节点;
当加固状态的任务执行节点数为零,且空闲状态的任务执行节点数不大于打包状态的任务执行节点数的2倍时,记录该情况出现的初始时间点,且各任务执行节点正常工作;经过预设的评估时间后,如加固状态的任务执行节点数仍然为零,且空闲状态的任务执行节点数仍然不大于打包状态的任务执行节点数的2倍,则打包状态的任务执行节点强制离线,并更新状态为待执行;否则,各任务执行节点正常工作;
在上述发生强制离线事件后,在到达预设时间时,特定git库重新分配待执行状态的任务给Jenkins平台的打包任务分配节点。
其中的优选方案,述预设时间为自N个任务执行节点全部强制离线起算的时间段;所述空闲状态是指当前执行节点数为零的状况。
本发明另一方面还提供了一种在服务器上自动打包APK安装包的***,基于管理服务器上搭建的Jenkins平台进行的APK打包,所述***至少包括
打包环境搭建模块,用于在管理服务器上搭建Jenkins平台,在其平台配置各工具插件的路径及信息,建立gradle命令任务;
信息实时获取模块,用于实时获取目标项目代码的测试代码,生成测试项目集,并存放置特定git库;
打包对象选取模块,包括录入单元、APK打包项目创建单元、权限指定单元、特定git库生成单元以及阈值匹配单元;
所述录入单元用于通过界面输入APK打包项目信息和需要使用APK打包项目的参与人员信息;
所述APK打包项目创建单元基于录入信息进行项目信息配置,创建APK打包项目;
所述权限指定单元用于对录入的需要使用APK打包项目的参与人员配置APK打包权限;
所述特定git库生成单元用于生成一个.git目录,即特定git库,并将打包模块信息设为所述特定git库的匹配阈值;
所述阈值匹配单元用于将管理服务器获取的用户及其测试项目集上传至特定git库,与匹配阈值比对,判断是否为APK打包对象;
编码打包模块,基于Jenkins平台自动从特定git库中获取目标测试项目集,采用gradle工具对获取的测试项目集文件进行编译打包,生成APK文件;
传输脚本模块,用于通过接口脚本文件将生成的APK文件移动到指定的目录下。
在上述方案的基础上,本发明***还提供了一个优选方案,所述***还包括APK文件加固模块,用于通过Jenkins平台的加固工具包先对APK文件进行签名,再对已签名的APK文件进行加固;所述加固是对指定的特征信息进行双重加密,所述指定的特征信息为AndroidMainfest.xml以及Dex文件;
所述编码打包模块还包括节点配置单元、执行节点监测单元以及执行节点重新分配单元;
所述节点配置单元用于在Jenkins平台上建立一个打包任务分配节点和N个打包任务执行节点,其中N为自然数;
所述执行节点监测单元用于在执行APK打包和加固时,监测任务执行节点的状态,并根据N个任务执行节点的状态反馈至git服务器;
所述执行节点重新分配单元依据监测点的N个任务执行节点的状态符合设定强制离线条件时,使打包状态的任务执行节点离线,更新状态为待执行;并在到达预设时间时,特定git库重新分配待执行状态的任务给Jenkins平台的打包任务分配节点。
本发明在服务器上自动打包APK安装包的方法及***,在服务器上搭建Jenkins平台,通过代码管理工具连接管理,实现测试人员根据自己的需求来对gradle文件进行简单APK打包;服务器基于脚本文件即可实现自动化打包。还通过Jenkins平台的安装包加固工具对APK安装包进行加固,增强APK安装包的安全性。
通过本发明方法及***将测试代码通过Jenkins平台自动部署到管理工具中进行分布式处理,可实现多个执行任务同时进行自动化打包及加固工作,极大简化了测试代码的在打包和加固过程中的重复性工作,大幅缩短测试周期,并确保良好的软件质量。
再者,在本发明的git服务器为Jenkins平台提供测试代码集的同时,特定git库针对性配置目标用户的打包权限及打包项目信息,使管理服务器在初步获取测试代码时实现随意性,且不影响后续打包的准确性,避免Jenkins平台获取非目标测试代码集以及对获取测试代码集的验证工作,从准确提供目标用户的目标测试代码集着手,进一步提高目标测试代码集的打包APK安装包及其加固工作的效率。
此外,在分布式处理的Jenkins平台上,由于不同执行节点的处理能力不同,对执行节点实时监测,在设定状态下获得处理能力弱的执行节点,并将其离线,重新分配执行任务,从而优化执行节点的分配,且保证打包及加固工作的有效进行。
附图说明
图1为本发明在服务器上自动打包APK安装包的方法中打包APK安装包的一种实施方式的示意图;
图2为本发明在服务器上自动打包APK安装包的方法中加固安装包的一种实施方式的示意图;
图3为本发明在服务器上自动打包APK安装包的方法中特定git库配置及生成任务的一种实施方式的示意图;
图4为本发明在服务器上自动打包APK安装包的方法中多执行节点执行原理的结构图;
图5为本发明在服务器上自动打包APK安装包的方法中分布式执行的一种实施方式的示意图;
图6为本发明在服务器上自动打包APK安装包的***的一种实施方式的工作结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面参考附图对本发明的实施例进行描述。参见图1,为一种在服务器上自动打包APK安装包的方法,所述方法包括下述步骤:
S10、预先在管理服务器上搭建Jenkins平台,在其平台建立gradle命令任务;
搭建所述在Jenkins平台建立gradle命令任务具体方法主要为:一是在Jenkins平台中配置特定git库和gradle工具包在所述管理服务器中的存储路径,以及测试代码集在打包前和打包后的存储路径;二是在build命令中设置自动构建打包任务的执行时间,并完成build.gradle配置文件。
在搭建的Jenkins平台添加管理插件工具--git插件以及gradle插件,添加后重启,进行***配置(主要配置jdk、git、gradle和email),例如将Jenkins***配置为可调用多个测试代码集在打包前和打包后在服务器中的存储路径,并且可调用用于打包APK安装包的工具包在管理服务器中的存储路径。以及添加特定git账户和密码;在Build Triggers中添加定时任务,以便在设定时间***执行自动构建打包等等。由此,由于在该Jenkins平台的插件的存在,可实现多个测试代码集在该服务器端的自动打包APK安装包过程。
S11、管理服务器获取目标项目代码的测试代码,生成测试项目集并保存至特定git库中;
S12、Jenkins执行节点定时自动从git库中获取目标测试项目集,采用gradle工具对获取的目标测试项目集文件进行编译打包,生成APK文件:
Jenkins基于多个执行节点的分布式处理,从特定git库中获取多个目标测试项目集,同时使用执行节点指定gradle.build构建Android项目,并打包成APK。
S13、通过接口脚本文件将生成的APK文件移动到指定的目录下。
本发明在服务器上自动打包APK安装包的方法的另一个实施方式如图2所示;在图1所示实施方式的基础上,本发明方法还包括对打包后的APK文件进行加固,具体加固步骤如下。
S20、在Jenkins平台上添加用于加固的工具包插件,并配置加固工具包在所述管理服务器中的存储路径;
S21、生成APK文件后,通过所述加固工具包先对APK文件进行签名,再对已签名的APK文件进行加固;
其中,所述加固工具包对具有用于在加固过程中对APK文件进行签名的工具和文件;所述加固是对指定的特征信息进行双重加密,所述指定的特征信息为AndroidMainfest.xml以及Dex文件。该方法实现APK文件的打包签名,以及APK安装包的自动化加固;在后续工作中,只有通过签名验证APK程序文件才允许安装到终端设备上,可防止应用程序被非法破解的情况发生。
图3示出了一种设置特定git库,以及对特定git库中设置打包权限角色和相应任务的方法的一种实施方式,包括下述步骤。
S30、git服务器通过界面输入APK打包项目信息,并创建APK打包项目;其中,所述项目信息包括APK打包项目编码、项目的唯一标识码以及项目引用的配置服务器信息;
S31、录入需要使用APK打包项目的参与人员,对其配置APK打包权限,生成APK打包项目的参与人员列表,随后引入至所述APK打包项目,创建打包模块信息;
S32、git仓库生成一个.git目录,即特定git库,并将打包模块信息设为所述特定git库的匹配阈值;
git服务器使用git init命令来初始化一个git仓库,在执行完成git init命令后,git仓库根目录下生成一个.git目录,该.git目录即为初始状态的特定git库。
在本发明中,打包模块信息设为所述特定git库的匹配阈值的同时,将项目编码作为组名,将项目编码加唯一标识码作为特定git库的库名,通过项目编码和唯一标识码保证特定git库ssh的唯一性。
S33、管理服务器将获取的用户及其测试项目集上传至特定git库,与匹配阈值比对,判断是否为APK打包对象;如是,则加入特定git库。
该步骤中,所述判断是否为APK打包对象的方法为:
S330、将管理服务器获取的用户与APK打包项目的参与人员列表匹配,如匹配成功,则满足APK打包项目的参与人员条件;
S331、判断为满足APK打包项目的参与人员条件后,获取该用户的测试项目集的上下文信息;用git add命令告诉特定git库开始对测试项目集文件进行跟踪,并提交至特定git库。
图4示出了本发明在服务器上自动打包APK安装包的方法中多执行节点执行原理的结构图,所述在Jenkins平台上建立有一个打包任务分配节点和N个打包任务执行节点,其中N为自然数;所述打包任务分配节点与git库中的特定git库连接,获取待执行的任务。
图5则示出了本发明Jenkins平台中多执行节点执行方法的示意图。所述方法体现在搭建Jenkins平台时,具体包括下述内容:
S40、在Jenkins平台上建立一个打包任务分配节点和N个打包任务执行节点,其中N为自然数;
S41、在Jenkins执行任务过程中,到达执行时间,则查询特定git库的任务,此时任务状态为待执行,特定git库分配任务给jenkins平台的打包任务分配节点,再经由打包任务分配节点将任务平均分配给所有的任务执行节点,并更新状态为执行中;
S42、在执行APK打包和加固时,监测任务执行节点的状态,并根据N个任务执行节点的状态反馈至git服务器,并采取相应操作;
该步骤的相应操作具体包括下述情况:
情况一、当加固状态的任务执行节点数为零,且空闲状态的任务执行节点数大于打包状态的任务执行节点数的2倍时,则打包状态的任务执行节点强制离线,并更新状态为待执行,到达预设时间后,特定git库重新分配待执行状态的任务给jenkins平台的打包任务分配节点。例如,任务执行节点数为10,空闲状态的任务执行节点数为7,打包状态的任务执行节点数则为3,属于情况一的范围,则将3个任务执行节点关闭。
情况二、当加固状态的任务执行节点数为零,且空闲状态的任务执行节点数不大于打包状态的任务执行节点数的2倍时,记录该情况出现的初始时间点,且各任务执行节点正常工作。
经过预设的评估时间后,如加固状态的任务执行节点数仍然为零,且空闲状态的任务执行节点数仍然不大于打包状态的任务执行节点数的2倍,则打包状态的任务执行节点强制离线,并更新状态为待执行;否则,各任务执行节点正常工作。在一个具体的举例中,例如,任务执行节点数为10,空闲状态的任务执行节点数为5,打包状态的任务执行节点数则为5,属于上述情况的范围,则各任务执行节点正常工作,且记录该检测时间点,即初始时间点,例如为06:10;预设的评估时间为20分钟,则经过20分钟后,即时间点为06:30时,检测所有任务执行节点数的情况,空闲状态的任务执行节点数仍然为5,打包状态的任务执行节点数仍然为5,则将打包状态的任务执行节点关闭。
情况一和情况二发生强制离线事件后,在到达预设时间时,特定git库重新分配待执行状态的任务给jenkins平台的打包任务分配节点。
上述中,所述预设时间为自N个任务执行节点全部离线起算的时间段;所述空闲状态是指当前执行节点数为零的状况。
情况三、在除情况一和情况二的状态外,任务执行节点按照正常程序工作,直至完成打包及加固工作。
本发明在服务器上自动打包APK安装包的***在管理服务器上搭建Jenkins环境和git环境,管理服务器实时获取目标测试代码集,并存放至git仓库,Jenkins从git仓库中直接获得目标测试代码集,进行APK安装包打包。
图6示出了本发明在服务器上自动打包APK安装包的***的具体结构图。所述***包括下述模块。
打包环境搭建模块100,用于在管理服务器上搭建Jenkins平台,在其平台配置各工具插件的路径及信息,建立gradle命令任务。
信息实时获取模块110,用于实时获取目标项目代码的测试代码,生成测试项目集,并存放置特定git库。
打包对象选取模块120,包括录入单元121、APK打包项目创建单元122、权限指定单元123、特定git库生成单元124以及阈值匹配单元125。
所述录入单元121用于通过界面输入APK打包项目信息和需要使用APK打包项目的参与人员信息。所述APK打包项目创建单元122基于录入信息进行项目信息配置,创建APK打包项目。所述权限指定单元123用于对录入的需要使用APK打包项目的参与人员配置APK打包权限。所述特定git库生成单元124用于生成一个.git目录,即特定git库,并将打包模块信息设为所述特定git库的匹配阈值。所述阈值匹配单元125用于将管理服务器获取的用户及其测试项目集上传至特定git库,与匹配阈值比对,判断是否为APK打包对象。
编码打包模块130,基于Jenkins平台自动从特定git库中获取目标测试项目集,采用gradle工具对获取的测试项目集文件进行编译打包,生成APK文件。
传输脚本模块140,用于通过接口脚本文件将生成的APK文件移动到指定的目录下。
APK文件加固模块150,用于通过Jenkins平台的加固工具包先对APK文件进行签名,再对已签名的APK文件进行加固;所述加固是对指定的特征信息进行双重加密,所述指定的特征信息为AndroidMainfest.xml以及Dex文件。
在具体的实施例中,所述编码打包模块130还包括节点配置单元131、执行节点监测单元132以及执行节点重新分配单元133。
所述节点配置单元131用于在Jenkins平台上建立一个打包任务分配节点和N个打包任务执行节点,其中N为自然数。
所述执行节点监测单元132用于在执行APK打包和加固时,监测任务执行节点的状态,并根据N个任务执行节点的状态反馈至git服务器。
所述执行节点重新分配单元133依据监测点的N个任务执行节点的状态符合设定强制离线条件时,使打包状态的任务执行节点离线,更新状态为待执行;并在到达预设时间时,特定git库重新分配待执行状态的任务给Jenkins平台的打包任务分配节点。其中你所述的强制离线条件在上面实施例中有相关描述,在此不做重复。
以上所描述的***实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
以上所述的实施方式,并不构成对该技术方案保护范围的限定。任何在上述实施方式的精神和原则之内所作的修改、等同替换和改进等,均应包含在该技术方案的保护范围之内。

Claims (10)

1.一种在服务器上自动打包APK安装包的方法,所述方法至少包括下述步骤:
预先在管理服务器上搭建Jenkins平台,在其平台建立gradle命令任务;
管理服务器获取目标项目代码的测试代码,生成测试项目集并保存至git库中;
Jenkins执行节点定时自动从特定git库中获取目标测试项目集,采用gradle工具对获取的目标测试项目集文件进行编译打包,生成APK文件:
通过接口脚本文件将生成的APK文件移动到指定的目录下。
2.如权利要求1所述在服务器上自动打包APK安装包的方法,其特征在于,所述在Jenkins平台建立gradle命令任务具体包括下述步骤:
在Jenkins平台中配置特定git库和gradle工具包在所述管理服务器中的存储路径,以及测试代码集在打包前和打包后的存储路径;
在build命令中设置自动构建打包任务的执行时间,完成build.gradle配置文件。
3.如权利要求2所述在服务器上自动打包APK安装包的方法,其特征在于,所述方法还包括对打包后的APK文件进行加固,具体为:
在Jenkins平台上添加用于加固的工具包插件,并配置加固工具包在所述管理服务器中的存储路径;
生成APK文件后,通过所述加固工具包先对APK文件进行签名,再对已签名的APK文件进行加固;
其中,所述加固是对指定的特征信息进行双重加密,所述指定的特征信息为AndroidMainfest.xml以及Dex文件。
4.如权利要求3所述在服务器上自动打包APK安装包的方法,其特征在于,所述方法还包括对特定git库中设置打包权限角色及相应任务,具体为:
git服务器通过界面输入APK打包项目信息,并创建APK打包项目;其中,所述项目信息包括APK打包项目编码、项目的唯一标识码以及项目引用的配置服务器信息;
录入需要使用APK打包项目的参与人员,对其配置APK打包权限,生成APK打包项目的参与人员列表,随后引入至所述APK打包项目,创建打包模块信息;
git仓库生成一个.git目录,即特定git库,并将打包模块信息设为所述特定git库的匹配阈值;
管理服务器将获取的用户及其测试项目集上传至特定git库,与匹配阈值比对,判断是否为APK打包对象;如是,则加入特定git库。
5.如权利要求4所述在服务器上自动打包APK安装包的方法,其特征在于,所述判断是否为APK打包对象的方法为:
将管理服务器获取的用户与APK打包项目的参与人员列表匹配,如匹配成功,则满足APK打包项目的参与人员条件;
判断为满足APK打包项目的参与人员条件后,获取该用户的测试项目集的上下文信息;用git add命令告诉特定git库开始对测试项目集文件进行跟踪,并提交至特定git库。
6.如权利要求4所述在服务器上自动打包APK安装包的方法,其特征在于,所述方法在搭建Jenkins平台时,还包括:
在Jenkins平台上建立一个打包任务分配节点和N个打包任务执行节点,其中N为自然数;
在Jenkins执行任务时,还包括:
到达执行时间,查询特定git库的任务,此时任务状态为待执行,特定git库分配任务给Jenkins平台的打包任务分配节点,再经由打包任务分配节点将任务平均分配给所有的任务执行节点,并更新状态为执行中。
7.如权利要求6所述在服务器上自动打包APK安装包的方法,其特征在于,所述方法还包括在执行APK打包和加固时,监测任务执行节点的状态,并根据N个任务执行节点的状态反馈至git服务器,并采取相应操作,具体包括:
当加固状态的任务执行节点数为零,且空闲状态的任务执行节点数至少为打包状态的任务执行节点数的2倍时,则打包状态的任务执行节点强制离线,并更新状态为待执行,到达预设时间后,特定git库重新分配待执行状态的任务给Jenkins平台的打包任务分配节点;
当加固状态的任务执行节点数为零,且空闲状态的任务执行节点数不大于打包状态的任务执行节点数的2倍时,记录该情况出现的初始时间点,且各任务执行节点正常工作;经过预设的评估时间后,如加固状态的任务执行节点数仍然为零,且空闲状态的任务执行节点数仍然不大于打包状态的任务执行节点数的2倍,则打包状态的任务执行节点强制离线,并更新状态为待执行;否则,各任务执行节点正常工作;
在上述发生强制离线事件后,在到达预设时间时,特定git库重新分配待执行状态的任务给Jenkins平台的打包任务分配节点。
8.如权利要求7所述在服务器上自动打包APK安装包的方法,其特征在于,所述预设时间为自N个任务执行节点全部强制离线起算的时间段;所述空闲状态是指当前执行节点数为零的状况。
9.一种在服务器上自动打包APK安装包的***,基于管理服务器上搭建的Jenkins平台进行的APK打包,其特征在于,所述***至少包括
打包环境搭建模块(100),用于在管理服务器上搭建Jenkins平台,在其平台配置各工具插件的路径及信息,建立gradle命令任务;
信息实时获取模块(110),用于实时获取目标项目代码的测试代码,生成测试项目集,并存放置特定git库;
打包对象选取模块(120),包括录入单元(121)、APK打包项目创建单元(122)、权限指定单元(123)、特定git库生成单元(124)以及阈值匹配单元(125);
所述录入单元(121)用于通过界面输入APK打包项目信息和需要使用APK打包项目的参与人员信息;
所述APK打包项目创建单元(122)基于录入信息进行项目信息配置,创建APK打包项目;
所述权限指定单元(123)用于对录入的需要使用APK打包项目的参与人员配置APK打包权限;
所述特定git库生成单元(124)用于生成一个.git目录,即特定git库,并将打包模块信息设为所述特定git库的匹配阈值;
所述阈值匹配单元(125)用于将管理服务器获取的用户及其测试项目集上传至特定git库,与匹配阈值比对,判断是否为APK打包对象;
编码打包模块(130),基于Jenkins平台自动从特定git库中获取目标测试项目集,采用gradle工具对获取的测试项目集文件进行编译打包,生成APK文件;
传输脚本模块(140),用于通过接口脚本文件将生成的APK文件移动到指定的目录下。
10.如权利要求9所述的在服务器上自动打包APK安装包的***,其特征在于,所述***还包括APK文件加固模块(150),用于通过Jenkins平台的加固工具包先对APK文件进行签名,再对已签名的APK文件进行加固;所述加固是对指定的特征信息进行双重加密,所述指定的特征信息为AndroidMainfest.xml以及Dex文件;
所述编码打包模块(130)还包括节点配置单元(131)、执行节点监测单元(132)以及执行节点重新分配单元(133);
所述节点配置单元(131)用于在Jenkins平台上建立一个打包任务分配节点和N个打包任务执行节点,其中N为自然数;
所述执行节点监测单元(132)用于在执行APK打包和加固时,监测任务执行节点的状态,并根据N个任务执行节点的状态反馈至git服务器;
所述执行节点重新分配单元(133)依据监测点的N个任务执行节点的状态符合设定强制离线条件时,使打包状态的任务执行节点离线,更新状态为待执行;并在到达预设时间时,特定git库重新分配待执行状态的任务给Jenkins平台的打包任务分配节点。
CN201710495210.6A 2017-06-26 2017-06-26 在服务器上自动打包apk安装包的方法及*** Pending CN107301074A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710495210.6A CN107301074A (zh) 2017-06-26 2017-06-26 在服务器上自动打包apk安装包的方法及***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710495210.6A CN107301074A (zh) 2017-06-26 2017-06-26 在服务器上自动打包apk安装包的方法及***

Publications (1)

Publication Number Publication Date
CN107301074A true CN107301074A (zh) 2017-10-27

Family

ID=60136396

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710495210.6A Pending CN107301074A (zh) 2017-06-26 2017-06-26 在服务器上自动打包apk安装包的方法及***

Country Status (1)

Country Link
CN (1) CN107301074A (zh)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107944253A (zh) * 2017-12-12 2018-04-20 深圳创维数字技术有限公司 一种第三方apk签名方法、电子设备及存储介质
CN108647037A (zh) * 2018-04-28 2018-10-12 新疆熙菱信息技术股份有限公司 基于shell脚本的自动化部署方法和***
CN108874429A (zh) * 2018-07-20 2018-11-23 珠海宏桥高科技有限公司 一种Android***一体化自动打包方法
CN109101244A (zh) * 2018-07-20 2018-12-28 珠海宏桥高科技有限公司 一种ios***一体化自动打包方法
CN110018951A (zh) * 2018-01-10 2019-07-16 武汉斗鱼网络科技有限公司 一种js代码的测试方法、存储介质、设备和***
CN110069278A (zh) * 2019-03-25 2019-07-30 福州智永信息科技有限公司 一种自动化分布式多任务打包方法及***
CN110888639A (zh) * 2018-09-10 2020-03-17 北京京东尚科信息技术有限公司 一种业务代码编译打包方法和装置
CN110955583A (zh) * 2019-12-18 2020-04-03 米哈游科技(上海)有限公司 一种通知方法、装置、电子设备及存储介质
CN111026407A (zh) * 2018-10-10 2020-04-17 北大方正集团有限公司 安装包打包方法、计算机设备、计算机可读存储介质
CN111078277A (zh) * 2019-12-20 2020-04-28 上海米哈游天命科技有限公司 一种装包***、装包方法及存储介质
CN111399858A (zh) * 2020-02-28 2020-07-10 平安科技(深圳)有限公司 安卓应用程序包打包方法、设备、存储介质及装置
CN111966357A (zh) * 2019-05-20 2020-11-20 北京车和家信息技术有限公司 一种操作***应用编译方法、装置及电子设备
CN113504926A (zh) * 2021-07-19 2021-10-15 成都新潮传媒集团有限公司 一种项目的打包方法、装置及计算机可读存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104461743A (zh) * 2014-12-17 2015-03-25 用友软件股份有限公司 资源和配置的自动生成装置和方法
CN105205358A (zh) * 2015-09-21 2015-12-30 中科信息安全共性技术国家工程研究中心有限公司 一种识别Android APP加固的方法及检测方法
CN105224358A (zh) * 2015-09-07 2016-01-06 浪潮集团有限公司 一种云计算下软件自动打包部署的***及方法
CN105653261A (zh) * 2015-12-22 2016-06-08 曙光云计算技术有限公司 基于云计算环境下的开发集成测试方法及***
WO2016177124A1 (zh) * 2015-07-29 2016-11-10 中兴通讯股份有限公司 一种实现持续集成测试的方法及装置
CN106339260A (zh) * 2016-08-19 2017-01-18 北京小米移动软件有限公司 基于Jenkins平台的任务分配方法及装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104461743A (zh) * 2014-12-17 2015-03-25 用友软件股份有限公司 资源和配置的自动生成装置和方法
WO2016177124A1 (zh) * 2015-07-29 2016-11-10 中兴通讯股份有限公司 一种实现持续集成测试的方法及装置
CN105224358A (zh) * 2015-09-07 2016-01-06 浪潮集团有限公司 一种云计算下软件自动打包部署的***及方法
CN105205358A (zh) * 2015-09-21 2015-12-30 中科信息安全共性技术国家工程研究中心有限公司 一种识别Android APP加固的方法及检测方法
CN105653261A (zh) * 2015-12-22 2016-06-08 曙光云计算技术有限公司 基于云计算环境下的开发集成测试方法及***
CN106339260A (zh) * 2016-08-19 2017-01-18 北京小米移动软件有限公司 基于Jenkins平台的任务分配方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
测试开发栈: "Android项目apk自动打包方案", <<HTTPS://WWW.JIANSHU.COM/P/CE4DCBD8B558>> *

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107944253B (zh) * 2017-12-12 2021-02-09 深圳创维数字技术有限公司 一种第三方apk签名方法、电子设备及存储介质
CN107944253A (zh) * 2017-12-12 2018-04-20 深圳创维数字技术有限公司 一种第三方apk签名方法、电子设备及存储介质
CN110018951A (zh) * 2018-01-10 2019-07-16 武汉斗鱼网络科技有限公司 一种js代码的测试方法、存储介质、设备和***
CN108647037A (zh) * 2018-04-28 2018-10-12 新疆熙菱信息技术股份有限公司 基于shell脚本的自动化部署方法和***
CN108874429A (zh) * 2018-07-20 2018-11-23 珠海宏桥高科技有限公司 一种Android***一体化自动打包方法
CN109101244A (zh) * 2018-07-20 2018-12-28 珠海宏桥高科技有限公司 一种ios***一体化自动打包方法
CN108874429B (zh) * 2018-07-20 2022-06-03 珠海宏桥高科技有限公司 一种Android***一体化自动打包方法
CN109101244B (zh) * 2018-07-20 2022-06-03 珠海宏桥高科技有限公司 一种ios***一体化自动打包方法
CN110888639A (zh) * 2018-09-10 2020-03-17 北京京东尚科信息技术有限公司 一种业务代码编译打包方法和装置
CN111026407A (zh) * 2018-10-10 2020-04-17 北大方正集团有限公司 安装包打包方法、计算机设备、计算机可读存储介质
CN110069278A (zh) * 2019-03-25 2019-07-30 福州智永信息科技有限公司 一种自动化分布式多任务打包方法及***
CN110069278B (zh) * 2019-03-25 2022-07-12 宝宝巴士股份有限公司 一种自动化分布式多任务打包方法及***
CN111966357A (zh) * 2019-05-20 2020-11-20 北京车和家信息技术有限公司 一种操作***应用编译方法、装置及电子设备
CN111966357B (zh) * 2019-05-20 2024-02-27 北京车和家信息技术有限公司 一种操作***应用编译方法、装置及电子设备
CN110955583A (zh) * 2019-12-18 2020-04-03 米哈游科技(上海)有限公司 一种通知方法、装置、电子设备及存储介质
CN111078277A (zh) * 2019-12-20 2020-04-28 上海米哈游天命科技有限公司 一种装包***、装包方法及存储介质
CN111399858A (zh) * 2020-02-28 2020-07-10 平安科技(深圳)有限公司 安卓应用程序包打包方法、设备、存储介质及装置
CN111399858B (zh) * 2020-02-28 2024-04-02 平安科技(深圳)有限公司 安卓应用程序包打包方法、设备、存储介质及装置
CN113504926A (zh) * 2021-07-19 2021-10-15 成都新潮传媒集团有限公司 一种项目的打包方法、装置及计算机可读存储介质
CN113504926B (zh) * 2021-07-19 2023-04-14 成都新潮传媒集团有限公司 一种项目的打包方法、装置及计算机可读存储介质

Similar Documents

Publication Publication Date Title
CN107301074A (zh) 在服务器上自动打包apk安装包的方法及***
CN110851135A (zh) 应用程序自动构建上传方法、装置及计算机设备、存储介质
CN102523254B (zh) 一种云计算环境自动分配***资源的方法
US9461871B2 (en) Client suitability test apparatus and method for a substation automating system
CN103559445B (zh) 一种应用程序交互控制方法及装置
CN107463362A (zh) 基于多个Jenkins的持续部署的方法和***
CN106708700B (zh) 一种应用于服务端的运维监控方法和装置
CN102571396A (zh) 一种通讯网络***及通讯设备的巡检子***和巡检方法
CN103365770A (zh) 移动终端软件测试***及软件测试方法
CN108845949A (zh) 一种性能测试方法及平台
CN108763091A (zh) 用于回归测试的方法、装置及***
CN108347356A (zh) 一种多协议单元测试方法、装置、电子设备和存储介质
CN107229482A (zh) 一种用于软件***开发的方法及***
CN107797914A (zh) 代码处理方法、装置及代码发布***
KR20180011257A (ko) 자동 재충전 시스템, 방법 및 서버
CN110196800A (zh) 分布式事务测试方法、装置及***
CN110134612A (zh) Ui测试数据生成方法、装置、设备及可读存储介质
CN109783392A (zh) 云网融合架构***测试方法及装置
CN107634878B (zh) 一种性能测试管理平台
CN110399288A (zh) 应用测试方法和装置、存储介质及电子装置
CN105224450B (zh) 并发测试方法及装置
CN106550208A (zh) 视频拆分方法、设备及视频分析***
CN110149241A (zh) 一种基于ims设备的自动化测试方法及存储介质
CN111930621A (zh) Dns自动化性能测试方法、装置、设备及可读存储介质
CN116319242A (zh) 一种基于rpa技术的云管平台微服务调度方法及装置

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
RJ01 Rejection of invention patent application after publication

Application publication date: 20171027

RJ01 Rejection of invention patent application after publication