CN110058850B - 一种应用的开发方法、装置以及存储介质 - Google Patents

一种应用的开发方法、装置以及存储介质 Download PDF

Info

Publication number
CN110058850B
CN110058850B CN201910285522.3A CN201910285522A CN110058850B CN 110058850 B CN110058850 B CN 110058850B CN 201910285522 A CN201910285522 A CN 201910285522A CN 110058850 B CN110058850 B CN 110058850B
Authority
CN
China
Prior art keywords
code
module
code file
file
public
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
Application number
CN201910285522.3A
Other languages
English (en)
Other versions
CN110058850A (zh
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.)
Tencent Music Entertainment Technology Shenzhen Co Ltd
Original Assignee
Tencent Music Entertainment Technology Shenzhen 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 Tencent Music Entertainment Technology Shenzhen Co Ltd filed Critical Tencent Music Entertainment Technology Shenzhen Co Ltd
Priority to CN201910285522.3A priority Critical patent/CN110058850B/zh
Publication of CN110058850A publication Critical patent/CN110058850A/zh
Application granted granted Critical
Publication of CN110058850B publication Critical patent/CN110058850B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation

Abstract

本发明实施例公开了一种应用的开发方法、装置以及存储介质;本发明实施例从公共服务器中获取第一代码文件,第一代码文件包含第一模块中的公开代码;然后根据第一代码文件以及第二模块的源代码进行编码,得到编码文件;从公共服务器中获取第二代码文件,并对编码文件中的源代码进行编译处理,第二代码文件包含第一模块中的非公开代码以及公开代码;最后打包该编译后的源代码以及该第二代码文件,以得到目标应用。本方案实施例第二模块在编码期依赖的是第一代码文件,所以第二模块在编码期不会依赖到第一模块中的非公开代码,而在编译期,第二模块依赖的是第二代码文件,所以可以在保证目标应用中模块正常运行的前提下,降低代码之间的耦合性。

Description

一种应用的开发方法、装置以及存储介质
技术领域
本发明涉及软件项目开发技术领域,具体涉及一种应用的开发方法、装置以及存储介质。
背景技术
在日常安卓(英文:Android)系统应用(APP,Application)的开发过程中,由于业务的不断增长,项目的源代码越来越多,工程日益增大。
对于“需要使用独立工程进行模块开发,并允许模块之间进行相互调用”这一种场景,现有技术中,可以根据业务的不同进行代码的划分,将不同的业务放置到独立的模块中进行开发,模块开发完成后,还要将该模块的代码进行编译打包,输出一个aar(英文全称:Android Archive)包,其中,该aar包包括该模块的所有源代码。
在应用的开发阶段,假如有两个模块,当第二模块需要调用第一模块的功能时,在编码期,第二模块可以直接依赖第一模块输出的aar包,但因为A输出的aar包包含有第一模块所有的源代码,这就意味着第二模块可以引用该aar包中所有的代码,而该aar包中有一部分代码是不需要被公开的,若这一部分在第二模块的编码期被引用,会导致第一模块修改困难,且第一模块的改动可能会导致其他模块无法编译,代码之间的耦合问题依然严重。
发明内容
本发明实施例提供一种应用的开发方法、装置以及存储介质,用于降低代码之间的耦合性。
一方面,本发明提供一种应用的开发方法,所述方法包括:
根据预置的依赖关系从公共服务器中获取第一代码文件,所述第一代码文件包含第一模块中的公开代码,所述依赖关系用于指示第二模块依赖所述第一模块;
根据所述第一代码文件以及所述第二模块的源代码对所述第二模块进行编码,得到编码文件,所述编码文件包括所述第一代码文件以及所述源代码;
根据所述编码文件中的第一代码文件从所述公共服务器中获取第二代码文件,并对所述编码文件中的源代码进行编译处理,得到编译后的源代码,所述第二代码文件包含所述第一模块中的非公开代码以及所述公开代码;
打包所述编译后的源代码以及所述第二代码文件,以得到目标应用。
一方面,本发明提供一种应用的开发方法,所述方法包括:
获取第一模块对应的代码,所述代码包括公开代码以及非公开代码;
将所述公开代码编译成第一代码文件,并将所述第一代码文件发送至公共服务器;
将所述代码编译成第二代码文件,并将所述第二代码文件发送至所述公共服务器。
一方面,本发明提供一种应用的开发装置,所述装置包括:
第一获取单元,用于根据预置的依赖关系从公共服务器中获取第一代码文件,所述第一代码文件包含第一模块中的公开代码,所述依赖关系用于指示第二模块依赖所述第一模块;
编码单元,用于根据所述第一代码文件以及所述第二模块的源代码对所述第二模块进行编码,得到编码文件,所述编码文件包括所述第一代码文件以及所述源代码;
处理单元,用于根据所述编码文件中的第一代码文件从所述公共服务器中获取第二代码文件,并对所述编码文件中的源代码进行编译处理,得到编译后的源代码,所述第二代码文件包含所述第一模块中的非公开代码以及所述公开代码;
打包单元,用于打包所述编译后的源代码以及所述第二代码文件。
在一些实施例中,所述编码单元具体用于:
获取所述第二模块的源代码;
根据预置的编码规则将所述第一代码文件写入所述源代码中,得到所述编码文件。
在一些实施例中,所述处理单元包括:
第一获取子单元,用于根据所述编码文件中的第一代码文件获取所述第二代码文件的获取路径;
第二获取子单元,用于根据所述获取路径从所述公共服务器中获取所述第二代码文件。
在一些实施例中,所述装置还包括:
第二获取单元,用于获取运行指令;
运行单元,用于根据所述运行指令运行所述目标应用。
在一些实施例中,所述运行单元具体用于:
根据所述运行指令运行所述目标应用中编译后的源代码,以运行所述第二模块;
根据所述运行指令运行所述目标应用中的第二代码文件,以运行所述第一模块。
在一些实施例中,所述装置还包括:
第三获取单元,用于获取第一模块对应的代码,所述代码包括公开代码以及非公开代码;
第一编译单元,用于将所述公开代码编译成第一代码文件,并将所述第一代码文件发送至公共服务器;
第二编译单元,用于将所述代码编译成第二代码文件,并将所述第二代码文件发送至所述公共服务器。
在一些实施例中,所述第二编译单元具体用于:
将所述非公开代码编译成第三代码文件;
根据所述第三代码文件以及所述第一代码文件确定所述第二代码文件。
在一些实施例中,所述第一编译单元具体用于:
将所述代码编译成所述第二代码文件;
对所述第二代码文件进行解压处理,得到解压后的第二文件;
删除所述解压后的第二代码文件中没有标记所述公开标签的代码,得到所述第一代码文件。
本发明实施例,根据预置的依赖关系从公共服务器中获取第一代码文件,该第一代码文件包含第一模块中的公开代码,该依赖关系用于指示第二模块依赖该第一模块;然后根据该第一代码文件以及该第二模块的源代码进行编码,得到编码文件,该编码文件包括该第一代码文件以及该源代码;根据该编码文件中的第一代码文件从该公共服务器中获取第二代码文件,并对该编码文件中的源代码进行编译处理,得到编译后的源代码,该第二代码文件包含该第一模块中的非公开代码以及该公开代码;最后打包该编译后的源代码以及该第二代码文件,以得到目标应用。本方案实施例第二模块在编码期依赖的是第一代码文件,而第一代码文件只包含第一模块中的公开代码,所以第二模块在编码期不会依赖到第一模块中的非公开代码,而在编译期,第二模块依赖的是第二代码文件,第二代码文件包含的是第一模块对应的所有代码,所以可以在保证目标应用中模块正常运行的前提下,降低代码之间的耦合性。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的应用的开发系统的场景示意图;
图2是本发明实施例提供的应用的开发方法的一种流程示意图;
图3是本发明实施例提供的应用的开发方法的另一种流程示意图;
图4a是本发明实施例提供的应用的开发装置的一种结构示意图;
图4b是本发明实施例提供的应用的开发装置的另一种结构示意图;
图4c是本发明实施例提供的应用的开发装置的另一种结构示意图;
图4d是本发明实施例提供的应用的开发装置的另一种结构示意图;
图5为本发明实施例提供的一种服务器的结构示意图;
图6为本发明实施例提供的一种终端的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明中的术语“第一”和“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或模块的过程、方法、系统、产品或设备没有限定于已列出的步骤或模块,而是可选地还包括没有列出的步骤或模块,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或模块。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
本发明实施例提供一种应用的开发方法、装置和存储介质。
其中,本发明实施例采用模块化的方案对一个需要开发的应用进行处理,即根据一个应用的业务(功能)进行代码的划分,将不同的业务放到独立的模块中进行开发,模块是指整体中的一个部分,可以理解为一个单独的功能模块。
本发明实施例中,开发人员会对模块中“允许被外部引用”以及“不允许被外部引用”这两类代码进行区分。
在一个实施例中,当第二模块需要依赖第一模块时,需要对第一模块中的代码进行区分时。
在对本发明实施例进行详细的解释说明之前,先对本发明实施例的应用场景予以介绍。本发明提供的方法主要应用于应用的开发系统,请参阅图1。
如图1所示,在第一模块的编码期,第一模块的开发人员可以将不同访问权限的代码放置在不同的源码目录中,其中,将“允许被外部引用”的代码,放置在src/应用程序编程接口(api,application programming interface)目录下,将“不允许被外部引用”的代码,放置在src/接口的实现(impl,implement)目录下,以第一模块中存在的源码文件A1.java,A2.java,A3.java三个文件为例,若A1.java为“允许被外部引用”的文件,则此时将A1.java放置在src/api目录下,若A2.java,A3.java为“不允许被外部引用”的文件,则此时将A2.java,A3.java放置在src/impl目录下,开发者根据实际的场景,在不同的目录放置源码文件即可。
在第一模块的编译期,待第一模块编码完成后,本发明中的应用的开发装置自动将A1.java编译成第一aar(即图1中的module-A-api.aar),其中第一aar包含A1.java编译后的A1.class,同时将A1.java,A2.java,A3.java编译成第二aar(即图1中的module-A-impl.aar),其中第二aar包含A2.java、A3.java编译后的A2.class、A3.class,并且将第一aar以及第二aar打包输出至公共服务器处存储,以供其他模块使用。
在第二模块的编码期(开发编码期),待第二模块需要依赖第一模块的功能时,会自动从公共服务器上拉取第一aar,根据第一aar以及第二模块的源代码对第二模块进行编码,由于第一aar只包含A1.java编译后的A1.class,所以,第二模块是无法引用到A2.class与A3.class的,这样就避免了第二模块在编码期引用第一模块中“不允许被外部引用”的代码,达到了代码隔离,强制解耦的目的。
在第二模块的编译期,第二模块编码完成后,将自动从公共服务器上拉取第二aar,并对第二模块的源代码进行编译,得到编译后的源代码,再将第一模块的第二aar以及第二模块编译后的源代码打包到安卓安装包(apk,AndroidPackage)中,就可以带运行期间正常执行两个模块内部的逻辑了。
需要说明的是,图1所示的应用的开发系统的场景示意图仅仅是一个示例,本发明实施例描述的应用的开发系统以及场景是为了更加清楚的说明本发明实施例的技术方案,并不构成对于本发明实施例提供的技术方案的限定,本领域普通技术人员可知,随着应用的开发系统的演变和新业务场景的出现,本发明实施例提供的技术方案对于类似的技术问题,同样适用。
下面结合具体实施例进行详细说明。
在本实施例中,将从应用的开发装置的角度进行描述,该应用的开发装置具体可以集成在服务器中。
请参阅图2,图2是本发明实施例中提供的应用的开发方法的一个实施例流程示意图,该应用的开发方法包括:
201、根据预置的依赖关系从公共服务器中获取第一代码文件。
本实施例中,公共服务器上存有被依赖模块的第一代码文件以及第二代码文件,第一代码文件以及第二代码文件的文件格式为aar包,其中,第一代码文件中包含有第一模块中的允许被外部引用的公开代码,第二代码文件除了包含有第一模块中允许被外部引用的代码,还包含有第一模块中不允许被外部引用的代码,第一模块为被第二模块引用(依赖)的模块。
其中,上述依赖关系用于指示第二模块依赖第一模块,该依赖关系是开发人员在服务器中预先设置的一个module.json文件。
例如,在一些实施例中,第一模块有A1.java,A2.java,A3.java三个文件,其中A1.java为“允许被外部引用”的文件,A2.java和A3.java为“不允许被外部引用”的文件,则此时本实施例中的第一文件为包含A1.class的aar包,A1.class为根据A1.java编译而成的代码;第二文件为包含A2.class和A3.class的aar包,A2.class和A3.class分别为根据A2.java和A3.java编译而成的代码。
在一个具体的实施例中,例如第一模块的功能为“播放在线歌曲”,则此时A1.java为“播放在线歌曲”的功能描述,而A2.java和A3.java为“播放在线歌曲”的内部实现,例如A2.java为“下载歌曲”的功能对应的代码,A3.java为“播放歌曲”的功能对应的代码,此时,第二模块在编码期依赖的是第一模块的功能描述性代码,而非内部实现代码。
在一个实施例中,当第一模块的功能为“播放歌曲”,第二模块的功能为“输出歌词文本”,则依赖了第一模块的第二模块可以“播放歌曲”且“输出歌词文本”。
202、根据所述第一代码文件以及所述第二模块的源代码对所述第二模块进行编码,得到编码文件。
本实施例中,在第二模块的编码期中,当根据依赖关系从公共服务器中获取第一代码文件之后,将会在第二模块中根据第二模块的源代码以及该第一代码文件对该第二模块进行编码,其中,所述编码文件包括所述第一代码文件以及所述源代码,具体包括:
a.获取所述第二模块的源代码。
其中,第二模块的源代码为第二模块自身的代码,与第二模块提供的功能相对应,该源代码可以由开发人员在第二模块的编码期中进行输入。
b.根据预置的编码规则将所述第一代码文件写入所述源代码中,得到所述编码文件。
其中,该编码规则为开发人员在服务器中预置的,该编码规则用于将第一代码文件写入第二模块中源代码中的特定位置。
由于第一代码文件中只包含有第一模块中的允许被外部引用的公开代码,例如,只包含A1.class,所以第二模块在编码期的时候只能依赖到第一模块的A1.class而不能依赖到A2.class和A3.class,所以本发明的实施例,在第二模块的编码期可以做到A1.class和A2.class、A3.class之间的代码隔离,以及在编码期A2.class、A3.Class与第二模块的源代码之间的隔离,A2.class和A3.Class在第二模块的编码期与第二模块的代码强制解耦。
此外,由于第二模块的开发人员在编码期不能修改A2.java、A3.Java,所以不会导致代码之间的维护混乱,而由于A1.java属于公开代码(即允许被外部引用的代码),A2.java、A3.Java为非公开代码(即不允许被外部引用的代码),所以可以避免由于第一模块的开发人员修改了A2.java,A3.java(如模块升级)而导致的其他模块依赖第一模块时的接口不兼容问题。
203、根据所述编码文件中的第一代码文件从所述公共服务器中获取第二代码文件,并对所述编码文件中的源代码进行编译处理,得到编译后的源代码。
本实施例中,在第二模块的编译期中,因为编码文件中包括第一代码文件,且第一代码文件与第二代码文件都属于第一模块,故服务器可以根据编码文件中的第一代码文件从公共服务器中拉取第二代码文件,其中,当从服务器中拉取第二代码文件之后,该第二代码文件可以替换编码文件中的第一代码文件,使得编译期的编码文件中的第一代码文件变为为第二代码文件。
其中,除了据所述编码文件中的第一代码文件从所述公共服务器中获取第二代码文件之外,还需要对编码文件中的源代码进行编译处理,得到编译后的源代码,而由于第二代码文件是经过编译的代码文件,故第二代码文件不需要再次进行编译。
204、打包所述编译后的源代码以及所述第二代码文件,以得到目标应用。
本实施例中,当从公共服务器中拉取了第二代码文件,并且对该第二模块本身对应的源代码进行编译之后,将第二模块自身的代码(编译后的源代码)以及第一模块的所有代码(第二代码文件,A1.class、A2.class和A3.class),打包到apk中,得到目标应用。
在一些实施例中,当得到目标应用之后,方法还包括,获取运行指令;并根据所述运行指令运行所述目标应用;
例如用户打开安装在手机或其他终端上的目标应用,然后打开该目标应用以运行上述目标应用;
更具体地,根据所述运行指令运行所述目标应用中编译后的源代码,以运行所述第二模块;并根据所述运行指令运行所述目标应用中的第二代码文件,以运行所述第一模块。
在一些实施例中,当在上述目标应用上运行了第二模块对应的功能时,此时需要运行第一模块对应的功能,服务器可以根据第二模块对应界面上第一模块的接口,从目标应用中拉取第二代码模块,以运行第一模块对应的功能;
例如用户点击在歌词界面的“播放在线歌曲”按钮,则此时,服务器从对应的apk中拉取第二代码文件,此时就可以播放在线歌曲了。
本发明实施例,根据预置的依赖关系从公共服务器中获取第一代码文件,该第一代码文件包含第一模块中的公开代码,该依赖关系用于指示第二模块依赖该第一模块;然后根据该第一代码文件以及该第二模块的源代码进行编码,得到编码文件,该编码文件包括该第一代码文件以及该源代码;根据该编码文件中的第一代码文件从该公共服务器中获取第二代码文件,并对该编码文件中的源代码进行编译处理,得到编译后的源代码,该第二代码文件包含该第一模块中的非公开代码以及该公开代码;最后打包该编译后的源代码以及该第二代码文件,得到目标应用。本方案实施例第二模块在编码期依赖的是第一代码文件,而第一代码文件只包含第一模块中的公开代码,所以第二模块在编码期不会依赖到第一模块中的非公开代码,而在编译期,第二模块依赖的是第二代码文件,第二代码文件包含的是第一模块对应的所有代码,所以可以在保证目标应用中模块正常运行的前提下,降低代码之间的耦合性。
请参阅图3,图3为本发明实施例提供的一种应用的开发方法的另一流程示意图。所述方法包括:
301、获取第一模块对应的代码,所述代码包括公开代码以及非公开代码。
在一些实施例中,开发人员在第一模块的编码期,会将第一模块对应的公开代码(“允许被外部引用”的代码)以及非公开代码(“不允许被外部引用”的代码)分别放在不同的目录下,例如,以第一模块中存在的源码文件A1.java,A2.java,A3.java三个文件为例,若A1.java为公开代码,则此时将A1.java放置在src/api目录下,若A2.java,A3.java为非公开代码,则此时将A2.java,A3.java放置在src/impl目录下,开发者根据实际的场景,在不同的目录放置源码文件即可。
在另一些实施例中,开发人员可以不通过设立src/api与src/impl目录的方式,来区分公开代码以及非公开代码两个维度的代码。而是可以把A1.java,A2.java,A3.java统一放置在同一个目录,但是在每一个公开代码的java文件的头部(如A1.java),需要增加公开注解,如增加“@public”。
302、将所述公开代码编译成第一代码文件,并将所述第一代码文件发送至公共服务器。
当服务器获取了代码之后,将会确定哪些代码属于公开代码,例如,根据代码对应的目录名称确定哪些代码属于公开代码,然后将获取到的公开代码编译成第一代码文件(A1.class)。
在一些实施例中,若开发人员在第一模块的编码期没有通过目录的方式来区分公开代码以及非公开代码,而是将代码都都放置在同一个目录,但是将在每一个公开代码的java文件的头部(如A1.java)都增加了公开注解,此时则需要编译打包该目录下的所有代码,即得到第二代码文件,第二代码文件包含第一模块中的所有代码(包含A1.class、A2.class和A3.class)。
得到第二代码文件之后,将会复制一份该第二代码文件,然后对其中一份代码文件进行解压处理,得到第二代码文件里面包含的代码,将第二代码文件中头部没有添加公开注解的文件都进行删除,得到第一代码文件,其中,第一代码文件只包含第一模块的公开代码。
其中,本申请实施例为了区分第一代码文件以及第二代码文件,可以将第一代码文件命名为module-A-api.aar,将第一代码文件命名为module-A-impl.aar。
303、将所述代码编译成第二代码文件,并将所述第二代码文件发送至所述公共服务器。
本实施例中,若开发人员通过目录对公开代码以及非公开代码进行了区分,则此时,服务器将src/api目录下的代码编译成第一代码文件,并将src/impl目录下的代码编译成第三代码文件,由于第一代码文件中包含公开代码,第三代码文件包含非公开代码,故将第一代码文件以及第三代码文件即可得到第一模块对应的所有代码,即第二代码文件。
304、根据预置的依赖关系从公共服务器中获取第一代码文件。
本实施例中,公共服务器上存有被依赖模块的第一代码文件以及第二代码文件,第一代码文件以及第二代码文件的文件格式为aar包,其中,第一代码文件中包含有第一模块中的允许被外部引用的公开代码,第二代码文件除了包含有第一模块中允许被外部引用的代码,还包含有第一模块中不允许被外部引用的代码,第一模块为被第二模块引用(依赖)的模块。
其中,上述依赖关系用于指示第二模块依赖第一模块,该依赖关系是开发人员在服务器中预先设置的一个module.json文件。
在一个具体的实施例中,例如第一模块的功能为“播放在线歌曲”,则此时A1.java为“播放在线歌曲”的功能描述,而A2.java和A3.java为“播放在线歌曲”的内部实现,例如A2.java为“下载歌曲”的功能对应的代码,A3.java为“播放歌曲”的功能对应的代码,此时,第二模块在编码期依赖的是第一模块的功能描述性代码,而非内部实现代码。
在一个实施例中,当第一模块的功能为“播放歌曲”,第二模块的功能为“输出歌词文本”,则依赖了第一模块的第二模块可以“播放歌曲”且“输出歌词文本”。
305、根据所述第一代码文件以及所述第二模块的源代码对所述第二模块进行编码,得到编码文件。
本实施例中,在第二模块的编码期中,当根据依赖关系从公共服务器中获取第一代码文件之后,将会在第二模块中根据第二模块的源代码以及该第一代码文件对该第二模块进行编码,其中,所述编码文件包括所述第一代码文件以及所述源代码,具体包括:
a.获取所述第二模块的源代码。
其中,第二模块的源代码为第二模块自身的代码,与第二模块提供的功能相对应,该源代码可以由开发人员在第二模块的编码期中进行输入。
b.根据预置的编码规则将所述第一代码文件写入所述源代码中,得到所述编码文件。
其中,该编码规则为开发人员在服务器中预置的,该编码规则用于将第一代码文件写入第二模块中源代码中的特定位置。
由于第一代码文件中只包含有第一模块中的允许被外部引用的公开代码,例如,只包含A1.class,所以第二模块在编码期的时候只能依赖到第一模块的A1.class而不能依赖到A2.class和A3.class,所以本发明的实施例,在第二模块的编码期可以做到A1.class和A2.class、A3.class之间的代码隔离,以及在编码期A2.class、A3.Class与第二模块的源代码之间的隔离,A2.class和A3.Class在第二模块的编码期与第二模块的代码强制解耦。
此外,由于第二模块的开发人员在编码期不能修改A2.java、A3.Java,所以不会导致代码之间的维护混乱,而由于A1.java属于公开代码(即允许被外部引用的代码),A2.java、A3.Java为非公开代码(即不允许被外部引用的代码),所以可以避免由于第一模块的开发人员修改了A2.java,A3.java(如模块升级)而导致的其他模块依赖第一模块时的接口不兼容问题。
306、根据所述编码文件中的第一代码文件从所述公共服务器中获取第二代码文件,并对所述编码文件中的源代码进行编译处理,得到编译后的源代码。
本实施例中,在第二模块的编译期中,因为编码文件中包括第一代码文件,且第一代码文件与第二代码文件都属于第一模块,故服务器可以根据编码文件中的第一代码文件从公共服务器中拉取第二代码文件,其中,当从服务器中拉取第二代码文件之后,该第二代码文件可以替换编码文件中的第一代码文件,使得编译期的编码文件中的第一代码文件变为为第二代码文件。
在一些实施例中,所述根据所述编码文件中的第一代码文件从所述公共服务器中获取第二代码文件包括:根据所述编码文件中的第一代码文件获取所述第二代码文件的获取路径;根据所述获取路径从所述公共服务器中获取所述第二代码文件。
其中,除了据所述编码文件中的第一代码文件从所述公共服务器中获取第二代码文件之外,还需要对编码文件中的源代码进行编译处理,得到编译后的源代码,而由于第二代码文件是经过编译的代码文件,故第二代码文件不需要再次进行编译。
307、打包所述编译后的源代码以及所述第二代码文件,以得到目标应用。
本实施例中,当从公共服务器中拉取了第二代码文件,并且对该第二模块本身对应的源代码进行编译之后,将第二模块自身的代码(编译后的源代码)以及第一模块的所有代码(第二代码文件,A1.class、A2.class和A3.class),打包到apk中,并打包得到目标应用。
在一些实施例中,当得到目标应用之后,方法还包括,获取运行指令;并根据所述运行指令运行所述目标应用:
例如用户打开安装在手机或其他终端上的目标应用,然后打开该目标应用以运行目标应用;
更具体地,根据所述运行指令运行所述目标应用中编译后的源代码,以运行所述第二模块;并根据所述运行指令运行所述目标应用中的第二代码文件,以运行所述第一模块。
在一些实施例中,当在上述目标应用上运行了第二模块对应的功能时,此时需要运行第一模块对应的功能,服务器可以根据第二模块对应界面上第一模块的接口,从目标应用中拉取第二代码模块,以运行第一模块对应的功能;
例如用户点击在歌词界面的“播放在线歌曲”按钮,则此时,服务器从对应的apk中拉取A1.java、A2.class和A3.class,此时就可以播放在线歌曲了。
308、获取运行指令。
例如,用户打开安装在手机或其他终端上的目标应用,然后点击该应用,以向该运用发送运行指令。
309、根据所述运行指令运行所述目标应用。
即根据所述运行指令运行所述目标应用中编译后的源代码,以运行所述第二模块;并根据所述运行指令运行所述目标应用中的第二代码文件,以运行所述第一模块;
在一些实施例中,如果要运行该应用中第一模块对应的功能,服务器可以根据第二模块对应界面上第一模块的接口,从目标应用中拉取第二代码模块,以运行第一模块对应的功能;
例如用户点击在歌词界面的“播放在线歌曲”按钮,则此时,服务器从对应的apk中拉取第二代码文件,此时就可以播放在线歌曲了。
需要说明的是,本实施例中,负责第二模块的开发者不能手动引用第一代码文件或第二代码文件。
本发明实施例,根据预置的依赖关系从公共服务器中获取第一代码文件,该第一代码文件包含第一模块中的公开代码,该依赖关系用于指示第二模块依赖该第一模块;然后根据该第一代码文件以及该第二模块的源代码进行编码,得到编码文件,该编码文件包括该第一代码文件以及该源代码;根据该编码文件中的第一代码文件从该公共服务器中获取第二代码文件,并对该编码文件中的源代码进行编译处理,得到编译后的源代码,该第二代码文件包含该第一模块中的非公开代码以及该公开代码;最后打包该编译后的源代码以及该第二代码文件,得到目标应用。本方案实施例第二模块在编码期依赖的是第一代码文件,而第一代码文件只包含第一模块中的公开代码,所以第二模块在编码期不会依赖到第一模块中的非公开代码,而在编译期,第二模块依赖的是第二代码文件,第二代码文件包含的是第一模块对应的所有代码,所以可以在保证目标应用中模块正常运行的前提下,降低代码之间的耦合性。
为了便于更好的实施本发明实施例提供的应用的开发方法,在一实施例中还提供了一种应用的开发装置。其中名词的含义与上述应用的开发方法中相同,具体实现细节可以参考方法实施例中的说明。
在一实施例中,还提供了一种应用的开发装置,如图4a所示,该应用的开发装置可以包括第一获取单元401,编码单元402,处理单元403以及打包单元404:
第一获取单元401,用于根据预置的依赖关系从公共服务器中获取第一代码文件,所述第一代码文件包含第一模块中的公开代码,所述依赖关系用于指示第二模块依赖所述第一模块;
编码单元402,用于根据所述第一代码文件以及所述第二模块的源代码对所述第二模块进行编码,得到编码文件,所述编码文件包括所述第一代码文件以及所述源代码;
处理单元403,用于根据所述编码文件中的第一代码文件从所述公共服务器中获取第二代码文件,并对所述编码文件中的源代码进行编译处理,得到编译后的源代码,所述第二代码文件包含所述第一模块中的非公开代码以及所述公开代码;
打包单元404,用于打包所述编译后的源代码以及所述第二代码文件,以得到目标应用。
在一些实施例中,所述编码单元402具体用于:获取所述第二模块的源代码;根据预置的编码规则将所述第一代码文件写入所述源代码中,得到所述编码文件。
在一些实施例中,如图4b所示,所述处理单元403包括:
第一获取子单元4031,用于根据所述编码文件中的第一代码文件获取所述第二代码文件的获取路径;
第二获取子单元4032,用于根据所述获取路径从所述公共服务器中获取所述第二代码文件。
在一些实施例中,如图4c所示,所述装置还包括:
第二获取单元405,用于获取运行指令;
运行单元406,用于根据所述运行指令运行所述目标应用。
在一些实施例中,所述运行单元406具体用于:根据所述运行指令运行所述目标应用中编译后的源代码,以运行所述第二模块;根据所述运行指令运行所述目标应用中的第二代码文件,以运行所述第一模块。
在一些实施例中,如图4d所示,所述装置还包括:
第三获取单元407,用于获取第一模块对应的代码,所述代码包括公开代码以及非公开代码;
第一编译单元408,用于将所述公开代码编译成第一代码文件,并将所述第一代码文件发送至公共服务器;
第二编译单元409,用于将所述代码编译成第二代码文件,并将所述第二代码文件发送至所述公共服务器。
在一些实施例中,所述第二编译单元409具体用于:将所述非公开代码编译成第三代码文件;根据所述第三代码文件以及所述第一代码文件确定所述第二代码文件。
在一些实施例中,所述第一编译单元408具体用于:将所述代码编译成所述第二代码文件;对所述第二代码文件进行解压处理,得到解压后的第二文件;删除所述解压后的第二代码文件中没有标记所述公开标签的代码,得到所述第一代码文件。
本发明实施例,第一获取单元401根据预置的依赖关系从公共服务器中获取第一代码文件,该第一代码文件包含第一模块中的公开代码,该依赖关系用于指示第二模块依赖该第一模块;然后编码单元402根据该第一代码文件以及该第二模块的源代码进行编码,得到编码文件,该编码文件包括该第一代码文件以及该源代码;处理单元403根据该编码文件中的第一代码文件从该公共服务器中获取第二代码文件,并对该编码文件中的源代码进行编译处理,得到编译后的源代码,该第二代码文件包含该第一模块中的非公开代码以及该公开代码;最后打包单元404对该编译后的源代码以及该第二代码文件进行打包处理,得到目标应用。本方案实施例第二模块在编码期依赖的是第一代码文件,而第一代码文件只包含第一模块中的公开代码,所以第二模块在编码期不会依赖到第一模块中的非公开代码,而在编译期,第二模块依赖的是第二代码文件,第二代码文件包含的是第一模块对应的所有代码,所以可以在保证目标应用中模块正常运行的前提下,降低代码之间的耦合性。
本发明实施例还提供一种服务器,如图5所示,其示出了本发明实施例所涉及的服务器的结构示意图,具体来讲:
该服务器可以包括一个或者一个以上处理核心的处理器501、一个或一个以上计算机可读存储介质的存储器502、电源503和输入单元504等部件。本领域技术人员可以理解,图5中示出的服务器结构并不构成对服务器的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器501是该服务器的控制中心,利用各种接口和线路连接整个服务器的各个部分,通过运行或执行存储在存储器502内的软件程序和/或模块,以及调用存储在存储器502内的数据,执行服务器的各种功能和处理数据,从而对服务器进行整体监控。可选的,处理器501可包括一个或多个处理核心;优选的,处理器501可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器501中。
存储器502可用于存储软件程序以及模块,处理器501通过运行存储在存储器502的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器502可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据服务器的使用所创建的数据等。此外,存储器502可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器502还可以包括存储器控制器,以提供处理器501对存储器502的访问。
服务器还包括给各个部件供电的电源503,优选的,电源503可以通过电源管理系统与处理器501逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源503还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该服务器还可包括输入单元504,该输入单元504可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
尽管未示出,服务器还可以包括显示单元等,在此不再赘述。具体在本实施例中,服务器中的处理器501会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器502中,并由处理器501来运行存储在存储器502中的应用程序,从而实现各种功能,如下:
根据预置的依赖关系从公共服务器中获取第一代码文件,该第一代码文件包含第一模块中的公开代码,该依赖关系用于指示第二模块依赖该第一模块;然后根据该第一代码文件以及该第二模块的源代码进行编码,得到编码文件,该编码文件包括该第一代码文件以及该源代码;根据该编码文件中的第一代码文件从该公共服务器中获取第二代码文件,并对该编码文件中的源代码进行编译处理,得到编译后的源代码,该第二代码文件包含该第一模块中的非公开代码以及该公开代码;最后打包所述编译后的源代码以及所述第二代码文件,以得到目标应用。
以上操作具体可参见前面的实施例,在此不作赘述。
由上可知,本实施例提供的服务器,根据预置的依赖关系从公共服务器中获取第一代码文件,该第一代码文件包含第一模块中的公开代码,该依赖关系用于指示第二模块依赖该第一模块;然后根据该第一代码文件以及该第二模块的源代码进行编码,得到编码文件,该编码文件包括该第一代码文件以及该源代码;根据该编码文件中的第一代码文件从该公共服务器中获取第二代码文件,并对该编码文件中的源代码进行编译处理,得到编译后的源代码,该第二代码文件包含该第一模块中的非公开代码以及该公开代码;最后打包所述编译后的源代码以及所述第二代码文件,以得到目标应用。本方案实施例第二模块在编码期依赖的是第一代码文件,而第一代码文件只包含第一模块中的公开代码,所以第二模块在编码期不会依赖到第一模块中的非公开代码,而在编译期,第二模块依赖的是第二代码文件,第二代码文件包含的是第一模块对应的所有代码,所以可以在保证目标应用中模块正常运行的前提下,降低代码之间的耦合性。
相应的,本发明实施例还提供一种终端,如图6所示,该终端可以包括射频(RF,Radio Frequency)电路601、包括有一个或一个以上计算机可读存储介质的存储器602、输入单元603、显示单元604、传感器605、音频电路606、无线保真(WiFi,Wireless Fidelity)模块607、包括有一个或者一个以上处理核心的处理器608、以及电源609等部件。本领域技术人员可以理解,图6中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
RF电路601可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器608处理;另外,将涉及上行的数据发送给基站。通常,RF电路601包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM,Subscriber Identity Module)卡、收发信机、耦合器、低噪声放大器(LNA,Low Noise Amplifier)、双工器等。此外,RF电路601还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(GSM,Global System of Mobile communication)、通用分组无线服务(GPRS,GeneralPacket Radio Service)、码分多址(CDMA,Code Division Multiple Access)、宽带码分多址(WCDMA,Wideband Code Division Multiple Access)、长期演进(LTE,Long TermEvolution)、电子邮件、短消息服务(SMS,Short Messaging Service)等。
存储器602可用于存储软件程序以及模块,处理器608通过运行存储在存储器602的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器602可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器602可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器602还可以包括存储器控制器,以提供处理器608和输入单元603对存储器602的访问。
输入单元603可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,在一个具体的实施例中,输入单元603可包括触敏表面以及其他输入设备。触敏表面,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面上或在触敏表面附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器608,并能接收处理器608发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面。除了触敏表面,输入单元603还可以包括其他输入设备。具体地,其他输入设备可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元604可用于显示由用户输入的信息或提供给用户的信息以及终端的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元604可包括显示面板,可选的,可以采用液晶显示器(LCD,Liquid Crystal Display)、有机发光二极管(OLED,Organic Light-Emitting Diode)等形式来配置显示面板。进一步的,触敏表面可覆盖显示面板,当触敏表面检测到在其上或附近的触摸操作后,传送给处理器608以确定触摸事件的类型,随后处理器608根据触摸事件的类型在显示面板上提供相应的视觉输出。虽然在图6中,触敏表面与显示面板是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面与显示面板集成而实现输入和输出功能。
终端还可包括至少一种传感器605,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板的亮度,接近传感器可在终端移动到耳边时,关闭显示面板和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于终端还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路606、扬声器,传声器可提供用户与终端之间的音频接口。音频电路606可将接收到的音频数据转换后的电信号,传输到扬声器,由扬声器转换为声音信号输出;另一方面,传声器将收集的声音信号转换为电信号,由音频电路606接收后转换为音频数据,再将音频数据输出处理器608处理后,经RF电路601以发送给比如另一终端,或者将音频数据输出至存储器602以便进一步处理。音频电路606还可能包括耳塞插孔,以提供外设耳机与终端的通信。
WiFi属于短距离无线传输技术,终端通过WiFi模块607可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图6示出了WiFi模块607,但是可以理解的是,其并不属于终端的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器608是终端的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器602内的软件程序和/或模块,以及调用存储在存储器602内的数据,执行终端的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器608可包括一个或多个处理核心;优选的,处理器608可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器608中。
终端还包括给各个部件供电的电源609(比如电池),优选的,电源可以通过电源管理系统与处理器608逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源609还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管未示出,终端还可以包括摄像头、蓝牙模块等,在此不再赘述。具体在本实施例中,终端中的处理器608会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器602中,并由处理器608来运行存储在存储器602中的应用程序,从而实现各种功能:
根据预置的依赖关系从公共服务器中获取第一代码文件,该第一代码文件包含第一模块中的公开代码,该依赖关系用于指示第二模块依赖该第一模块;然后根据该第一代码文件以及该第二模块的源代码进行编码,得到编码文件,该编码文件包括该第一代码文件以及该源代码;根据该编码文件中的第一代码文件从该公共服务器中获取第二代码文件,并对该编码文件中的源代码进行编译处理,得到编译后的源代码,该第二代码文件包含该第一模块中的非公开代码以及该公开代码;最后打包所述编译后的源代码以及所述第二代码文件,以得到目标应用。
以上操作具体可参见前面的实施例,在此不作赘述。
由上可知,本实施例提供的终端,根据预置的依赖关系从公共服务器中获取第一代码文件,该第一代码文件包含第一模块中的公开代码,该依赖关系用于指示第二模块依赖该第一模块;然后根据该第一代码文件以及该第二模块的源代码进行编码,得到编码文件,该编码文件包括该第一代码文件以及该源代码;根据该编码文件中的第一代码文件从该公共服务器中获取第二代码文件,并对该编码文件中的源代码进行编译处理,得到编译后的源代码,该第二代码文件包含该第一模块中的非公开代码以及该公开代码;最后打包所述编译后的源代码以及所述第二代码文件,以得到目标应用。本方案实施例第二模块在编码期依赖的是第一代码文件,而第一代码文件只包含第一模块中的公开代码,所以第二模块在编码期不会依赖到第一模块中的非公开代码,而在编译期,第二模块依赖的是第二代码文件,第二代码文件包含的是第一模块对应的所有代码,所以可以在保证目标应用中模块正常运行的前提下,降低代码之间的耦合性。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
为此,本发明实施例提供一种存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本发明实施例所提供的任一种应用的开发方法中的步骤。例如,该指令可以执行如下步骤:
根据预置的依赖关系从公共服务器中获取第一代码文件,该第一代码文件包含第一模块中的公开代码,该依赖关系用于指示第二模块依赖该第一模块;然后根据该第一代码文件以及该第二模块的源代码进行编码,得到编码文件,该编码文件包括该第一代码文件以及该源代码;根据该编码文件中的第一代码文件从该公共服务器中获取第二代码文件,并对该编码文件中的源代码进行编译处理,得到编译后的源代码,该第二代码文件包含该第一模块中的非公开代码以及该公开代码;最后打包所述编译后的源代码以及所述第二代码文件,以得到目标应用。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
其中,该存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该存储介质中所存储的指令,可以执行本发明实施例所提供的任应用的开发方法中的步骤,因此,可以实现本发明实施例所提供的任一种应用的开发方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
以上对本发明实施例所提供的一种应用的开发方法、装置和存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (10)

1.一种应用的开发方法,其特征在于,包括:
根据预置的依赖关系从公共服务器中获取第一代码文件,所述第一代码文件包含第一模块中的公开代码,所述依赖关系用于指示第二模块依赖所述第一模块;
根据所述第一代码文件以及所述第二模块的源代码对所述第二模块进行编码,得到编码文件,所述编码文件包括所述第一代码文件以及所述源代码;
根据所述编码文件中的第一代码文件从所述公共服务器中获取第二代码文件,并对所述编码文件中的源代码进行编译处理,得到编译后的源代码,所述第二代码文件包含所述第一模块中的非公开代码以及所述公开代码;
打包所述编译后的源代码以及所述第二代码文件,以得到目标应用。
2.根据权利要求1所述的方法,其特征在于,所述根据所述第一代码文件以及所述第二模块的源代码对所述第二模块进行编码,得到编码文件包括:
获取所述第二模块的源代码;
根据预置的编码规则将所述第一代码文件写入所述源代码中,得到所述编码文件。
3.根据权利要求1所述的方法,其特征在于,所述根据所述编码文件中的第一代码文件从所述公共服务器中获取第二代码文件包括:
根据所述编码文件中的第一代码文件获取所述第二代码文件的获取路径;
根据所述获取路径从所述公共服务器中获取所述第二代码文件。
4.根据权利要求1所述的方法,其特征在于,所述打包所述编译后的源代码以及所述第二代码文件,以得到目标应用之后,所述方法还包括:
获取运行指令;
根据所述运行指令运行所述目标应用。
5.根据权利要求4所述的方法,其特征在于,所述根据所述运行指令运行所述目标应用包括:
根据所述运行指令运行所述目标应用中编译后的源代码,以运行所述第二模块;
根据所述运行指令运行所述目标应用中的第二代码文件,以运行所述第一模块。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述根据预置的依赖关系从公共服务器中获取第一代码文件之前,所述方法还包括:
获取所述第一模块对应的代码,所述代码包括所述公开代码以及所述非公开代码;
将所述公开代码编译成所述第一代码文件,并将所述第一代码文件发送至所述公共服务器;
将所述代码编译成所述第二代码文件,并将所述第二代码文件发送至所述公共服务器。
7.根据权利要求6所述的方法,其特征在于,所述将所述代码编译成所述第二代码文件包括:
将所述非公开代码编译成第三代码文件;
根据所述第三代码文件以及所述第一代码文件确定所述第二代码文件。
8.根据权利要求6所述的方法,其特征在于,所述公开代码标记有公开标签,所述将所述公开代码编译成第一代码文件包括:
将所述代码编译成所述第二代码文件;
对所述第二代码文件进行解压处理,得到解压后的第二文件;
删除所述解压后的第二代码文件中没有标记所述公开标签的代码,得到所述第一代码文件。
9.一种应用的开发装置,其特征在于,包括:
第一获取单元,用于根据预置的依赖关系从公共服务器中获取第一代码文件,所述第一代码文件包含第一模块中的公开代码,所述依赖关系用于指示第二模块依赖所述第一模块;
编码单元,用于根据所述第一代码文件以及所述第二模块的源代码对所述第二模块进行编码,得到编码文件,所述编码文件包括所述第一代码文件以及所述源代码;
处理单元,用于根据所述编码文件中的第一代码文件从所述公共服务器中获取第二代码文件,并对所述编码文件中的源代码进行编译处理,得到编译后的源代码,所述第二代码文件包含所述第一模块中的非公开代码以及所述公开代码;
打包单元,用于打包所述编译后的源代码以及所述第二代码文件,以得到目标应用。
10.一种存储介质,其特征在于,所述存储介质存储有多条指令,所述指令适于处理器进行加载,以执行权利要求1至9任一项所述的应用的开发方法中的步骤。
CN201910285522.3A 2019-04-10 2019-04-10 一种应用的开发方法、装置以及存储介质 Active CN110058850B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910285522.3A CN110058850B (zh) 2019-04-10 2019-04-10 一种应用的开发方法、装置以及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910285522.3A CN110058850B (zh) 2019-04-10 2019-04-10 一种应用的开发方法、装置以及存储介质

Publications (2)

Publication Number Publication Date
CN110058850A CN110058850A (zh) 2019-07-26
CN110058850B true CN110058850B (zh) 2022-12-09

Family

ID=67317529

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910285522.3A Active CN110058850B (zh) 2019-04-10 2019-04-10 一种应用的开发方法、装置以及存储介质

Country Status (1)

Country Link
CN (1) CN110058850B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110750245A (zh) * 2019-10-17 2020-02-04 杭州涂鸦信息技术有限公司 一种应用程序开发方法及系统和设备
CN110865838A (zh) * 2019-11-15 2020-03-06 北京云迹科技有限公司 机器人升级方法、装置、电子设备和计算机可读存储介质
CN111367510B (zh) * 2020-02-24 2024-03-19 腾讯音乐娱乐科技(深圳)有限公司 一种安卓功能模块开发的方法及装置
CN111399864B (zh) * 2020-03-16 2023-07-07 北京五八信息技术有限公司 一种安卓系统应用程序基础包生成方法以及生成装置
CN111399846B (zh) * 2020-03-16 2023-03-31 北京五八信息技术有限公司 一种安卓手机应用程序容量监控方法及装置
CN112015394B (zh) * 2020-08-27 2024-02-27 北京百度网讯科技有限公司 安卓功能模块开发方法和装置、计算机系统和存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103870310A (zh) * 2014-02-18 2014-06-18 小米科技有限责任公司 程序编译方法及相关装置
CN107608677A (zh) * 2017-09-05 2018-01-19 腾讯科技(深圳)有限公司 一种编译处理方法、装置及电子设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080155500A1 (en) * 2006-12-22 2008-06-26 International Business Machines Corporation Method for automatic generation of schema mapping application code

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103870310A (zh) * 2014-02-18 2014-06-18 小米科技有限责任公司 程序编译方法及相关装置
CN107608677A (zh) * 2017-09-05 2018-01-19 腾讯科技(深圳)有限公司 一种编译处理方法、装置及电子设备

Also Published As

Publication number Publication date
CN110058850A (zh) 2019-07-26

Similar Documents

Publication Publication Date Title
CN110058850B (zh) 一种应用的开发方法、装置以及存储介质
CN107995519B (zh) 多媒体文件播放的方法、装置和存储介质
EP3402160B1 (en) Service processing method and apparatus
CN106502703B (zh) 一种函数调用方法和装置
CN107734616B (zh) 应用程序关闭方法、装置、存储介质和电子设备
CN107273160A (zh) 一种版本升级的方法及装置
CN109857403B (zh) 一种页面更新、页面处理方法及装置
CN109933381B (zh) 一种内核的加载方法及装置
CN103702297A (zh) 短信增强方法、装置及系统
CN110865837B (zh) 一种进行系统升级的方法和终端
CN103455330A (zh) 应用程序管理方法、终端、设备及系统
CN103455348A (zh) 分区调整方法、装置、终端、服务器及系统
EP2869604B1 (en) Method, apparatus and device for processing a mobile terminal resource
CN110046497B (zh) 一种函数挂钩实现方法、装置和存储介质
CN111713176B (zh) 一种数据传输方法及终端
CN111273955B (zh) 热修复插件优化方法、装置、存储介质及电子设备
CN108874554B (zh) 信息通信方法及装置
CN106095423B (zh) 提供浏览服务的方法、终端及服务器
CN106919458B (zh) Hook目标内核函数的方法及装置
CN111104180A (zh) 应用程序优化方法、装置、存储介质及电子设备
CN112394906A (zh) 一种应用切换运行的方法及设备
CN105278942B (zh) 组件管理方法及装置
CN110020338B (zh) 浏览器、网页打开方法及设备
US20160314036A1 (en) Method and Apparatus for Repairing Dynamic Link Library File
CN106899959B (zh) 一种获取sim卡信息的方法、装置、终端及系统

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
GR01 Patent grant
GR01 Patent grant