应用程序重新签名的方法、装置和系统的制作方法_3

文档序号:9810895阅读:来源:国知局
允许无法重新编译,可以手动创建一个拷贝进去。
[0122]3.错误提不:User interact1n is not allowed.
[0123]解决方法:
[0124]出现上述错误的原因是授权文件访问权限不足,需要解锁钥匙链访问权限。可用$security un1ck-keychain-p"PASSWORD〃〃/^Jsers/USERNAME/Library/Keychains/login, keychain 〃命令来解锁相应的权限,其中,PASSWORD为系统用户的密码,USERNAME为系统用户名。
[0125]如果还是不行,可以通过以下方法解决:
[0126]I)在应用程序里搜索Keychain Access,中文叫钥匙串访问权限
[0127]2)找到你的证书,右击一显示简介一访问控制一选中“允许所有应用程序访问此项目” 一存储更改一输入密码后保存更改,解决问题。
[0128]3)图形界面下启动终端运行该命令,弹出权限申请对话框时选择“总是允许”。
[0129]4.错误提不:object file format unrecognized, invalid,or unsuitable
[0130]解决方法:
[ΟΙ31 ] 查看/usr/bin目录下是否存在codesign_allocate程序,如果存在,则对其进行改名操作。
[0132]在具体实施当中,在所述步骤S6之前,所述重新签名的方法还可以进一步包括:
[0133]执行扩展任务;所述扩展任务包括检测应用程序的指令集类型和修改所述应用程序的版本号中的至少一种。
[0134]如图2所示,当所述扩展任务为检测应用程序的指令集类型时,所述执行扩展任务,具体为:
[0135]S61,从所述解压文件中获取程序文件;
[0136]从所述解压文件找到相应的程序文件,该文件位于Payload/APP_NAME.app/目录下,可以根据这个文件来判断应用程序运行的指令集的类型是32位的还是64位的,亦或是兼容32位和64位的。
[0137]S62,通过系统的Iipo命令对所述程序文件进行查看,获取所述程序文件的指令集信息;
[0138]Iipo是处理通用程序(Universal Binaries)的工具,在具体实施当中,可使用lipo-1nfo命令查看上一步所找到的APP文件,以获得该应用程序的指令集信息。
[0139]S63,对所述指令集信息进行分析,获取指令集的类型;
[0140]分析Iip0命令返回的指令集信息,如果返回的指令集信息是以non-fat开头的,则表示该应用程序仅支持32位或64位指令集,如果想知道具体信息,可以分析返回的指令集信息的末尾,末尾为arm64则表示仅支持64位指令集,末尾为armv7则表示仅支持32位指令集。如果返回的指令集信息是以fat开头的,则说明该应用程序同时兼容32位和64位的指令集。
[0141]S64,将所述指令集的类型反馈给所述主服务器。
[0142]本实施例中主服务器和重签服务器之间通过Jenkins命令作为控制流,由于Jenkins没有参数回调功能,可以借助于ftp服务来传递保存了分析结果的文件,可以将分析结果打包为json格式文件并上传到主服务器中,也方便添加其他的扩展任务的反馈信息。
[0143]通过检测所述应用程序的指令集的类型,可以在重新签名之后及时提醒使用者注意指令集的支持情况,更早地做出相关调整。
[0144]S7,将生成新的签名信息后的所述解压文件重新打包成应用程序安装包,并上传到所述主服务器中。
[0145]在具体实施当中,可使用zip命令将生成新的签名信息后的所述解压文件重新打包成特定格式的应用程序安装包,并将生成的安装包上传到主服务器中,供授权的设备下载安装。
[0146]参见图3,是本发明提供的应用程序重新签名的方法的另一实施例的流程图;
[0147]如图3所示,所述应用程序重新签名的方法包括以下步骤:
[0148]S31,接收客户端发送的可用于重新签名的应用程序安装包以及对所述应用程序安装包进行重新签名的请求;
[0149]在具体实施当中,用户通过客户端访问http服务器,所述http服务搭建在主服务器上,主要使用Apache+Php+mySQL+Linux (简称LAMP)搭建,http服务器提供了上传的功能,可以将用户本地的用于重签的应用程序安装包上传到主服务器中,主服务器所述应用程序安装包保存在ftp服务器中,所述ftp服务器可以为独立的服务器或者安装在所述主服务器中的ftp服务。
[0150]主服务器接收客户端发送的可用于重新签名的应用程序安装包以及对所述应用程序安装包进行重新签名的请求,所述请求中包含用于对所述应用程序安装包进行重新签名所需的相关配置信息。一般地,在步骤S31之后,需要根据预先设定的或者所述请求中的配置信息,将预备配置文件和授权证书配置到所述重签服务器中,可根据实际需要选择不同的授权证书和预备配置文件来对应用程序进行重新签名。在一种优选的实施方式当中,用于重新签名的项目配置信息保存在主服务器的mySQL数据库中。所述项目配置信息包括但不限于:用于重签的授权证书的名称、与授权证书对应的team id、与授权证书对应的Provis1ning Profile文件名、bundle id和项目名称。其中,项目名称为非必须字段,用于查找和与其他项目区分。用户选择了重签项目后,提交重签请求,在上传应用程序安装包的同时,主服务器后台会获取到用户所选择的项目名称,根据该名称可以从数据库中获得重签所需要的信息。
[0151 ] S32,将与所述请求对应的重签任务分发给空闲的重签服务器,触发所述重签服务器通过如图1所示实施例提供的应用程序重新签名的方法对所述应用程序安装包进行重新签名;
[0152]在具体实施当中,客户端可以为独立的应用软件或者浏览器界面,也可以为与主服务器对等的终端,用于向主服务器发送重签任务请求并上传可用于重新签名的应用程序安装包。主服务器使用的系统为Debian 4.6.3_14,安装的主要服务有:I )Apache+Php+MySql,负责搭建网络平台,提供http服务;2) Jenkins Master,负责管理Jenkins任务;3)ftp服务,负责提供ftp服务以传输文件。重签服务器负责具体的重签工作,与主服务器之间通过J enkins命令进行控制,并通过f tp进行数据传输。
[0153]Jenkins提供了一个命令行工具jenkins-cli.jar,并提供了相应的命令行参数,主服务器通过运行jenkins-cl1.jar可以远程启动重签任务。重签任务启动后,重签服务器会从ftp服务器的相应位置中获取应用程序安装包,将所述应用程序安装包下载到本地进行重签。
[0154]如图4所示,为了避免反复重签,提高重签的效率,所述步骤S32可以通过以下步骤实现:
[0155]S321,获取所述应用程序安装包的MD5值、预备配置文件的名称和预备配置文件的版本号;
[0156]S322,判断所述MD5值、所述预备配置文件的名称和所述预备配置文件的版本号与缓存数据库中已重新签名的应用程序安装包的相应信息是否一致;
[0157]S323,若一致,则将所述缓存数据库中的已重新签名的所述应用程序安装包作为本次重签任务的结果;
[0158]S324,若不一致,则将对所述应用程序安装包进行重新签名的任务分发给空闲的重签服务器,触发所述重签服务器通过如图1所示实施例提供的应用程序重新签名的方法对所述应用程序安装包进行重新签名。
[0159]缓存数据库中保存了最近一段时间内进行重新签名的应用程序安装包的MD5值以及对所述的应用程序安装包进行重新签名所用的预备配置文件的名称和所述预备配置文件的版本号。在具体实施当中,通过判断当前重签任务的应用程序安装包的MD5值和所用的预备配置文件的文件名和版本号是否与之前任务一致,当一致时,直接从缓存数据库中获取之前任务所获得的已重签文件。当不一致时,将重签任务分发给重签服务器,通过重签服务器进行重新签名。可有效提高重签的效率,降低系统的负担。其中,检测应用程序安装包的MD5值是为了检测是否对同一应用程序安装包进行重签,检测预备配置文件的名称是为了检测是否是使用同一个重签项目,检测预备配置文件的版本号是为了检验预备配置文件是否有更新。
[0160]本步骤中所述重签服务器对所述应用程序安装包进行重新签名的方法与图1所示实施例相同,可参见图1所示实施例中的相关描述。
[0161]S33,将重新签名后的应用程序安装包保存到相应的网络存储位置中。
[0162]重签服务器执行重签任务后获得重新签名的应用程序安装包,并通过ftp上传到主服务器中,供其他设备下载安装。
[0163]在具体实施当中,在所述步骤S33之后还可以进一步包括步骤S34:
[0164]S34,根据所述网络存储位置,生成用于下载安装所述应用程序安装包的二维码。
[0165]具体地,如图5所示,所述步骤S34包括:
[0166]S341,根据所述网络存储位置和bundle信息生成所述应用程序安装包的plist文件;
[0167]某些设备要想实现在线安装,需要先生成一个plist文件,所述plist文件包含了安装包的网络存储位置、bundle id以及安装标题。
[0168]S342,将所述plist文件上传到https服务器中,并获取所述p
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1