CN111694564B - Flutter混合模式的编译方法、装置、设备和介质 - Google Patents

Flutter混合模式的编译方法、装置、设备和介质 Download PDF

Info

Publication number
CN111694564B
CN111694564B CN202010507203.5A CN202010507203A CN111694564B CN 111694564 B CN111694564 B CN 111694564B CN 202010507203 A CN202010507203 A CN 202010507203A CN 111694564 B CN111694564 B CN 111694564B
Authority
CN
China
Prior art keywords
flutter
compiling
mode
switched
mixed
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
CN202010507203.5A
Other languages
English (en)
Other versions
CN111694564A (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.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom 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 Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN202010507203.5A priority Critical patent/CN111694564B/zh
Publication of CN111694564A publication Critical patent/CN111694564A/zh
Application granted granted Critical
Publication of CN111694564B publication Critical patent/CN111694564B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本申请实施例公开了一种Flutter混合模式的编译方法、装置、设备和介质,涉及程序开发技术领域,可适用于各种应用程序的开发场景,例如,对音视频类应用程序、图像处理类应用程序、人工智能或者语音交互类应用程序的开发场景。具体实现方案为:从编译文件中读取切换后的Flutter混合模式,加载与所述切换后的Flutter混合模式对应的编译元素;与所述源码模式对应的编译元素包括Flutter源码和Flutter的配置文件,与所述产物模式对应的编译元素包括Flutter产物;基于所述编译元素对当前代码进行混合编译。本申请的技术在Flutter混合模式下,实现源码模式和产物模式的切换。

Description

Flutter混合模式的编译方法、装置、设备和介质
技术领域
本申请涉及计算机技术,尤其涉及程序开发技术领域。
背景技术
Flutter是Google(谷歌)开源的UI(User Interface,用户界面)工具包。随着Flutter的不断发展,越来越多的应用程序在尝试引入Flutter进行开发。对于一个完善的Android(安卓)应用程序,一般需要进行混合模式的Flutter开发,即一部分程序是Android实现,另一部分是Flutter实现。
Flutter混合模式包括直接集成Flutter源码来进行编译的源码模式,以及直接使用Flutter的编译产物进行开发的产物模式。目前的Android代码编译环境中,仅支持单一模式,无法在源码模式和产物模式之间进行切换,使得代码编译不够灵活,效率低下。
发明内容
本申请实施例提供了一种Flutter混合模式的编译方法、装置、设备和介质。
第一方面,本申请实施例提供了一种Flutter混合模式的编译方法,包括:
从编译文件中读取切换后的Flutter混合模式,所述切换后的Flutter混合模式包括源码模式或产物模式;
加载与所述切换后的Flutter混合模式对应的编译元素;与所述源码模式对应的编译元素包括Flutter源码和Flutter的配置文件,与所述产物模式对应的编译元素包括Flutter产物;
基于所述编译元素对当前代码进行混合编译。
第二方面,本申请实施例提供了一种Flutter混合模式的编译装置,包括:
模式读取模块,用于从编译文件中读取切换后的Flutter混合模式,所述切换后的Flutter混合模式包括源码模式或产物模式;
加载模块,用于加载与所述切换后的Flutter混合模式对应的编译元素;与所述源码模式对应的编译元素包括Flutter源码和Flutter的配置文件,与所述产物模式对应的编译元素包括Flutter产物;
编译模块,用于基于所述编译元素对当前代码进行混合编译。
第三方面,本申请实施例提供了一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行任一实施例所提供的一种Flutter混合模式的编译方法。
第四方面,本申请实施例还提供了一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行任一实施例所提供的一种Flutter混合模式的编译方法。
根据本申请的技术在Flutter混合模式下,实现源码模式和产物模式的切换。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本申请的限定。其中:
图1是本申请实施例中的第一种Flutter混合模式的编译方法的流程图;
图2是本申请实施例中的第二种Flutter混合模式的编译方法的流程图;
图3是本申请实施例中的第三种Flutter混合模式的编译方法的流程图;
图4是本申请实施例中的Flutter混合模式的编译装置的结构图;
图5是用来实现本申请实施例的Flutter混合模式的编译方法的电子设备的框图。
具体实施方式
以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
根据本申请的实施例,图1是本申请实施例中的第一种Flutter混合模式的编译方法的流程图,本申请实施例适用于在基于Android代码的Flutter混合开发的模式下,进行模式切换的情况,可适用于各种应用程序的开发场景,例如,对音视频类应用程序、图像处理类应用程序、人工智能或者语音交互类应用程序的开发场景。该方法通过Flutter混合模式的编译装置执行,该装置采用软件和/或硬件实现,并具体配置于具备一定数据运算能力的电子设备中。
如图1所示的Flutter混合模式的编译方法,包括:
S110、从编译文件中读取切换后的Flutter混合模式,切换后的Flutter混合模式包括源码模式或产物模式。
本实施例在基于Android代码的Flutter混合开发的模式下,创造性地配置一编译文件,该编译文件包括切换后的Flutter混合模式。具体的,编译文件配置有代表不同模式的参数,例如,debug参数代表源码模式,aar参数代表产物模式。开发人员可以自主配置编译文件中的参数,以切换模式。
示例性的,当前Flutter混合模式为源码模式或者无Flutter混合模式,开发人员可以在编译文件中配置aar参数;相应的,如果从编译文件中读取到aar参数,确定切换后的Flutter混合模式为产物模式。
示例性的,当前Flutter混合模式为产物模式或者无Flutter混合模式,开发人员可以在编译文件中配置debug参数;相应的,如果从编译文件中读取到debug参数,确定切换后的Flutter混合模式为源码模式。
S120、加载与切换后的Flutter混合模式对应的编译元素。
确定切换后的Flutter混合模式后,可以根据切换后的Flutter混合模式自动加载与该模式对应的编译元素。具体的,与源码模式对应的编译元素包括Flutter源码和Flutter的配置文件,与产物模式对应的编译元素包括Flutter产物。其中,Flutter的配置文件用于配置Flutter环境和Flutter开发框架,为Flutter源码的编译和开发提供配置基础。
可选的,本地预先存储有与切换后的Flutter混合模式对应的编译元素,则可以根据切换后的Flutter混合模式,从本地加载对应的编译元素。
S130、基于编译元素对当前代码进行混合编译。
如果切换前为无Flutter模式,则当前代码仅包括Android代码;如果切换前为源码模式,则当前代码包括Android代码和Flutter源码;如果切换前为产物模式,则当前代码包括Android代码和Flutter产物。
如果切换后的Flutter混合模式为源码模式,基于加载的Flutter源码和Flutter的配置文件对当前代码进行混合编译。如果切换后的Flutter混合模式为产物模式,基于加载的Flutter产物对当前代码进行混合编译。可以理解的是,混合编译后,当前代码更新为混合编译后的代码。
可见,本实施例在相邻两次编译之间,支持Flutter混合模式从无Flutter混合模式切换到源码模式,从无Flutter混合模式切换到产物模式,从源码模式切换到产物模式,从产物模式切换到源码模式。并且,支持一个工程开发周期内的多次混合编译,从而在一个工程中可以灵活采取无Flutter混合模式、源码模式和产物模式进行编译。
本实施例中,配置一编译文件,该编译文件包括切换后的Flutter混合模式,从而可以自动确定切换后的Flutter混合模式;进而自动加载与切换后的Flutter混合模式对应的编译元素,提供混合编译的基础条件;从而可以基于自动加载的编译元素直接对当前代码进行混合编译,提高编译效率。本申请实施例可以通过配置文件在无Flutter混合模式、源码模式和产物模式之间自由切换,自主选择所需要使用的编译模式,不需要关心模式切换所需要进行的配置和改动,能够很方便、快捷地的加载对应的编译元素进行本地编译工作。
在某些应用场景下,本申请实施例还达到了以下技术效果:1)在不开发Flutter页面的时候,没有必要加载Flutter源码,可以使用本实施例提供的编译文件切换为产物模式,这样就会省略每次都编译Flutter的耗时,而且也能在本地编译环境中测试Flutter发布版(即Flutter产物)的使用效果;2)相比于现有技术在加载Flutter产物后,由于未配置Flutter环境和Flutter开发框架,无法对当前代码进行debug调试,且不能实时看到修改结果;本实施例通过从产物模式切换到源码模式,在产物模式下加载Flutter产物,在源码模式下加载Flutter源码和Flutter的配置文件,从而可以在加载Flutter产物之后,基于通过配置文件配置的Flutter环境和Flutter开发框架,对当前代码进行debug调试,实时看到修改结果,提高了开发效率。
根据本申请的实施例,图2是本申请实施例中的第二种Flutter混合模式的编译方法的流程图,本申请实施例在上述各实施例的技术方案的基础上进行优化。
可选的,在操作“加载与产物模式对应的Flutter产物”之后,追加操作“如果当前代码的编译环境中存在历史Flutter源码和Flutter编译所需的Flutter环境和Flutter开发框架,将历史Flutter源码、Flutter环境和Flutter开发框架删除”。
可选的,将操作“基于编译元素对当前代码进行混合编译”细化为“通过Flutter的配置文件,自动配置Flutter环境和Flutter开发框架;基于Flutter环境和Flutter开发框架,将Flutter源码和当前代码进行混合编译”;或者,细化为“将Flutter产物集成到当前代码的主工程中,进行混合编译”。
如图2所示的Flutter混合模式的编译方法,包括:
S210、从编译文件中读取切换后的Flutter混合模式,如果Flutter混合模式为源码模式,跳转到S220;如果Flutter混合模式为产物模式,跳转到S230。
S220、加载与源码模式对应的Flutter源码和Flutter的配置文件。继续执行S240。
值得说明的是,如果切换前的Flutter混合模式是产物模式,则本地会存在历史Flutter产物。那么在S230之火,可以删除历史Flutter产物。当然也可以保留历史Flutter产物,只是混合编译的时候不编译该历史Flutter产物即可。
S230、加载与产物模式对应的Flutter产物。继续执行S231。
S231、判断当前代码的编译环境中是否存在历史Flutter源码和Flutter编译所需的Flutter环境和Flutter开发框架,如果存在,跳转到S232;如果不存在,跳转到S250。
S232、将历史Flutter源码、Flutter环境和Flutter开发框架删除,继续执行S250。
如果切换前的Flutter混合模式是源码模式,则本地会存在历史Flutter源码和Flutter编译所需的Flutter环境和Flutter开发框架。由于在产物模式下不需要本地进行Flutter编译,因此需要将Flutter环境和Flutter开发框架删除,保证本地不进行Flutter编译。
S240、通过Flutter的配置文件,自动配置Flutter环境和Flutter开发框架;继续执行S241。
相比于现有技术需要开发人员手动配置Flutter环境和Flutter开发框架,本实施例将配置Flutter环境和Flutter开发框架所需的信息存储至Flutter的配置文件中。在加载到Flutter的配置文件之后,自动运行Flutter的配置文件,通过其中存储的信息自动配置Flutter环境和Flutter开发框架。之后开发人员就可以直接进行源码编译和开发。
S241、基于Flutter环境和Flutter开发框架,将Flutter源码和当前代码进行混合编译。结束本次操作。
源码模式的特点是直接集成Flutter源码来进行编译,需要配置好Flutter环境和Flutter开发框架,之后可以对Flutter源码进行直接开发和调试,可以非常迅速的看到修改结果。
示例性的,Flutter的SDK(Software Development Kit,软件开发工具包)本身是支持了直接的编译和产出的,也就是说按照Flutter官方提供的混合模式编译方案,Flutter的SDK就可以将代码编译为产物,并打入当前Android代码对应的APK(Androidapplication package,Android应用程序包)文件中,实现Flutter源码和当前代码的混合编译。
S250、将Flutter产物集成到当前代码的主工程中,进行混合编译。
Flutter以产物的方式集成到主工程(Native工程),简而言之将开发的Flutter项目单独编译成aar文件,然后以组件的形式被Native工程依赖。Flutter的SDK本身支持aar模式的编译,但是如果存在plugin(即Flutter提供的一个单独的业务功能,可以使用其来调用Native的代码),原生方案会为Flutter工程和每一个plugin都生成一个aar,在使用时会比较麻烦,需要导入很多的aar文件到Native工程。针对这个问题,目前比较通用的方案是使用fatAar(即一个开源项目,可以把整个工程及其依赖工程编译成一个aar)将Flutter部分编译为一个aar,从而提高编译效率。
本实施例分别提供了源码模式下和产物模式下的混合编译方法,在源码模式下可以自动配置Flutter环境和Flutter开发框架,以提高源码模式下的编译效率和智能化程度;在混合模式下,可以直接将Flutter产物集成到当前代码的主工程,无需人工加载产物,也无需人工集成产物,进一步提高编译效率。
在上述实施例和下述实施例中,使用远程仓库对Flutter源码、Flutter的配置文件和Flutter产物进行维护,进而在加载与切换后的Flutter混合模式对应的编译元素时,从远程仓库加载与切换后的Flutter混合模式对应的编译元素。通过远程仓库对编译元素进行维护,保证编译元素的稳定性,也有利于更新编译元素,从而保证编译元素的时效性。
图3是本申请实施例中的第三种Flutter混合模式的编译方法的流程图,本申请实施例在上述各实施例的技术方案的基础上进行优化。
可选的,在操作“加载与切换后的Flutter混合模式对应的编译元素”之前,追加“从编译文件中读取切换后的Flutter混合模式的版本和分支”;相应的,将操作“从编译文件中读取切换后的Flutter混合模式的版本和分支”细化为“加载与切换后的Flutter混合模式的版本和分支对应的编译元素”。
可选的,将操作“从编译文件中读取切换后的Flutter混合模式”细化为“响应于对当前代码的开始编译操作,运行编译文件,得到编译文件中的切换后的Flutter混合模式”。
如图3所示的Flutter混合模式的编译方法,包括:
S310、从编译文件中读取切换后的Flutter混合模式,切换后的Flutter混合模式包括源码模式或产物模式。
本实施例中,响应于对当前代码的开始编译操作,运行编译文件,得到编译文件中的切换后的Flutter混合模式。
具体的,开发人员在需要进行混合编译时,在编译文件中配置代表切换后的Flutter混合模式的参数。启动对当前代码的编译操作,以使当前代码开始编译。电子设备响应于对当前代码的开始编译操作,运行编译文件,从编译文件中读取代表切换后的Flutter混合模式的参数,得到读取到的参数所代表的切换后的Flutter混合模式。
S320、从编译文件中读取切换后的Flutter混合模式的版本和分支。
本实施例中,开发人员在需要进行混合编译时,除了在编译文件中配置代表切换后的Flutter混合模式的参数之外,还可以配置代表切换后的Flutter混合模式的版本和分支的参数。其中,Flutter混合模式的版本和分支包括Flutter源码的版本和阶段分支、Flutter产物的版本和阶段分支,以及Flutter的配置文件的版本。进而在响应于对当前代码的开始编译操作而运行编译文件时,除了从编译文件中读取代表切换后的Flutter混合模式的参数之外,还能读取到代表切换后的Flutter混合模式的版本和分支的参数,进而读取到切换后的Flutter混合模式的版本和分支。
本实施例提供了切换后的Flutter混合模式、对应的版本和分支的读取操作,将编译文件置于当前代码的编译环境中,当当前代码开始编译时运行编译文件,以便于将Flutter产物或Flutter源码与当前代码进行混合编译。
可选的,编译文件为脚本。脚本语言又被称为扩建的语言,或者动态语言,用来控制混合编译的过程,脚本通常是以文本(ASCⅡ)保存,只是在被调用时进行解释或者编译。本实施例通过脚本的形式配置代表切换后的Flutter混合模式的参数、代表切换后的Flutter混合模式的版本和分支的参数。本实施例通过脚本配置实现了只需修改相关参数就可以切换不同的模式、版本和参数。
S330、加载与切换后的Flutter混合模式的版本和分支对应的编译元素。
本实施例在远程仓库中预先存储有与切换后的Flutter混合模式的版本和分支对应的编译元素,则可以根据切换后的Flutter混合模式的版本和分支,从远程仓库加载对应的编译元素。
具体的,在产物模式下,会自动选择对应版本和分支的产物到开发工程中,这种情况并不需要配置Flutter环境和Flutter开发框架,因此将历史Flutter源码、Flutter环境和Flutter开发框架删除,开发人员可以非常简单快速的引入Flutter产物进行编译和开发。在源码模式下,同样可以自动选择对应版本和分支的Flutter源码,以及对应版本的Flutter的配置文件,并进行加载和编译。
可选的,预先在远程编译机器上为Flutter的源码的对应分支、版本生成对应的Flutter产物,并将生成的对应分支和版本的Flutter产物存储至远程仓库。
S340、基于编译元素对当前代码进行混合编译。
本实施例为Flutter源码和Flutter产物设置了对应的版本和分支,可以给开发人员提供明确的参数来选择其所需要的版本和分支进行加载,通过自动化的版本和分支维度的管理,极大的简化了开发人员对Flutter产物、源码和配置文件的引入和使用工作,提高了研发效率。
根据本申请的实施例,图4是本申请实施例中的Flutter混合模式的编译装置的结构图,本申请实施例适用于在基于Android代码的Flutter混合开发的模式下,进行模式切换的情况,该装置采用软件和/或硬件实现,并具体配置于具备一定数据运算能力的电子设备中。
如图4所示的一种Flutter混合模式的编译装置400,包括:模式读取模块401、加载模块402和编译模块403;其中,
模式读取模块401,用于从编译文件中读取切换后的Flutter混合模式,切换后的Flutter混合模式包括源码模式或产物模式;
加载模块402,用于加载与切换后的Flutter混合模式对应的编译元素;与源码模式对应的编译元素包括Flutter源码和Flutter的配置文件,与产物模式对应的编译元素包括Flutter产物;
编译模块403,用于基于编译元素对当前代码进行混合编译。
本实施例中,配置一编译文件,该编译文件包括切换后的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混合模式的编译方法相应的功能模块和有益效果。
根据本申请的实施例,本申请还提供了一种电子设备和一种可读存储介质。
如图5所示,是实现本申请实施例的Flutter混合模式的编译方法的电子设备的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。
如图5所示,该电子设备包括:一个或多个处理器501、存储器502,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示GUI的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个电子设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图5中以一个处理器501为例。
存储器502即为本申请所提供的非瞬时计算机可读存储介质。其中,存储器存储有可由至少一个处理器执行的指令,以使至少一个处理器执行本申请所提供的Flutter混合模式的编译方法。本申请的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本申请所提供的Flutter混合模式的编译方法。
存储器502作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本申请实施例中的Flutter混合模式的编译的方法对应的程序指令/模块(例如,附图4所示的包括模式读取模块401、加载模块402和编译模块403)。处理器501通过运行存储在存储器502中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的Flutter混合模式的编译的方法。
存储器502可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储实现Flutter混合模式的编译方法的电子设备的使用所创建的数据等。此外,存储器502可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器502可选包括相对于处理器501远程设置的存储器,这些远程存储器可以通过网络连接至执行Flutter混合模式的编译方法的电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
执行Flutter混合模式的编译方法的电子设备还可以包括:输入装置503和输出装置504。处理器501、存储器502、输入装置503和输出装置504可以通过总线或者其他方式连接,图5中以通过总线连接为例。
输入装置503可接收输入的数字或字符信息,以及产生与执行Flutter混合模式的编译方法的电子设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置504可以包括显示设备、辅助照明装置(例如,LED)和触觉反馈装置(例如,振动电机)等。该显示设备可以包括但不限于,液晶显示器(LCD)、发光二极管(LED)显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。
此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、专用ASIC(专用集成电路)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
这些计算程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(PLD)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、互联网和区块链网络。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。

Claims (12)

1.一种Flutter混合模式的编译方法,包括:
从编译文件中读取切换后的Flutter混合模式,所述切换后的Flutter混合模式包括源码模式或产物模式;
加载与所述切换后的Flutter混合模式对应的编译元素;与所述源码模式对应的编译元素包括Flutter源码和Flutter的配置文件,与所述产物模式对应的编译元素包括Flutter产物;
若所述切换后的Flutter混合模式为源码模式,则通过所述Flutter的配置文件,自动配置Flutter环境和Flutter开发框架,并基于所述Flutter环境和Flutter开发框架,将所述Flutter源码和当前代码进行混合编译;
若所述切换后的Flutter混合模式为产物模式,则将所述Flutter产物集成到当前代码的主工程中,进行混合编译。
2.根据权利要求1所述的方法,在所述加载与所述切换后的Flutter混合模式对应的编译元素之前,还包括:
从编译文件中读取所述切换后的Flutter混合模式的版本和分支;
所述加载与所述切换后的Flutter混合模式对应的编译元素,包括:
加载与所述切换后的Flutter混合模式的版本和分支对应的编译元素。
3.根据权利要求1所述的方法,其中,所述加载与所述切换后的Flutter混合模式对应的编译元素,包括:
从远程仓库加载与所述切换后的Flutter混合模式对应的编译元素。
4.根据权利要求1所述的方法,其中,所述从编译文件中读取切换后的Flutter混合模式,包括:
响应于对所述当前代码的开始编译操作,运行所述编译文件,得到所述编译文件中的切换后的Flutter混合模式。
5.根据权利要求1-4任一项所述的方法,其中,所述编译文件为脚本。
6.一种Flutter混合模式的编译装置,包括:
模式读取模块,用于从编译文件中读取切换后的Flutter混合模式,所述切换后的Flutter混合模式包括源码模式或产物模式;
加载模块,用于加载与所述切换后的Flutter混合模式对应的编译元素;与所述源码模式对应的编译元素包括Flutter源码和Flutter的配置文件,与所述产物模式对应的编译元素包括Flutter产物;
编译模块,用于若所述切换后的Flutter混合模式为源码模式,则通过所述Flutter的配置文件,自动配置Flutter环境和Flutter开发框架,并基于所述Flutter环境和Flutter开发框架,将所述Flutter源码和当前代码进行混合编译;若所述切换后的Flutter混合模式为产物模式,则将所述Flutter产物集成到当前代码的主工程中,进行混合编译。
7.根据权利要求6所述的装置,还包括:
版本和分支读取模块,用于在所述加载与所述切换后的Flutter混合模式对应的编译元素之前,从编译文件中读取所述切换后的Flutter混合模式的版本和分支;
所述加载模块,具体用于加载与所述切换后的Flutter混合模式的版本和分支对应的编译元素。
8.根据权利要求6所述的装置,其中,
所述加载模块,具体用于从远程仓库加载与所述切换后的Flutter混合模式对应的编译元素。
9.根据权利要求6所述的装置,其中,
所述模式读取模块,具体用于响应于对所述当前代码的开始编译操作,运行所述编译文件,得到所述编译文件中的切换后的Flutter混合模式。
10.根据权利要求6所述的装置,其中,
所述编译文件为脚本。
11.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-5中任一项所述的一种Flutter混合模式的编译方法。
12.一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行权利要求1-5中任一项所述的一种Flutter混合模式的编译方法。
CN202010507203.5A 2020-06-05 2020-06-05 Flutter混合模式的编译方法、装置、设备和介质 Active CN111694564B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010507203.5A CN111694564B (zh) 2020-06-05 2020-06-05 Flutter混合模式的编译方法、装置、设备和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010507203.5A CN111694564B (zh) 2020-06-05 2020-06-05 Flutter混合模式的编译方法、装置、设备和介质

Publications (2)

Publication Number Publication Date
CN111694564A CN111694564A (zh) 2020-09-22
CN111694564B true CN111694564B (zh) 2023-08-04

Family

ID=72479637

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010507203.5A Active CN111694564B (zh) 2020-06-05 2020-06-05 Flutter混合模式的编译方法、装置、设备和介质

Country Status (1)

Country Link
CN (1) CN111694564B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112148272A (zh) * 2020-09-25 2020-12-29 百度在线网络技术(北京)有限公司 工程组件化开发中配置共享的方法、装置、设备及介质
CN112230930A (zh) * 2020-10-22 2021-01-15 贝壳技术有限公司 混合技术栈构建打包的方法和装置及机器可读存储介质
CN112631600A (zh) * 2020-12-24 2021-04-09 上海哔哩哔哩科技有限公司 基于Flutter的软件构建方法和系统
CN113760323A (zh) * 2021-02-10 2021-12-07 北京沃东天骏信息技术有限公司 一种开发应用的方法、装置和系统
CN115129319A (zh) * 2021-03-26 2022-09-30 京东方科技集团股份有限公司 一种编译方法、编译装置、执行方法以及计算机设备
CN113094086B (zh) * 2021-04-13 2024-01-19 贝壳找房(北京)科技有限公司 组件集成方法、装置、计算机可读存储介质及电子设备
CN113342344B (zh) * 2021-04-26 2024-02-27 贝壳找房(北京)科技有限公司 Flutter编译流程介入方法及装置
CN117724726B (zh) * 2024-02-05 2024-05-28 腾讯科技(深圳)有限公司 一种数据处理方法和相关装置

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110083360A (zh) * 2019-04-26 2019-08-02 深圳乐信软件技术有限公司 一种应用程序代码的编译方法、装置、设备及存储介质
CN110286927A (zh) * 2019-06-24 2019-09-27 北京字节跳动网络技术有限公司 Flutter应用的热更新方法、装置及设备
CN110737589A (zh) * 2019-09-10 2020-01-31 北京字节跳动网络技术有限公司 一种自动埋点的方法、装置、介质和电子设备
CN110750288A (zh) * 2019-10-23 2020-02-04 广州华多网络科技有限公司 原生工程配置方法、装置、电子设备及存储介质
CN111008007A (zh) * 2019-11-06 2020-04-14 贝壳技术有限公司 组件开发方法、系统、存储介质及处理器
CN111008009A (zh) * 2019-11-05 2020-04-14 贝壳技术有限公司 基于Flutter的业务组件化方法及系统
CN111078278A (zh) * 2019-12-21 2020-04-28 众能联合数字技术有限公司 支持Flutter及iOS混编工程的自动化打包方法
CN111090422A (zh) * 2019-10-23 2020-05-01 贝壳技术有限公司 一种基于Flutter的资源打包方法、装置和存储介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7446774B1 (en) * 1998-11-09 2008-11-04 Broadcom Corporation Video and graphics system with an integrated system bridge controller
US9116712B2 (en) * 2013-02-28 2015-08-25 Microsoft Technology Licensing, Llc Compile based obfuscation

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110083360A (zh) * 2019-04-26 2019-08-02 深圳乐信软件技术有限公司 一种应用程序代码的编译方法、装置、设备及存储介质
CN110286927A (zh) * 2019-06-24 2019-09-27 北京字节跳动网络技术有限公司 Flutter应用的热更新方法、装置及设备
CN110737589A (zh) * 2019-09-10 2020-01-31 北京字节跳动网络技术有限公司 一种自动埋点的方法、装置、介质和电子设备
CN110750288A (zh) * 2019-10-23 2020-02-04 广州华多网络科技有限公司 原生工程配置方法、装置、电子设备及存储介质
CN111090422A (zh) * 2019-10-23 2020-05-01 贝壳技术有限公司 一种基于Flutter的资源打包方法、装置和存储介质
CN111008009A (zh) * 2019-11-05 2020-04-14 贝壳技术有限公司 基于Flutter的业务组件化方法及系统
CN111008007A (zh) * 2019-11-06 2020-04-14 贝壳技术有限公司 组件开发方法、系统、存储介质及处理器
CN111078278A (zh) * 2019-12-21 2020-04-28 众能联合数字技术有限公司 支持Flutter及iOS混编工程的自动化打包方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Frank Zammetti.Practical Flutter.Apress, Berkeley,2019,第1-36页. *

Also Published As

Publication number Publication date
CN111694564A (zh) 2020-09-22

Similar Documents

Publication Publication Date Title
CN111694564B (zh) Flutter混合模式的编译方法、装置、设备和介质
CN110928529B (zh) 辅助算子开发的方法和系统
CN110750463B (zh) 一种小程序测试方法、装置、系统、设备及介质
US8533691B2 (en) Managing non-common features for program code translation
CN111984476B (zh) 测试方法和装置
CN105573755A (zh) 一种应用Activity渲染时间获取方法和装置
CN108021583B (zh) 页面加载方法及客户端
CN111949272B (zh) 寄宿应用的编译优化方法、装置、电子设备及可读存储介质
US20230229406A1 (en) Page rendering method, apparatus, electronic device, computer-readable storage medium, and computer program product
CN105159738A (zh) 一种热补丁实现方法及系统
CN111124420B (zh) 编译方法、装置、电子设备及可读存储介质
CN111475164B (zh) 组件依赖关系检测方法、装置以及电子设备
CN111338925A (zh) 小程序测试方法及装置、系统、电子设备和存储介质
US20150378742A1 (en) Rule-based activation of behaviors in an extensible software application
CN112506793A (zh) 嵌入式软件单元测试方法、系统、可读介质及电子设备
CN112506854A (zh) 页面模板文件的存储和页面生成方法、装置、设备及介质
US20220300262A1 (en) Method for constructing, running and implementing cross-platform application, terminal, server and system
CN109902003B (zh) 测试脚本的生成方法及装置
You et al. A comparative study of cross-platform mobile application development
CN112130888B (zh) 应用程序更新的方法、装置、设备和计算机存储介质
CN110018831B (zh) 程序处理方法、装置及计算机可读存储介质
CN110851370B (zh) 程序测试方法及装置、存储介质
CN112328225A (zh) 一种页面运行方法及其运行系统
CN113918254B (zh) 语言文本管理方法、装置、存储介质及电子设备
CN111858302B (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