CN110083360B - 一种应用程序代码的编译方法、装置、设备及存储介质 - Google Patents
一种应用程序代码的编译方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN110083360B CN110083360B CN201910345183.3A CN201910345183A CN110083360B CN 110083360 B CN110083360 B CN 110083360B CN 201910345183 A CN201910345183 A CN 201910345183A CN 110083360 B CN110083360 B CN 110083360B
- Authority
- CN
- China
- Prior art keywords
- compiling
- frame
- source code
- flutter
- redundant
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种应用程序代码的编译方法,包括如下步骤:获取所述应用程序的源码;遍历所述源码判断所述源码是否包括Flutter框架;如果所述源码不包括Flutter框架,则采用第一编译模式对源码进行编译;如果所述源码包括Flutter框架,且所述Flutter框架是冗余Flutter框架,从所述源码中去除所述冗余Flutter框架;采用所述第一编译模式对去除所述冗余Flutter框架的源码进行编译。同时公开了一种应用程序代码的编译装置、设备及存储介质。本发明通过去除应用程序代码编译过程中的冗余Flutter框架,使应用程序代码编译过程能够选择需要的编译模式,同时减少编译时间,提高效率。
Description
技术领域
本发明实施例涉及一种应用程序的编译方法,尤其涉及一种应用程序代码的编译方法、装置、设备及存储介质。
背景技术
Flutter是Google开发的一套全新的跨平台、开源UI框架,支持iOS、Android系统开发,可以快速在IOS和Android上构建高质量的原生用户界面,许多程序员在源码编写过程中会选择使用Flutter框架进行编写。但由于Flutter框架本身具有限制,在调试运行过程中可以使用Releae和Debug两种模式,但debug模式在打包过程会出现报错导致无法编包,因此在正式发布安装包时只能支持Release模式。这一特性使源码编译过程的模式选择受到限制,影响了应用程序源码编译的灵活度。同时现有技术在进行编译时,通常会将其中的Flutter框架一起进行编译,Flutter框架代码较多,会延长应用程序源码编译时间,降低效率。
发明内容
本发明提供一种应用程序的编译方法,以实现减少编译时间,提高编译效率,同时使编译过程有多种模式可选择。本发明提供的一种应用程序的编译方法步骤如下:
获取所述应用程序的源码;
遍历所述源码判断所述源码是否包括Flutter框架;
如果所述源码不包括Flutter框架,则采用第一编译模式对源码进行编译;
如果所述源码包括Flutter框架,且所述Flutter框架是冗余Flutter框架,
从所述源码中去除所述冗余Flutter框架;
采用所述第一编译模式对去除所述冗余Flutter框架的源码进行编译。
进一步地,若所述源码包括Flutter框架,且所述Flutter框架不是冗余Flutter框架,则采用第二编译模式对包括Flutter框架的所述源码进行编译。
进一步地,所述遍历所述源码判断所述源码是否包括Flutter框架,其步骤包括:
获取所述源码中的所有文件名;
判断所述源码中的所有文件名中是否有预设的Flutter框架文件名;
若有,则所述源码包括所述Flutter框架;
若没有,则所述源码不包括所述Flutter框架。
进一步地,所述判断所述Flutter框架是否为冗余Flutter框架,其步骤如下:
获取预设的Flutter框架清单;
根据获取的所述Flutter框架清单判断所述Flutter框架是否为冗余Flutter框架。
进一步地,所述从所述源码中去除所述冗余Flutter框架,包括如下步骤:
获取所述冗余Flutter框架的资源文件路径;
删除所述冗余Flutter框架的资源文件路径指向的Flutter框架资源文件。
进一步地,所述第一编译模式为支持所述应用程序源码的编译模式。
进一步地,所述第二编译模式为同时支持所述应用程序源码和所述Flutter框架的编译模式。
进一步地,第一获取模块,用于获取所述应用程序的源码;
第一判断模块,用于遍历所述源码判断所述源码是否包括Flutter框架;
第一编译模块,如果所述源码不包括Flutter框架,则采用第一编译模式对源码进行编译;
去除模块,如果所述源码包括Flutter框架,且所述Flutter框架是冗余Flutter框架,则从所述源码中去除所述冗余Flutter框架;
使用所述第一编译模块采用所述第一编译模式对去除所述冗余Flutter框架的源码进行编译。
本发明还提供一种应用程序代码的编译设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的程序,其特征在于,所述处理器执行所述程序时实现上述的应用程序代码的编译方法。
本发明还提供一种终端可读存储介质,其上存储有程序,其特征在于,所述程序被处理器执行时能够实现上述的应用程序代码的编译方法。
本发明通过去除应用程序代码编译过程中的冗余Flutter框架,使应用程序代码编译过程能够选择需要的编译模式,减少编译时间,提高效率。
附图说明
图1是本发明实施例一中的应用程序代码编译方法的流程图。
图2是本发明实施例二中的应用程序代码编译方法的流程图。
图3是本发明实施例三中的应用程序代码编译装置的功能模块图。
图4是本发明实施例四中的应用程序代码编译装置的功能模块图。
图5是本发明实施例五中的应用程序代码编译设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各步骤描述成顺序的处理,但是其中的许多步骤可以被并行地、并发地或者同时实施。此外,各步骤的顺序可以被重新安排。当其操作完成时处理可以被终止,但是还可以具有未包括在附图中的附加步骤。处理可以对应于方法、函数、规程、子例程、子程序等等。
此外,术语“第一”、“第二”等可在本文中用于描述各种方向、动作、步骤或元件等,但这些方向、动作、步骤或元件不受这些术语限制。这些术语仅用于将第一个方向、动作、步骤或元件与另一个方向、动作、步骤或元件区分。举例来说,在不脱离本申请的范围的情况下,可以将第一速度差值为第二速度差值,且类似地,可将第二速度差值称为第一速度差值。第一速度差值和第二速度差值两者都是速度差值,但其不是同一速度差值。术语“第一”、“第二”等而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
实施例一
本实施例公开了一种应用程序代码的编译方法,本实施例可适用于应用程序编译安装包的过程,该编译方法可以由具备编译功能的设备/终端/计算机来执行。
本实施例以引入Flutter框架进行源码编写的Andriod系统APP编译安装包为例,描述应用程序代码的编译方法。
图1为本发明实施例一提供的一种应用程序代码编译方法的流程图,具体包括如下步骤:
S101获取所述应用程序的源码;
APP安装包是IOS或者Android操作系统上可被下载、解压并运行的APP安装文件,由程序源码文件编译、打包后生成,源码文件的大小决定了安装包的大小。APP安装包文件的源码包括多个部分,包括被编译的代码文件(.dex文件)、资源文件(resources)和配置文件(manifest file)。
该步骤中,获取到的APP安装包文件源码存储在设备/终端/计算机的临时文件夹中,方便后续进行源码的遍历和判断,当安装包编译完成后即删除临时文件夹的内容,避免占据系统资源。在本实施例中,获取源码的方式为通过python、java或其他编程语言实现的自动化测试脚本对所述APP安装包源码文件进行逐行扫描获取。
S102遍历所述源码判断所述源码是否包括Flutter框架;
该步骤中,通过获取的应用程序的源码对应的脚本内容判断获取的源码中是否有Flutter框架文件,若不包括,则执行步骤S103,若包括,则执行步骤S104。
S103如果所述源码不包括Flutter框架,则采用第一编译模式对源码进行编译;
当所述源码不包括Flutter框架,则可任意选择APP安装包源码的编译模式,不需要考虑兼容Flutter框架的情况。所述第一编译模式为支持所述应用程序源码的编译模式,本实施例中是指APP安装包源码的编译过程可支持的任意一种编译模式。第一编译模式在现有技术中一般为Debug模式或Release模式。
使用Debug模式编译时,在命令行模式下,进入待编译的APP项目工程目录,然后使用ant debug命令进行编译,编译完成后在bin目录下生成一个后缀为-debug.apk的文件。使用Release模式编译时,在命令行模式下,进入项目工程目录,然后使用ant release命令进行编译,编译完成后在bin目录下生成以-unsigned.apk为后缀的apk文件,完成打包。
Debug编译模式采用系统自动生成的签名文件,对于正式发布的安装包来说安全性不够高,因此在本实施例中,第一编译模式优选为Release模式。
使用Release模式编译时,在命令行模式下,首先使用AAPT工具获取打包的res资源文件,生成R.java代码文件、resources.arsc资源文件和配置文件。然后处理.aidl文件,生成对应的Java接口文件,然后通过Java Compiler编译R.java、Java接口文件和Java源文件,生成.class文件。利用dex工具将.class文件转化为Dalvik字节码,同时加入需要的第三方文库等文件。最后将生成的dex文件、资源包和其他资源通过apkbuilder生成初始的apk文件包;根据所用的编译模式选择签名,然后将签名后的apk文件包通过zipalign进行优化,得到编译完成的apk文件包。
S104如果所述源码包括Flutter框架,且所述Flutter框架是冗余Flutter框架,
S105从所述源码中去除所述冗余Flutter框架;
本实施例提供一种判断所述Flutter框架是否为冗余Flutter框架具体规则:在使用Flutter框架进行应用程序开发时,Flutter框架能够提供一部分功能,当只需要查看APP原本功能,不查看Flutter框架的功能时,则将Flutter框架认定为冗余框架。
替代实施例中,在步骤S104确定所述源码包括Flutter框架,且所述Flutter框架是冗余Flutter框架之后,执行步骤S105之前进一步包括从获取的源码中找到冗余Flutter框架的所在位置,以便准确地将冗余Flutter框架删除,之后执行步骤S103,采用所述第一编译模式对去除所述冗余Flutter框架的源码进行编译。
本实施例以APP安装包的编译为例,通过去除应用程序源码编译过程中的冗余Flutter框架,提高了应用程序编译过程的模式选择的灵活度,加快了编译速度,提高了编译效率。
实施例二
本实施例公开了一种应用程序代码的编译方法,本实施例可适用于应用程序编译安装包的过程,该编译方法可以由具备编译功能的设备/终端/计算机来执行。
本实施例以引入Flutter框架进行源码编写的Andriod系统APP编译安装包为例,描述应用程序代码的编译方法。
图2为本发明实施例二提供的一种应用程序代码编译方法的流程图,具体包括如下步骤:
S201获取所述应用程序的源码。
该步骤中,获取到的APP安装包文件源码存储在设备/终端/计算机的临时文件夹中,方便后续进行源码的遍历和判断,当安装包编译完成后即删除临时文件夹的内容,避免占据系统资源。在本实施例中,获取源码的方式为通过python、java或其他编程语言实现的自动化测试脚本对所述APP安装包源码文件进行逐行扫描获取。
S202获取源码中所有文件名。
该步骤通过脚本内容遍历保存在临时文件夹中的APP安装包源码文件目录,获取源码中所有文件名。
S203,判断所述源码中的所有文件名中是否有预设的Flutter框架文件名。
在配置文件中预先设置关键文件名信息,记录Flutter框架有关的文件信息,将关键文件名的信息保存在configure脚本文件中。编译器通过运行configure脚本,获知源码中与Flutter框架有关的文件信息。具体地,本实施例提供一种判断过程的脚本内容如下:
上述脚本内容能够实现将提前配置好的关键文件名与S102中获取的源码中所有文件名比对,判断所有文件名中是否存在关键文件名。
若存在,则源码中包含有预设的Flutter框架文件名,若不存在,则源码在编写时没有引入Flutter框架。
S204若所述源码不包括Flutter框架,则采用第一编译模式对源码进行编译。
当所述源码不包括Flutter框架,则可任意选择APP安装包源码的编译模式,不需要考虑兼容Flutter框架的情况。即第一编译模式为APP安装包源码的编译过程可支持的任意一种编译模式。可选地,第一编译模式为Debug模式或Release模式。本实施例中,第一编译模式优选为Release模式。
S205如果所述源码包括Flutter框架,则获取预设的Flutter框架清单文件。
在APP安装包源码中预先设置Flutter框架清单文件,在Android系统中,每个APP都有一个程序清单文件固定设置于该APP根目录下,该清单文件记录了该APP在对应Android系统中所需要的信息。具体地,在本实施例中,清单文件记录了该APP打包过程是否需要Flutter框架的功能。
S206根据获取的所述Flutter框架清单文件判断所述Flutter框架是否为冗余Flutter框架。
在使用Flutter框架进行应用程序开发时,Flutter框架能够提供一部分功能,当只需要查看APP原本功能,不查看Flutter框架的功能时,则将Flutter框架认定为冗余框架。具体实施过程中,例如在本实施例中,清单文件中预先记录了所有Flutter框架均为冗余Flutter框架,据此判断出Flutter框架为冗余Flutter框架。
S207如果所述Flutter框架是冗余Flutter框架,则获取所述冗余Flutter框架的资源文件路径。
该步骤从源码中获取冗余Flutter框架在.class文件目录中的相对路径,通过该相对路径定位每一个冗余Flutter框架的文件位置。
S208删除所述冗余Flutter框架的资源文件路径指向的Flutter框架资源文件。
该步骤通过上一步定位的冗余Flutter框架资源文件路径,将冗余Flutter框架资源文件删除。然后执行步骤S204,采用所述第一编译模式对去除所述冗余Flutter框架的源码进行编译。
冗余Flutter框架被去掉后,源码中剩余部分仅为与应用功能有关的代码文件,第一编译模式为支持所述应用程序源码的编译模式,本实施例中采用APP安装包编译过程可任意支持的编译模式即为第一编译模式。可选地,第一编译模式为Debug模式或Release模式。在本实施例中,第一编译模式优选为Release模式。
S209如果所述Flutter框架不是冗余Flutter框架,则采用第二编译模式对包括Flutter框架的所述源码进行编译。
当所述Flutter框架不是冗余Flutter框架,则需要选择同时满足APP安装包源码和Flutter框架的编译模式,第二编译模式为同时支持所述应用程序源码和所述Flutter框架的编译模式,本实施例中为同时支持APP安装包源码和Flutter框架的编译模式。由于在实际操作中,Flutter框架对编包过程有限制,如果使用debug模式则只能在调试过程运行,当打包出完整的安装包时就会出现报错,因此在编译需要正式发布的APP安装包时,编译模式只能选择Release模式,因此第二编译模式为Flutter框架能够支持的编译模式,在本实施中,第二编译模式优选为Release模式。
本实施例以APP安装包的编译为例,通过去除应用程序源码编译过程中的冗余Flutter框架,提高了应用程序编译过程的模式选择的灵活度,加快了编译速度,提高了编译效率。
实施例三
本实施例提供了一种应用程序代码的编译装置,可执行本发明实施例一所提供的应用程序编译方法,具备执行方法相应的功能模块和有益效果。
图3是本发明应用程序的一种较佳实施例的装置功能模块图。本发明所称的模块是指一种能够被至少一个处理器所执行并且能够完成固定功能的一系列计算机程序段,其存储在存储器中。
本实施例应用程序代码的编译装置300包括如下模块:
第一获取模块301,用于获取所述应用程序的源码;
第一判断模块302,用于遍历所述源码判断所述源码是否包括Flutter框架;
第一编译模块303,如果所述源码不包括Flutter框架,则采用第一编译模式对源码进行编译;
去除模块304,如果所述源码包括Flutter框架,且所述Flutter框架是冗余Flutter框架,则从所述源码中去除所述冗余Flutter框架;
使用所述第一编译模块303采用所述第一编译模式去除所述冗余Flutter框架的源码进行编译。
本实施例通过去除应用程序源码编译过程中的冗余Flutter框架,提高了应用程序编译过程的模式选择的灵活度,加快了编译速度,提高了编译效率。
实施例四
本实施例提供了一种应用程序代码的编译装置,可执行本发明实施例二所提供的应用程序编译方法,具备执行方法相应的功能模块和有益效果。
图4是本发明应用程序的一种较佳实施例的装置功能模块图。本发明所称的模块是指一种能够被至少一个处理器所执行并且能够完成固定功能的一系列计算机程序段,其存储在存储器中。
本实施例应用程序代码的编译装置400包括如下模块:
第一获取模块401,用于获取所述应用程序的源码;
第二获取模块402,用于获取所述源码中的所有文件名;
第一逻辑模块403,用于判断所述源码中的所有文件名中是否有预设的Flutter框架文件名,若有,则所属源码包括所述Flutter框架,若没有,则所述源码不包括所述Flutter框架。
第一编译模块404,如果所述源码不包括Flutter框架,则采用第一编译模式对源码进行编译;
第三获取模块405,如果所述源码包括Flutter框架,则获取预设的Flutter框架清单文件。
第二逻辑模块406,用于根据获取的所述Flutter框架清单判断所述Flutter框架是否为冗余Flutter框架。
第四获取模块407,用于当所述Flutter框架是冗余Flutter框架,则获取所述冗余Flutter框架的资源文件路径;
删除模块408,用于删除所述冗余Flutter框架的资源文件路径指向的Flutter框架资源文件。
使用所述第一编译模块404对去除所述冗余Flutter框架的源码采用所述第一编译模式进行编译。
第二编译模块409,用于当所述Flutter框架不是冗余Flutter框架,则采用第二编译模式对包括Flutter框架的所述源码进行编译。
本实施例通过去除应用程序源码编译过程中的冗余Flutter框架,提高了应用程序编译过程的模式选择的灵活度,加快了编译速度,提高了编译效率。相对于现有技术,本实施例应用程序代码的编译装置用于执行前述实施例应用程序代码的编译方法,因此还可以实现前述实施例的所有优点,在此不再赘述。
实施例五
图5为本发明实施例五提供的一种应用程序代码编译设备的结构示意图,如图5所示,该设备包括处理器501、存储器502、输入装置503和输出装置504;设备中处理器501的数量可以是一个或多个,图5以一个处理器501为例;设备中的处理器501、存储器502、输入装置503和输出装置504可以通过总线或其他方式连接,图5中以通过总线连接为例。
存储器502作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例一中的一种应用程序代码的编译方法对应的模块(例如实施例三一种应用程序代码的编译装置300中的第一获取模块301、第一判断模块302和第一编译模块303等)。处理器501通过运行存储在存储器502中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的一种应用程序代码的编译方法。
存储器502可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器502可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器502可进一步包括相对于处理器501远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置503可用于接收获取的应用程序的源码,以及应用代码编译设备需要获取的源码中的文件名、预设的Flutter框架清单文件和/或冗余Flutter框架的资源文件路径。输出装置504可包括显示屏等显示设备。
相对于现有技术,本实施例应用程序代码的编译装置用于执行前述实施例应用程序代码的编译方法,因此可以实现前述实施例的所有优点,在此不再赘述。
实施例六
实施例六提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种一种应用程序代码的编译方法,该方法包括:
获取所述应用程序的源码;
遍历所述源码判断所述源码是否包括Flutter框架;
如果所述源码不包括Flutter框架,则采用第一编译模式对源码进行编译;
如果所述源码包括Flutter框架,且所述Flutter框架是冗余Flutter框架,
从所述源码中去除所述冗余Flutter框架;
采用所述第一编译模式对去除所述冗余Flutter框架的源码进行编译。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的应用程序代码编译的相关操作.
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
值得注意的是,上述搜索装置的实施例中,所包括的各个模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能模块的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (8)
1.一种应用程序代码的编译方法,其特征在于,包括如下步骤:
获取所述应用程序的源码;
遍历所述源码判断所述源码是否包括Flutter框架;
如果所述源码不包括Flutter框架,则采用第一编译模式对源码进行编译,所述第一编译模式为支持所述应用程序源码的编译模式;
如果所述源码包括Flutter框架,且所述Flutter框架是冗余Flutter框架,
从所述源码中去除所述冗余Flutter框架;
采用所述第一编译模式对去除所述冗余Flutter框架的源码进行编译;
其中,所述冗余Flutter框架是在使用Flutter框架进行应用程序开发时,只需查看APP原本功能,不查看Flutter框架的功能时的Flutter框架。
2.根据权利要求1所述的一种应用程序代码的编译方法,其特征在于:
若所述源码包括Flutter框架,且所述Flutter框架不是冗余Flutter框架,则采用第二编译模式对包括Flutter框架的所述源码进行编译;
其中,所述第二编译模式为同时支持所述应用程序源码和所述Flutter框架的编译模式。
3.根据权利要求1所述的一种应用程序代码的编译方法,其特征在于,所述遍历所述源码判断所述源码是否包括Flutter框架,其步骤包括:
获取所述源码中的所有文件名;
判断所述源码中的所有文件名中是否有预设的Flutter框架文件名;
若有,则所述源码包括所述Flutter框架;
若没有,则所述源码不包括所述Flutter框架。
4.根据权利要求1所述的一种应用程序代码的编译方法,其特征在于,所述判断所述Flutter框架是否为冗余Flutter框架,其步骤如下:
获取预设的Flutter框架清单;
根据获取的所述Flutter框架清单判断所述Flutter框架是否为冗余Flutter框架。
5.根据权利要求1所述的一种应用程序代码的编译方法,其特征在于,所述从所述源码中去除所述冗余Flutter框架,包括如下步骤:
获取所述冗余Flutter框架的资源文件路径;
删除所述冗余Flutter框架的资源文件路径指向的Flutter框架资源文件。
6.一种应用程序代码的编译装置,其特征在于,包括:
第一获取模块,用于获取所述应用程序的源码;
第一判断模块,用于遍历所述源码判断所述源码是否包括Flutter框架;
第一编译模块,如果所述源码不包括Flutter框架,则采用第一编译模式对源码进行编译,所述第一编译模式为支持所述应用程序源码的编译模式;
去除模块,如果所述源码包括Flutter框架,且所述Flutter框架是冗余Flutter框架,则从所述源码中去除所述冗余Flutter框架;
使用所述第一编译模块采用所述第一编译模式对去除所述冗余Flutter框架的源码进行编译;
其中,所述冗余Flutter框架是在使用Flutter框架进行应用程序开发时,只需查看APP原本功能,不查看Flutter框架的功能时的Flutter框架。
7.一种应用程序代码的编译设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-5任一所述的应用程序代码的编译方法。
8.一种终端可读存储介质,其上存储有程序,其特征在于,所述程序被处理器执行时能够实现如权利要求1-5任一所述的应用程序代码的编译方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910345183.3A CN110083360B (zh) | 2019-04-26 | 2019-04-26 | 一种应用程序代码的编译方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910345183.3A CN110083360B (zh) | 2019-04-26 | 2019-04-26 | 一种应用程序代码的编译方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110083360A CN110083360A (zh) | 2019-08-02 |
CN110083360B true CN110083360B (zh) | 2023-08-22 |
Family
ID=67417050
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910345183.3A Active CN110083360B (zh) | 2019-04-26 | 2019-04-26 | 一种应用程序代码的编译方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110083360B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110750288B (zh) * | 2019-10-23 | 2023-03-24 | 广州华多网络科技有限公司 | 原生工程配置方法、装置、电子设备及存储介质 |
CN111008009B (zh) * | 2019-11-05 | 2023-02-24 | 贝壳技术有限公司 | 基于Flutter的业务组件化方法及系统 |
CN111008007B (zh) * | 2019-11-06 | 2023-03-28 | 贝壳技术有限公司 | 组件开发方法、系统、存储介质及处理器 |
CN110908677B (zh) * | 2019-11-29 | 2023-03-28 | 安徽智恒信科技股份有限公司 | 一种Flutter应用安装包体积优化的方法及存储介质 |
CN111078278B (zh) * | 2019-12-21 | 2020-09-08 | 众能联合数字技术有限公司 | 支持Flutter及iOS混编工程的自动化打包方法 |
CN111596949B (zh) * | 2020-04-09 | 2021-06-04 | 北京五八信息技术有限公司 | 一种开发应用程序的方法及装置 |
CN111694564B (zh) * | 2020-06-05 | 2023-08-04 | 百度在线网络技术(北京)有限公司 | Flutter混合模式的编译方法、装置、设备和介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060190933A1 (en) * | 2005-02-22 | 2006-08-24 | Ruey-Yuan Tzeng | Method and apparatus for quickly developing an embedded operating system through utilizing an automated building framework |
CN107273176A (zh) * | 2016-04-08 | 2017-10-20 | 上海思立微电子科技有限公司 | 一种适配硬件架构的编译方法及装置 |
-
2019
- 2019-04-26 CN CN201910345183.3A patent/CN110083360B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060190933A1 (en) * | 2005-02-22 | 2006-08-24 | Ruey-Yuan Tzeng | Method and apparatus for quickly developing an embedded operating system through utilizing an automated building framework |
CN107273176A (zh) * | 2016-04-08 | 2017-10-20 | 上海思立微电子科技有限公司 | 一种适配硬件架构的编译方法及装置 |
Non-Patent Citations (1)
Title |
---|
移动应用跨平台开发框架的比较分析;金诚;《民营科技》;20181031;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110083360A (zh) | 2019-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110083360B (zh) | 一种应用程序代码的编译方法、装置、设备及存储介质 | |
CN106371940B (zh) | 一种程序崩溃解决方法及装置 | |
CN106775723B (zh) | 基于Android平台的系统固件定制的方法和Android设备 | |
CN111090433B (zh) | 一种数据处理的方法、装置和存储介质 | |
EP3353648A1 (en) | Methods and systems for uploading a program based on a target network platform | |
CN109032631B (zh) | 应用程序补丁包获取方法、装置、计算机设备及存储介质 | |
CN108897547B (zh) | 一种软件自动化部署方法及装置 | |
CN105468529A (zh) | 一种安卓应用ui控件精准遍历方法和装置 | |
CN108614702B (zh) | 字节码优化方法及装置 | |
CN112965720B (zh) | 一种组件编译方法、装置、设备及计算机可读存储介质 | |
CN110659031A (zh) | 应用程序的编译方法、装置、电子设备及存储介质 | |
CN113835713B (zh) | 源码包下载方法、装置、计算机设备和存储介质 | |
CN104866293A (zh) | 一种对Android应用程序扩展功能的方法及装置 | |
CN106681783A (zh) | 一种svn代码检测方法及其系统 | |
CN106776266B (zh) | 测试工具的配置方法及终端设备 | |
CN112099880B (zh) | 场景驱动的应用程序约减方法和系统 | |
CN108694049B (zh) | 一种更新软件的方法和设备 | |
CN111061486B (zh) | 一种安卓应用程序增量方法 | |
CN112860312A (zh) | 项目依赖关系变化的检测方法及装置 | |
CN106933642B (zh) | 应用程序的处理方法及处理装置 | |
CN114816816A (zh) | 崩溃堆栈信息处理方法、装置、设备及存储介质 | |
CN111240987B (zh) | 移植程序检测方法、装置、电子设备及计算机可读存储介质 | |
KR102141749B1 (ko) | App 프로그램 실행 방법 및 장치 | |
CN110334031B (zh) | 内存分配代码检测方法、装置、计算机设备及存储介质 | |
CN105447040A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |