CN103914329B - 编译程序的方法和装置 - Google Patents
编译程序的方法和装置 Download PDFInfo
- Publication number
- CN103914329B CN103914329B CN201410105556.7A CN201410105556A CN103914329B CN 103914329 B CN103914329 B CN 103914329B CN 201410105556 A CN201410105556 A CN 201410105556A CN 103914329 B CN103914329 B CN 103914329B
- Authority
- CN
- China
- Prior art keywords
- certification authentication
- verification process
- thread
- case
- certificate
- 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
- Stored Programmes (AREA)
Abstract
编译程序的方法和装置,帮助移动应用程序开发者在仅具有应用程序源代码和证书的情况下完成程序编译。该方法包括:接收用于编译程序的数据,所述数据包括程序源代码和证书;记录证书验证状态为未完成;启动主线程和验证线程。
Description
技术领域
本发明涉及计算机技术领域,特别地涉及一种编译程序的方法和装置。
背景技术
随着移动互联网的发展,有越来越多的开发者竞相开发移动应用程序。开发者在编写完成应用程序的源代码之后,和证书一起提交到编译系统,该编译系统对证书进行验证,验证通过后对该源代码进行编译。例如在苹果公司开发的iOS平台上,开发者手动导入.p12证书到钥匙串,手动导入.mobileprovision到Xcode中,由编译器Xcode进行编译。
发明内容
本发明的主要目的是提供一种编译程序的方法和装置,帮助移动应用程序开发者在仅具有应用程序源代码和证书的情况下完成程序编译。
为实现上述目的,根据本发明的一个方面,提供了一种编译程序的方法。
本发明的编译程序的方法包括:接收用于编译程序的数据,所述数据包括程序源代码和证书;记录证书验证状态为未完成;启动主线程和验证线程;所述验证线程包括:启动证书验证进程;在所述证书验证进程自动结束的情况下,将所述证书验证状态修改为已完成,然后结束验证线程,在所述证书验证进程被所述主线程终止的情况下直接结束验证线程;所述主线程包括:判断所述验证进程是否存在;在所述验证进程不存在的情况下检测证书验证状态:若证书验证状态为未完成,则启动设定时长的等待,并在等待过程中再次判断所述验证进程是否存在,以及在等待超时的情况下结束验证进程;若证书验证状态为已完成,则对所述程序源代码进行编译;在所述验证进程存在的情况下,启动设定时长的等待,并在等待过程中再次判断所述验证进程是否存在,以及在等待超时的情况下结束验证进程。
根据本发明的又一方面,提供了一种编译程序的装置。
本发明的编译程序的装置包括:接收模块,用于接收用于编译程序的数据,所述数据包括程序源代码和证书;记录模块,用于记录证书验证状态为未完成;验证线程模块,用于执行验证线程,所述验证线程包括:启动证书验证进程;在所述证书验证进程自动结束的情况下,将所述证书验证状态修改为已完成,然后结束验证线程,在所述证书验证进程被所述主线程终止的情况下直接结束验证线程;主线程模块,用于执行主线程,所述主线程包括:判断所述验证进程是否存在;在所述验证进程不存在的情况下检测证书验证状态:若证书验证状态为未完成,则启动设定时长的等待,并在等待过程中再次判断所述验证进程是否存在,以及在等待超时的情况下结束验证进程;若证书验证状态为已完成,则对所述程序源代码进行编译;在所述验证进程存在的情况下,启动设定时长的等待,并在等待过程中再次判断所述验证进程是否存在,以及在等待超时的情况下结束验证进程。
根据本发明的技术方案,由服务器提供编译环境,对用户提供的源程序进行编译,其中在验证证书时,若无证书访问权限则停止验证并且提示用户,以防内存耗尽而死机,实现了大批量的自动编译,并且使用户无需准备编译环境,在仅具有应用程序源代码和证书的情况下就能完成程序编译,降低了程序开发的成本。在服务器的处理方式上,采用验证证书的线程和主线程并行,能够准确地控制证书验证和编译的进程,在遇到不能访问的证书时能够提示用户并且停止证书验证,对于能够访问的证书则进行正常的验证。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的编译程序的系统的示意图;
图2是根据本发明实施例的编译程序的方法的示意图;
图3是根据本发明实施例的编译程序的装置的主要模块的示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1是根据本发明实施例的编译程序的系统的示意图。如图1所示,编译程序的系统10主要包括第一服务器11和第二服务器12,二者可基于httpclient等协议进行通信;第一服务器11通过互联网2与多个终端设备31、32、……、3N连接,通过提供web服务,可以接收终端设备发送的源代码和证书,源代码和证书由第二服务器12进行处理,其中主要是对证书进行验证,并在验证通过的情况下对源代码进行编译。第一服务器11和第二服务器12可采用服务器集群,以处理海量终端设备发送的数据。
为了安全起见,证书一般具有访问权限,使编译系统能够访问证书从而对其进行验证。对于现有的编译系统,如果没有权限访问证书,则会在人机界面上弹出一个提示框以提示操作人员,该提示框需操作人员点击确认,于是结束对证书的验证进程。采用编译程序的系统10进行编译时,第二服务器12会接收到大量的证书需要验证,如果第二服务器12因没有权限访问其中的多个证书,则验证进程无法继续但并未中止,多个这种情况的验证进程容易导致机器内存耗尽而死机。因此在本实施例中,第二服务器12在无法访问证书的情况下停止对证书的验证进程,并且生成提示信息然后发送给第一服务器11,再由第一服务器11转发给终端设备,以使开发者得知证书权限需要修改。
第二服务器12在运行中可采用图2所示的流程。图2是根据本发明实施例的编译程序的方法的示意图。该方法可由执行编译的计算机例如第二服务器12完成。如图2所示,在步骤S201中,导入用于编译程序的数据,例如在iOS中,使用secue命令将.p12证书导入钥匙串,使用cp命令将.mobileprovision导入Xcode。可以计算出证书的哈希值,并与本次编译任务的名称一起作为本次编译任务的标识。
在步骤S202中,设置一个证书验证完成位,以记录证书验证状态,此时令其值为0,表示证书验证尚未完成。接下来启动用两个线程,分别是步骤S211中的启动验证线程和步骤S221中的启动主线程。在步骤S212中,对证书进行验证(在iOS中验证进程为codesign进程),然后在步骤S213中判断证书验证进程是否结束,若未结束,则延时之后返回步骤S213继续判断,如结束,判断其结束方式(步骤S214),如果证书验证进程的结束方式是自动结束,表明能够访问证书并且证书验证通过,此时进入步骤S215,修改证书验证完成位的值为1,表示证收验证通过。验证线程在步骤S215之后结束。如果证书验证进程的结束方式为被终止(实际上是被主线程终止,见下面的描述),则直接结束验证线程,在该情况下证书验证完成位的值仍保持为0。
在主线程中,步骤S222为检测验证进程是否存在。若不存在,则检测证书验证完成位的值(步骤S223),若为1,表示证书验证进程已结束并且结束方式是自动结束,此时进入步骤S224进行编译,编译之后即按常规方式,可以删除钥匙串和Xcode中的证书,并且把编译得到的程序包返回给终端设备。在步骤S223中,若证书验证完成位的值为0,表示验证进程尚未启动,此时进入步骤S225,等待预设的时长,该时长应大于证书能够被访问的情况下正常验证所需的时间,例如30S,在该30S内,返回步骤S222,继续反复检测验证进程是否存在。若验证进程存在,说明其已启动,则继续等待验证结果,如果验证进程在30S内结束,则又返回步骤S223,并且必然是验证进程自动结束从而进入步骤S224,这是因为验证进程被终止的步骤在30S之后才执行。如果验证进程在30S内未结束,则等待超时,原因可能是证书的访问权限未修改使其无法被访问,也可能是证书虽能被访问但验证未通过,此时就终止证书验证进程(步骤S226),然后发出提示信息(步骤S227)以及结束主线程。此时还可以将导入的证书删除。
图3是根据本发明实施例的编译程序的装置的主要模块的示意图。该装置作为软件模块可以设置在计算机例如第二服务器12或者第二服务器集群的节点中。如图3所示,编译程序的装置30主要包括接收模块31、记录模块32、验证线程模块33、以及主线程模块34。
接收模块31用于接收用于编译程序的数据,该数据包括程序源代码和证书。记录模块32用于记录证书验证状态为未完成。验证线程模块33用于执行验证线程。主线程模块34用于执行主线程。
验证线程包括:启动证书验证进程;在证书验证进程自动结束的情况下,将证书验证状态修改为已完成,然后结束验证线程,在证书验证进程被主线程终止的情况下直接结束验证线程。
主线程包括:判断验证进程是否存在;在验证进程不存在的情况下检测证书验证状态:若证书验证状态为未完成,则启动设定时长的等待,并在等待过程中再次判断验证进程是否存在,以及在等待超时的情况下结束验证进程;若证书验证状态为已完成,则对程序源代码进行编译;在验证进程存在的情况下,启动设定时长的等待,并在等待过程中再次判断验证进程是否存在,以及在等待超时的情况下结束验证进程。
根据本发明的技术方案,由服务器提供编译环境,对用户提供的源程序进行编译,其中在验证证书时,若无证书访问权限则停止验证并且提示用户,以防内存耗尽而死机,实现了大批量的自动编译,并且使用户无需准备编译环境,在仅具有应用程序源代码和证书的情况下就能完成程序编译,降低了程序开发的成本。在服务器的处理方式上,采用验证证书的线程和主线程并行,能够准确地控制证书验证和编译的进程,在遇到不能访问的证书时能够提示用户并且停止证书验证,对于能够访问的证书则进行正常的验证。
以上结合具体实施例描述了本发明的基本原理,但是,需要指出的是,对本领域的普通技术人员而言,能够理解本发明的方法和设备的全部或者任何步骤或者部件,可以在任何计算装置(包括处理器、存储介质等)或者计算装置的网络中,以硬件、固件、软件或者它们的组合加以实现,这是本领域普通技术人员在阅读了本发明的说明的情况下运用他们的基本编程技能就能实现的。
因此,本发明的目的还可以通过在任何计算装置上运行一个程序或者一组程序来实现。所述计算装置可以是公知的通用装置。因此,本发明的目的也可以仅仅通过提供包含实现所述方法或者装置的程序代码的程序产品来实现。也就是说,这样的程序产品也构成本发明,并且存储有这样的程序产品的存储介质也构成本发明。显然,所述存储介质可以是任何公知的存储介质或者将来开发出的任何存储介质。
还需要指出的是,在本发明的装置和方法中,显然,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本发明的等效方案。并且,执行上述系列处理的步骤可以自然地按照说明的顺序按时间顺序执行,但是并不需要一定按照时间顺序执行。某些步骤可以并行或彼此独立地执行。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (2)
1.一种编译程序的方法,其特征在于,包括:
接收用于编译程序的数据,所述数据包括程序源代码和证书;
记录证书验证状态为未完成;
启动主线程和验证线程;
所述验证线程包括:
启动证书验证进程;
在所述证书验证进程自动结束的情况下,将所述证书验证状态修改为已完成,然后结束验证线程,在所述证书验证进程被所述主线程终止的情况下直接结束验证线程;
所述主线程包括:
判断所述验证进程是否存在;
在所述验证进程不存在的情况下检测证书验证状态:若证书验证状态为未完成,则启动设定时长的等待,并在等待过程中再次判断所述验证进程是否存在,以及在等待超时的情况下结束验证进程;若证书验证状态为已完成,则对所述程序源代码进行编译;
在所述验证进程存在的情况下,启动设定时长的等待,并在等待过程中再次判断所述验证进程是否存在,以及在等待超时的情况下结束验证进程。
2.一种编译程序的装置,其特征在于,包括:
接收模块,用于接收用于编译程序的数据,所述数据包括程序源代码和证书;
记录模块,用于记录证书验证状态为未完成;
验证线程模块,用于执行验证线程,所述验证线程包括:
启动证书验证进程;
在所述证书验证进程自动结束的情况下,将所述证书验证状态修改为已完成,然后结束验证线程,在所述证书验证进程被主线程终止的情况下直接结束验证线程;
主线程模块,用于执行主线程,所述主线程包括:
判断所述验证进程是否存在;
在所述验证进程不存在的情况下检测证书验证状态:若证书验证状态为未完成,则启动设定时长的等待,并在等待过程中再次判断所述验证进程是否存在,以及在等待超时的情况下结束验证进程;若证书验证状态为已完成,则对所述程序源代码进行编译;
在所述验证进程存在的情况下,启动设定时长的等待,并在等待过程中再次判断所述验证进程是否存在,以及在等待超时的情况下结束验证进程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410105556.7A CN103914329B (zh) | 2014-03-20 | 2014-03-20 | 编译程序的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410105556.7A CN103914329B (zh) | 2014-03-20 | 2014-03-20 | 编译程序的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103914329A CN103914329A (zh) | 2014-07-09 |
CN103914329B true CN103914329B (zh) | 2017-05-10 |
Family
ID=51040034
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410105556.7A Active CN103914329B (zh) | 2014-03-20 | 2014-03-20 | 编译程序的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103914329B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106055377A (zh) * | 2016-06-03 | 2016-10-26 | 北京奇虎科技有限公司 | 一种实现分布式编译的方法和分布式编译系统 |
CN106528404B (zh) | 2016-09-30 | 2019-03-29 | 腾讯科技(深圳)有限公司 | 移动应用程序测试方法和装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1157959A (zh) * | 1995-12-08 | 1997-08-27 | 太阳微系统有限公司 | 受托编译中性结构程序版本产生特定结构的系统和方法 |
CN1848129A (zh) * | 2005-04-05 | 2006-10-18 | 株式会社Ntt都科摩 | 应用程序验证系统、应用程序验证方法以及计算机程序 |
CN101226569A (zh) * | 2007-01-19 | 2008-07-23 | 国际商业机器公司 | 在虚拟机中验证代码模块的方法及装置 |
CN101355569A (zh) * | 2008-09-10 | 2009-01-28 | 北大方正集团有限公司 | 一种数字内容下载控制方法、装置及系统 |
CN101860548A (zh) * | 2010-06-17 | 2010-10-13 | 北京握奇数据系统有限公司 | 一种数据签名验证的方法、装置及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020067833A1 (en) * | 2000-12-05 | 2002-06-06 | Han Ching-Chih (Jason) | Method and apparatus for providing conditional access to the source code of a program |
-
2014
- 2014-03-20 CN CN201410105556.7A patent/CN103914329B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1157959A (zh) * | 1995-12-08 | 1997-08-27 | 太阳微系统有限公司 | 受托编译中性结构程序版本产生特定结构的系统和方法 |
CN1848129A (zh) * | 2005-04-05 | 2006-10-18 | 株式会社Ntt都科摩 | 应用程序验证系统、应用程序验证方法以及计算机程序 |
CN101226569A (zh) * | 2007-01-19 | 2008-07-23 | 国际商业机器公司 | 在虚拟机中验证代码模块的方法及装置 |
CN101355569A (zh) * | 2008-09-10 | 2009-01-28 | 北大方正集团有限公司 | 一种数字内容下载控制方法、装置及系统 |
CN101860548A (zh) * | 2010-06-17 | 2010-10-13 | 北京握奇数据系统有限公司 | 一种数据签名验证的方法、装置及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN103914329A (zh) | 2014-07-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109002297B (zh) | 共识机制的部署方法、装置、设备和存储介质 | |
CN112104709B (zh) | 智能合约的处理方法、装置、介质及电子设备 | |
US20160357530A1 (en) | Method and apparatus for intermediate representation of applications | |
Arzt et al. | Towards secure integration of cryptographic software | |
WO2015095310A1 (en) | Privileged static hosted web applications | |
KR101823016B1 (ko) | 외부 코드 인증을 통한 웹 브라우징 오버헤드들의 감소 | |
CN101866315B (zh) | 软件开发工具的测试方法及系统 | |
CN106980511A (zh) | 固件升级方法、装置及系统 | |
Karsai et al. | Evolving embedded systems | |
CN1693918A (zh) | 检查物理系统模型的鲁棒性 | |
CN103150647A (zh) | 报表文件处理方法、服务器和系统 | |
TW201232404A (en) | Software development | |
CN103310139A (zh) | 一种输入验证方法和输入验证装置 | |
CN103914329B (zh) | 编译程序的方法和装置 | |
CN106559223B (zh) | 应用程序签名方法及装置 | |
JP2022097425A (ja) | 方法、コンピュータ・プログラム製品、およびコンピュータ・システム(ソフトウェア・アプリケーションのコンポーネントのテスト) | |
US10606569B2 (en) | Declarative configuration elements | |
Rosario Espada et al. | A formal approach to automatically analyse extra‐functional properties in mobile applications | |
CN101833505B (zh) | 一种软件系统安全缺陷检测方法 | |
CN102612683A (zh) | 跨执行环境保持数据完整性 | |
CN110177096A (zh) | 客户端认证方法、装置、介质和计算设备 | |
US11645346B2 (en) | System and method of generating individual content for a user of a service | |
Hu et al. | Elix: Path-selective taint analysis for extracting mobile app links | |
CN111859313A (zh) | 验证方法及装置 | |
CN104866476B (zh) | 一种信息处理方法及服务器 |
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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20191128 Address after: 100176 room 222, 2f, building C, No. 18, Kechuang 11th Street, Beijing Economic and Technological Development Zone, Daxing District, Beijing Patentee after: Beijing Jingdong three hundred and sixty degree e-commerce Co., Ltd. Address before: 11 East Building No. 65 West Park District 100080 Beijing City Shan creative Haidian District xingshikou Road West of the 1-4 layer 1-4 layer Patentee before: Beijing Jingdong Shangke Information Technology Co., Ltd. |