CN112527386A - 应用程序发布方法及装置 - Google Patents
应用程序发布方法及装置 Download PDFInfo
- Publication number
- CN112527386A CN112527386A CN201910883546.9A CN201910883546A CN112527386A CN 112527386 A CN112527386 A CN 112527386A CN 201910883546 A CN201910883546 A CN 201910883546A CN 112527386 A CN112527386 A CN 112527386A
- Authority
- CN
- China
- Prior art keywords
- file
- code
- apk
- annotation information
- xml file
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/72—Code refactoring
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/73—Program documentation
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Library & Information Science (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供一种应用程序发布方法及装置,涉及人工智能(artificial intelligence,AI)技术领域,电子设备接收到用户输入的用于请求分析原始APK代码的请求指令后,根据请求指令分析APK代码,得到注解信息xml文件,并根据xml文件和APK代码,收集xml文件中每个注解对应的代码片段,并对收集到的代码片段进行分类得到注解信息xml文件。之后,根据注解信息xml文件、代码信息xml文件和APK代码,生成多个df工程文件和基础文件,打包该些df工程文件和基础文件,得到AAB文件并发布。该过程中,电子设备自动的对原始的APK代码进行重构,以将原始的APK代码重构成基础部分和动态部分,从而一键生成AAB文件,并将构建出的AAB文件发布至云服务器,用户下载APP时,由云服务器基于AAB文件构建特定的APK文件供用户下载,特定的APK文件体积小、速度快且消耗的流量较少。
Description
技术领域
本申请实施例涉及人工智能(artificial intelligence,AI)技术领域,尤其涉及一种应用程序发布方法及装置。
背景技术
随着技术的飞速发展,各种安卓(Android)应用程序(application,APP)被发布到应用商店(APP store)供用户下载并安装到终端设备上,之后用户利用APP进行购物、娱乐、社交等。
传统的APP发布过程中,研发人员利用安卓软件开发工具包(Android SoftwareDevelopment Kit,Android SDK)编译代码,并且将所有的数据和资源文件打包成一个安卓安装包(Android Package,APK)文件,APK文件实质上是一个zip压缩包,APK文件包含一个APP适用于多种类型终端设备的内容,如语言、屏幕大小、硬件架构等。用户下载时,将整个APK文件下载并安装。显然,终端设备下载的APK文件除了包含本终端设备支持的语言、屏幕大小等,还包含本终端设备不支持的内容,导致终端设备下载的APK文件的体积过大、下载时间过长、流量消耗大。为了避免该弊端,谷歌(Google)推出了安卓APP动态化框架(Android App Bundle,AAB)技术,基于该技术,开发人员在应用商店发布AAB文件,用户通过终端设备下载APP时,应用商店基于AAB文件为用户构建特定的APK文件供用户下载,使得用户无需将整个AAB文件的内容都下载下来,而是仅下载该AAB文件中终端设备支持的内容,如此一来,可以避免终端设备下载传统的APK文件导致的空间消耗、流量消耗和时间消耗等问题。
为构建AAB,需要开发人员对APP的原始的APK代码进行重构,然而,业界并未提出如何重构APK代码以构建AAB的方法。
发明内容
本申请实施例提供一种应用程序发布方法及装置,通过对传统的APK代码进行重构以构建AAB文件,并将构建出的AAB文件发布至云服务器,用户下载APP时,由云服务器基于AAB文件构建特定的APK文件供用户下载,特定的APK文件体积小、下载速度快且消耗的流量较少。
第一方面,本申请实施例提供一种应用程序发布方法,该方法是从电子设备的角度进行说明的,该方法包括:电子设备接收到用户输入的用于请求分析原始APK代码的请求指令后,根据请求指令分析APK代码,得到注解信息xml文件,并根据xml文件和APK代码,收集xml文件中每个注解对应的代码片段,并对收集到的代码片段进行分类得到注解信息xml文件。之后,根据注解信息xml文件、代码信息xml文件和APK代码,生成多个df工程文件和基础文件,打包该些df工程文件和基础文件,得到AAB文件并发布。该过程中,电子设备自动的对原始的APK代码进行重构,以将原始的APK代码重构成基础部分和动态部分,从而一键生成AAB文件,并将构建出的AAB文件发布至云服务器,用户下载APP时,由云服务器基于AAB文件构建特定的APK文件供用户下载,特定的APK文件体积小、速度快且消耗的流量较少。
一种可行的设计中,电子设备根据所述请求指令,分析所述APK代码,以得到注解信息xml文件时,根据所述请求指令,按照文件级别扫描应用文本,所述APP对应的APK代码存储在多个应用文本中,识别所述应用文本中符合预设规则的字符串,根据所述字符串、所述字符串所在的应用文本的名称、所述字符串在所述应用文本中的行号生成所述注解信息,根据所述注解信息生成所述注解信息xml文件。采用该种方案,实现注解分析器自动分析APK代码中的注解的目的。
一种可行的设计中,电子设备根据所述注解信息生成所述注解信息xml文件时,持久化处理所述注解信息,以得所述注解信息xml文件。采用该种方案,实现注解分析器自动分析APK代码中的注解的目的。
一种可行的设计中,电子设备根据所述注解信息生成JAR包,所述JAR包用于使得所述注解信息被正确编译。采用该种方案,实现自动编译APK代码中的注解的目的。
一种可行的设计中,所述多个注解中的任意一个注解对应的代码片段包含下述维度中至少一个的代码片段:类、成员、函数。采用该种方案,实现代码收集器自动收集代码片段的目的。
一种可行的设计中,所述电子设备根据所述注解信息xml文件、所述代码信息xml文件和所述APK代码,生成所述多个df工程文件和一个基础文件之前,还针对所述多类代码片段中的目标类代码片段,按照预设优先顺序生成子df工程文件,所述预设优先顺序依次为动态特性、包、类、内部类、函数或接口、成员,拼接所述子df工程文件,得到所述目标类代码片段的df工程文件,所述目标类代码片段是所述多类代码片段中的任意一类代码片段。采用该种方案,实现代码收集器自动收集代码片段的目的。
一种可行的设计中,电子设备根据所述注解信息xml文件、所述代码信息xml文件和所述APK代码,生成所述多个df工程文件和一个基础文件之后,还生成所述多个df工程文件中每个df工程文件对应的安卓应用配置文件,根据所述多个df工程文件、所述多个df工程文件中每个df工程文件对应的安卓应用配置文件以及所述基础文件,生成所述APP的编译文件。采用该种方案,df生成器的作用是将之前收集的代码片段生成为可编译可开发的工程文件,避免人工的重复性工作。
一种可行的设计中,电子设备根据所述注解信息xml文件、所述代码信息xml文件和所述APK代码,生成所述多个df工程文件和一个基础文件之后,还对所述df工程文件插入标识符,所述标识符用于指示所述df工程文件是利用所述APK代码自动生成的。
第二方面,本申请实施例提供一种应用程序发布装置,包括:
接收单元,用于接收用户输入的请求指令,所述请求指令用于请求分析应用程序APP对应的安卓安装包APK代码中的注解;
处理单元,用于根据所述请求指令,分析所述APK代码,以得到注解信息xml文件,所述注解信息xml文件包含多个注解,从所述APK代码中收集所述多个注解中每个注解对应的代码片段,以得到代码信息xml文件,所述代码信息xml文件包含多类代码片段,根据所述注解信息xml文件、所述代码信息xml文件和所述APK代码,生成所述多个df工程文件和一个基础文件,所述多个df工程文件中的不同df工程文件对应所述多类代码片段中不同类的代码片段,打包所述多个df工程文件和一个基础文件,得到所述APP对应的ABB文件;
发送单元,用于向服务器发送所述ABB文件,以发布所述APP。
一种可行的设计中,所述处理单元,用于根据所述请求指令,按照文件级别扫描应用文本,所述APP对应的APK代码存储在多个应用文本中,识别所述应用文本中符合预设规则的字符串,根据所述字符串、所述字符串所在的应用文本的名称、所述字符串在所述应用文本中的行号生成所述注解信息,根据所述注解信息生成所述注解信息xml文件。
一种可行的设计中,所述处理单元,用于持久化处理所述注解信息,以得所述注解信息xml文件。
一种可行的设计中,所述处理单元,还用于根据所述注解信息生成JAR包,所述JAR包用于使得所述注解信息被正确编译。
一种可行的设计中,所述多个注解中的任意一个注解对应的代码片段包含下述维度中至少一个的代码片段:类、成员、函数。
一种可行的设计中,所述处理单元,在根据所述注解信息xml文件、所述代码信息xml文件和所述APK代码,生成所述多个df工程文件和一个基础文件之前,还用于针对所述多类代码片段中的目标类代码片段,按照预设优先顺序生成子df工程文件,所述预设优先顺序依次为动态特性、包、类、内部类、函数或接口、成员;拼接所述子df工程文件,得到所述目标类代码片段的df工程文件,所述目标类代码片段是所述多类代码片段中的任意一类代码片段。
一种可行的设计中,所述处理单元,根据所述注解信息xml文件、所述代码信息xml文件和所述APK代码,生成所述多个df工程文件和一个基础文件之后,还用于生成所述多个df工程文件中每个df工程文件对应的安卓应用配置文件;根据所述多个df工程文件、所述多个df工程文件中每个df工程文件对应的安卓应用配置文件以及所述基础文件,生成所述APP的编译文件。
一种可行的设计中,所述处理单元,根据所述注解信息xml文件、所述代码信息xml文件和所述APK代码,生成所述多个df工程文件和一个基础文件之后,还用于对所述df工程文件插入标识符,所述标识符用于指示所述df工程文件是利用所述APK代码自动生成的。
第三方面,本申请实施例提供一种电子设备,包括:处理器、存储器,以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时执行如上第一方面或第一方面的各种可能的实现方式中的方法。
第四方面,本申请实施例提供一种包含指令的计算机程序产品,当其在电子设备上运行时,使得电子设备计算机执行上述第一方面或第一方面的各种可能的实现方式中的方法。
第五方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在电子设备上运行时,使得电子设备执行上述第一方面或第一方面的各种可能的实现方式中的方法。
第六方面,本申请实施例提供一种芯片系统,该芯片系统包括处理器,还可以包括存储器,用于实现上述方法中电子设备的功能。该芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。
本申请实施例提供的应用程序发布方法及装置,电子设备接收到用户输入的用于请求分析原始APK代码的请求指令后,根据请求指令分析APK代码,得到注解信息xml文件,并根据xml文件和APK代码,收集xml文件中每个注解对应的代码片段,并对收集到的代码片段进行分类得到注解信息xml文件。之后,根据注解信息xml文件、代码信息xml文件和APK代码,生成多个df工程文件和基础文件,打包该些df工程文件和基础文件,得到AAB文件并发布。该过程中,电子设备自动的对原始的APK代码进行重构,以将原始的APK代码重构成基础部分和动态部分,从而一键生成AAB文件,并将构建出的AAB文件发布至云服务器,用户下载APP时,由云服务器基于AAB文件构建特定的APK文件供用户下载,特定的APK文件体积小、速度快且消耗的流量较少。
附图说明
图1是基于AAB的下载示意图;
图2是本申请应用程序发布方法适用的网络架构示意图;
图3是本申请实施例提供的应用程序发布方法的流程图;
图4是本申请实施例提供的应用程序发布方法中生成的AAB文件的示意图;
图5是本申请实施例提供的应用程序发布方法中各插件的示意图;
图6是本申请实施例提供的应用程序发布方法中各插件的工作流程图;
图7是本申请实施例提供的应用程序发布方法中各插件的关系示意图;
图8是本申请实施例提供的应用程序发布方法中注解分析器的工作流程图;
图9是本申请实施例提供的应用程序发布方法中注解分析器的工作流程图;
图10是本申请实施例提供的应用程序发布方法中df生成器的工作流程图;
图11是本申请实施例提供的应用程序发布方法中注解分析器;
图12为本发明实施例提供的一种应用程序发布装置的结构示意图;
图13是本申请实施例提供的一种电子设备的结构示意图;
图14为本申请实施例提供的一种电子设备的硬件结构示意图。
具体实施方式
谷歌推出安卓APP动态化框架(Android App Bundle,AAB)技术能够保证安卓APP在发布时具有新的形态,即开发人员发布AAB文件,AAB文件中定义了基础(base)apk、动态特征(dynamic feature,DF)等概念。该技术中,开发人员开发出AAB文件,将该AAB文件发布至部署在云服务器中的应用商店。普通用户下载APP时,云服务器根据用户的终端设备的硬件版本、系统软件版本等,为用户构建特定的APK文件供用户下载。该特定的APK文件不同于传统的APK文件,该特定的APK文件仅包含终端设备运行APP时所需要的内容。示例性的,可参见图1,图1是基于AAB的下载示意图。
请参照图1,左边为开发人员发布至应用商店的AAB文件,该AAB文件包含基础(base)部分(如图中斜线填充所示)、动态部分和一个用于描述AAB文件的元数据(metadata),如图中横向填充部分所示,动态部分包括多个DF。右边为用户下载的APK文件的示意图,APK1为用户仅需要浏览(browse)功能时,云服务器为构建的APK文件;APK2为用户为提供方时,云服务器构建的APK文件;APK3为用户为买方时,云服务器构建的APK文件;APK4为用户为卖方时,云服务器构建的APK文件。每个APK文件下第一列为该APK文件支持的语系,第二列为该APK文件支持的架构;第三列为该APK文件支持的屏幕分辨率。以APK1为例,其支持的语系包括英文(en)、法语(fr)、中文(zh)、德文(de),APK1支持的硬件架构为x86、arm以及arm64;APK1支持的屏幕分辨率包括hdpi(即480×800)和xhdpi(即720×1280)。当用户仅需要浏览功能时,云服务器构建出APK1供用户下载;当用户为提供方时,需要下载APK1和APK2;当用户为买方时,需要下载APK1和APK3;当用户为卖方时,需要下载APK1和APK4。
根据图1可知:一个AAB包括基础部分和动态部分。AAB技术需要的实质是开发人员能够自行对原始的APK代码进行重构,将原始APK代码的特性拆分为基础部分和动态部分,重构过程中需要用接口表征依赖关系,且需要给各动态部分建立df工程文件,随后使用谷歌提供的编译工具和打包工具进行发布,将AAB文件发布至云服务器。用户下载过程中,云服务器进行二次打包和编译后得到特定的APK文件供用户下载。
上述重构过程中,需要将原始的APK代码重构为基础部分和DF部分,DF部分包含多个DF。然而,业界并未提出如何重构APK代码,以将APK代码重构为基础部分和DF部分,进而根据基础部分和DF部分构建AAB文件的方法。
有鉴于此,本申请实施例提供一种应用程序发布方法,通过对传统的APK代码进行重构以构建AAB文件,并将构建出的AAB文件发布至云服务器,用户下载APP时,由云服务器基于AAB文件构建特定的APK文件供用户下载,特定的APK文件体积小、速度快且消耗的流量较少。
图2是本申请应用程序发布方法适用的网络架构示意图。请参照图2,该网络架构包括电子设备、云服务器和终端设备,电子设备和终端设备均与云服务器建立网络连接,电子设备是开发人员用来开发AAB的设备,可以是开发人员的台式机、笔记本等,其上运行AAB开发环境,开发人员在该AAB开发环境中,对原始的APK代码进行重构,得到基础部分和动态部分的df工程文件,打包基础部分和动态部分,得到AAB文件,并将该AAB文件上传至云服务器。云服务器接收到用户通过终端设备发送的下载请求后,根据用户的需求以及用户的终端设备硬件版本、操作系统版本等为用户构建特定的APK文件供用户下载。
下面,基于上述图2所示网络架构,对本申请实施例所述的应用程序发布方法进行详细说明。示例性的,可参见图3。
图3是本申请实施例提供的应用程序发布方法的流程图,本实施例是从电子设备的角度进行说明的,本实施例包括:
101、接收用户输入的请求指令,所述请求指令用于请求分析应用程序APP对应的安卓安装包APK代码中的注解。
示例性的,电子设备的屏幕上显示开发环境,该开发环境中加载原始的APK代码,开发人员在该APK代码中添加注解。开发人员点击开发环境中的按钮,触发电子设备分析APP对应的APK代码中的注解。其中,注解为Java代码中在类、成员变量、函数接口等上添加的标识符,例如以@开头,注解的内容是否识别需要编译器的支持。
102、根据所述请求指令,分析所述APK代码,以得到注解信息xml文件,所述注解信息xml文件包含多个注解。
示例性的,开发环境中具有多个集成开发环境(integrated developmentenvironment,IDE)插件,或者称之为编译器插件,其中一个插件可以用于对APK代码进行分析,以得到注解信息xml文件,该用于得到注解信息xml文件的插件可称之为注解分析器。
103、从所述APK代码中收集所述多个注解中每个注解对应的代码片段,以得到代码信息xml文件,所述代码信息xml文件包含多类代码片段。
示例性的,在得到注解信息xml文件后,开发环境中的另外一个插件,以下称之为代码收集器对注解信息xml文件包含的多个注解中的每个注解,搜集该注解对应的代码片段,代码片段也称之为Java文件,并对搜集到的代码片段进行分类,将同一类的代码片段放置在同一个目录下,从而得到代码信息xml文件。
104、根据所述注解信息xml文件、所述代码信息xml文件和所述APK代码,生成所述多个df工程文件和一个基础文件,所述多个df工程文件中的不同df工程文件对应所述多类代码片段中不同类的代码片段。
示例性的,在得到代码信息xml文件后,开发环境中的又一个插件,以下称之为df生成器,该df生成器根据注解信息xml文件、代码信息xml文件和原始的APK代码,生成多类代码片段中每一类代码片段对应的df工程文件和一个基础文件。
105、打包所述多个df工程文件和一个基础文件,得到所述APP对应的ABB文件。
示例性的,电子设备对df工程文件和一个基础文件进行打包,将其打包成一个后缀为“.AAB”的文件。图4是本申请实施例提供的应用程序发布方法中生成的AAB文件的示意图。
请参照图4,开发人员在原始的APK代码基础上在类、接口、成员上增加约定的注解,经过上述步骤101~105的处理后将这些注解收集并规约起来,并将其自动配置为AAB文件,从而实现一键生成AAB文件的目的。以AAB文件包含一个基本模块(base moudle)和两个df模块为例,图中点划线所示为AAB文件,该AAB文件包含一个元数据文件目录(BUNDLE-METADATA\)、配置文件(BundleConfig.pb)、基本模块(base moudle)、动态特征1(dynamicfeature1,df1)、动态特征2(dynamic feature2,df2)等。基本模块包含安卓应用配置文件(manifest)、协议缓冲区(.pb)文件、类、根、资源、语系、框架等,资产(assets)包含结构(textures)、声音(sounds)、材料(materials)、形状(shaders)、签名(license.txt)等,库(lib)不同架构的库,如x86/native-lib.so、x86_64等。
106、向服务器发送所述ABB文件,以发布所述APP。
示例性的,电子设备与服务器建立网络连接,并将打包好的AAB文件发布至部署在服务器上的应用商店。之后,用户下载APP时,无需将原始的APK文件都下载先来,而是由服务器根据终端设备的硬件特性、需求、操作系统版本等,基于AAB文件为用户构建特定的APK文件供用户下载。
本申请实施例提供的应用程序下载方法,电子设备接收到用户输入的用于请求分析原始APK代码的请求指令后,根据请求指令分析APK代码,得到注解信息xml文件,并根据xml文件和APK代码,收集xml文件中每个注解对应的代码片段,并对收集到的代码片段进行分类得到注解信息xml文件。之后,根据注解信息xml文件、代码信息xml文件和APK代码,生成多个df工程文件和基础文件,打包该些df工程文件和基础文件,得到AAB文件并发布。该过程中,电子设备自动的对原始的APK代码进行重构,以将原始的APK代码重构成基础部分和动态部分,从而一键生成AAB文件,并将构建出的AAB文件发布至云服务器,用户下载APP时,由云服务器基于AAB文件构建特定的APK文件供用户下载,特定的APK文件体积小、速度快且消耗的流量较少。
图5是本申请实施例提供的应用程序发布方法中各插件的示意图。请参照图5,本实施例中的插件例如为注解分析(annotation)器、代码收集(code collector)、df生成器(df generator)。其中,注解分析器执行上述图3中的步骤102,用于分析开发人员在APK代码中增加的注解,并将注解信息作为df工程的唯一凭据;代码收集器用于执行步骤103,通过将注解相关的类、成员、接口等元素按照代码段维度全部整合,并根据注解的不同,分类为不同的df子工程;df生成器用于执行步骤104,分析并收集全部的df代码后,将所有的代码通过df生成器自动生成可以编译、可以调试的df子工程,并自动添加依赖。例如,假设一个AAB文件的动态部分包含dfA、dfB、dfC,则注解分析器对APK代码进行分析,得到注解信息xml文件,对于注解信息xml文件中的任意一个注解,代码收集器收集该注解对应的代码片段,将同类代码片段放置在同一个目录下,同类代码即为属于同一个df的代码片段,如dfA、dfB或dfC;df生成器为每个df生成对应的df工程文件,即图中的dfA工程、dfB工程和dfC工作。最后,df生成器打包多个df工程文件和一个基础文件,得到所述APP对应的ABB文件。
图6是本申请实施例提供的应用程序发布方法中各插件的工作流程图。请参照图6,一个标准的AAB文件包含一个base部分和多个df,本申请实施例中,最终目的是将一个原始的APK代码分解为一个base和多个df,并自动梳理各个模块之间的依赖关系。注解分析器、代码收集器和df生成器均会产生一个xml文件,每个xml文件记录了本步骤所产生的信息。例如,注解分析器生成注解信息xml文件,代码收集器生成代码信息xml文件,df生成器利用注解信息xml文件和代码信息xml文件和原始的APK代码,最终生成一个编译文件(build.gradle)以及各个工程的安卓应用配置文件(Android manifest.xml)文件。
图7是本申请实施例提供的应用程序发布方法中各插件的关系示意图。请参照图7,注解分析器对APK代码的注解进行自动分析,得到的注解信息包括注解A、注解B和注解C,代码收集器根据注解A收集的代码片段统称为代码A,代码收集器根据注解B收集的代码片段统称为代码B,代码收集器根据注解C收集的代码片段统称为代码C;df生成器生成的df工程包括dfA、dfB和dfC。
下面,在上述图5~图7的基础上,对本申请实施例中注解分析器、代码收集器以及df生成器的工作流程分别进行详细说明。
首先,注解分析器。
图8是本申请实施例提供的应用程序发布方法中注解分析器的工作流程图。本实施例包括:
201、根据所述请求指令,按照文件级别扫描应用文本,所述APP对应的APK代码存储在多个应用文本中。
202、按照正则表达式收集注解信息。
示例性的,注解分析器会将开发人员按照df维度新增的注解按照文件级别扫描,识别出所有符合规则的字符串以收集注解,得到注解信息。其中,注解为开发人员在APK代码中按照df维度,在类、成员变量、函数接口之上添加的标识符,如以@开头的字符串。
203、判断字符串是否满足收集条件,若字符串符合预设的规则,则执行步骤204;若字符串不符合预设的规则,则执行步骤201。
示例性的,每次扫描到字符串时,注解分析器按照预设的正则表达式判断该字符串是否符合规则,若字符串满足正则表达式,且出现的次数多于N次(N为识别灵敏度),则将该注解识别为有效注解并执行步骤204;否则,说明识别出的字符串不是注解,返回步骤201。
204、获取注解信息。
示例性的,注解分析器收集到的注解信息,不仅仅是字符串本身,而是必须添加当前的应用文件名称、注解行号等相关信息。具体实现时,注解分析器可以维护一个注解列表,每次识别到注解后,将该注解增加到注解列表中,并维护当前文件名和行号。
205、持久化处理所述注解信息,以得所述注解信息xml文件。
示例性的,注解分析器通过识别注解,将识别出的注解管理起来,将其作为下一个阶段的输入。此时,注解分析器会将收集到的注解导出为一个xml文件,即注解信息xml文件。
206、注解分析器根据注解信息生成JAR包。
示例性的,注解分析器将所有合法的注解按照固定的格式生成JAR包,JAR包用于帮助编译器正确编译注解信息。其中,JAR包也可以称之为注解JAR。采用该种方案,实现自动编译APK代码中的注解的目的。
207、将JAR包自动添加到df工程依赖中。
本实施例中,实现注解分析器自动分析APK代码中的注解的目的。
其次,代码收集器。
本申请实施例中,代码收集器的主要工作是将已经分析出的各个注解的代码片段收集起来,根据df维度,将其以可以分析的代码片段(也称之为Java代码)进行分割管理。
图9是本申请实施例提供的应用程序发布方法中注解分析器的工作流程图。本实施例包括:
301、读取注解信息xml文件。
302、遍历注解信息xml文件,根据文件名扫描。
303、使用语法解析器获取指定代码段内容。
示例性的,语法解析器例如为JavaParser,通过JavaParser能够将指定的代码解析成一段可保存、可拼接的代码片段。这里的维度可以是代码片段:类、成员、函数等。如此一来,能够利用上述的注解分析器得到的注解信息xml文件中的每个注解对应的代码片段。注释处理工具(annotation processing tool)静态注解方式,本质上是在预编译期,自动识别加油自定义注解标签的Java文件,然后通过JavaParser直接修改代码源文件。
304、将代码片段保存到指定的配置文件。
示例性的,代码收集器获取代码片段信息,并读取注解信息xml文件,将代码片段保存到指定配置文件。
305、按照不同注解维度分类df文件。
示例性的,当收集了所有的代码片段后,还需要根据注解分析器获得的df信息,将这些代码片段进行分类保存,并持久化为具体文件。
本实施例中,实现代码收集器自动收集代码片段的目的。
最后,df生成器。
本申请实施例中,df生成器的作用是将之前收集的代码片段生成为可编译可开发的df工程文件,避免人工的重复性工作。
图10是本申请实施例提供的应用程序发布方法中df生成器的工作流程图。本实施例包括:
401、代码收集器向df生成器输入分类好的代码片段。
402、df生成器读取分类好的代码片段。
403、df生成器按照df的维度分类。
404、df生成器按照包的维度分类。
405、df生成器按照类的维度分类。
406、df生成器生成df工程文件。
示例性的,上述步骤402~406中,对于多类代码片段中的每一类代码片段,以下称之为目标类代码片段,df生成器按照预设优先顺序生成子df工程文件,其中,预设优先顺序依次为动态特性、包(package)、类(class)、内部类(inner class)、函数或接口(function/interface)、成员(member)。之后,df生成器拼接该些子df工程文件,得到目标类代码片段的df工程文件,其中,目标类代码片段是多类代码片段中的任意一类代码片段。
采用该种方案,实现生成df工程文件的目的。
407、df生成器生成所述多个df工程文件中每个df工程文件对应的安卓应用配置文件。
示例性的,当代码准备完毕之后,需要生成各个df工程文件的安卓应用配置文件,该文件也称之为AndroidManifest配置文件,该AndroidManifest配置文件包含了应用的包名、声明的组件信息、权限等。
408、df生成器根据所述多个df工程文件、所述多个df工程文件中每个df工程文件对应的安卓应用配置文件以及所述基础文件,生成所述APP的编译文件。
示例性的,df生成器还需要生成编译文件,该编译文件也可以称之为(build.gradle)。build.gradle负责df的构建、依赖等关系。
409、df生成器自动添加依赖。
410、df生成器自动添加工程。
示例性的,上述步骤409和410中,df生成器还需要结合APK代码,删除原有代码片段,添加工程,添加工程配置,推导依赖关系,最终完成df的自动化工作。
本实施例中,实现df生成器根据分类好的df片段生成df工程文件的目的。
图11是本申请实施例提供的应用程序发布方法中注解分析器、代码收集器和df生成器的正确工作流程示意图。请参照图11,本实施例中,注解分析器根据APK代码获得注解信息xml文件,代码收集器根据APK代码以及注解信息xml文件获得代码信息xml文件,gd生成器根据APK代码、注解信息xml文件、代码信息xml文件生成df工程文件,如dfA、dfB和dfC。之后,对基础文件、dfA、dfB和dfC进行打包,生成AAB文件,该AAB文件包含一个基础部分和动态部分,动态部分包含dfA、dfB和dfC。
上述实施例中,根据所述注解信息xml文件、所述代码信息xml文件和所述APK代码,生成所述多个df工程文件和一个基础文件之后,还对所述df工程文件插入标识符,所述标识符用于指示所述df工程文件是利用所述APK代码自动生成的。
示例性的,在最后生成的代码二进制文件中,插入固定的标识。具体实现时,在df生成器的最后,会在df工程文件中插入指定的符号,例如,在代码的类的前缀注释中,增加指定的注释代码,通过这点,表面当前df工程文件是采用本申请实施例所述的方法生成的代码。
下述为本发明装置实施例,可以用于执行本发明方法实施例。对于本发明装置实施例中未披露的细节,请参照本发明方法实施例。
图12为本发明实施例提供的一种应用程序发布装置的结构示意图。该应用程序发布装置100可以通过软件和/或硬件的方式实现。如图12所示,该应用程序发布装置100包括:
接收单元11,用于接收用户输入的请求指令,所述请求指令用于请求分析应用程序APP对应的安卓安装包APK代码中的注解;
处理单元12,用于根据所述请求指令,分析所述APK代码,以得到注解信息xml文件,所述注解信息xml文件包含多个注解,从所述APK代码中收集所述多个注解中每个注解对应的代码片段,以得到代码信息xml文件,所述代码信息xml文件包含多类代码片段,根据所述注解信息xml文件、所述代码信息xml文件和所述APK代码,生成所述多个df工程文件和一个基础文件,所述多个df工程文件中的不同df工程文件对应所述多类代码片段中不同类的代码片段,打包所述多个df工程文件和一个基础文件,得到所述APP对应的ABB文件;
发送单元13,用于向服务器发送所述ABB文件,以发布所述APP。
一种可行的设计中,所述处理单元12,用于根据所述请求指令,按照文件级别扫描应用文本,所述APP对应的APK代码存储在多个应用文本中,识别所述应用文本中符合预设规则的字符串,根据所述字符串、所述字符串所在的应用文本的名称、所述字符串在所述应用文本中的行号生成所述注解信息,根据所述注解信息生成所述注解信息xml文件。
一种可行的设计中,所述处理单元12,用于持久化处理所述注解信息,以得所述注解信息xml文件。
一种可行的设计中,所述处理单元12,还用于根据所述注解信息生成JAR包,所述JAR包用于使得所述注解信息被正确编译。
一种可行的设计中,所述多个注解中的任意一个注解对应的代码片段包含下述维度中至少一个的代码片段:类、成员、函数。
一种可行的设计中,所述处理单元12,在根据所述注解信息xml文件、所述代码信息xml文件和所述APK代码,生成所述多个df工程文件和一个基础文件之前,还用于针对所述多类代码片段中的目标类代码片段,按照预设优先顺序生成子df工程文件,所述预设优先顺序依次为动态特性、包、类、内部类、函数或接口、成员;拼接所述子df工程文件,得到所述目标类代码片段的df工程文件,所述目标类代码片段是所述多类代码片段中的任意一类代码片段。
一种可行的设计中,所述处理单元12,根据所述注解信息xml文件、所述代码信息xml文件和所述APK代码,生成所述多个df工程文件和一个基础文件之后,还用于生成所述多个df工程文件中每个df工程文件对应的安卓应用配置文件;根据所述多个df工程文件、所述多个df工程文件中每个df工程文件对应的安卓应用配置文件以及所述基础文件,生成所述APP的编译文件。
一种可行的设计中,所述处理单元12,根据所述注解信息xml文件、所述代码信息xml文件和所述APK代码,生成所述多个df工程文件和一个基础文件之后,还用于对所述df工程文件插入标识符,所述标识符用于指示所述df工程文件是利用所述APK代码自动生成的。
本发明实施例提供的应用程序发布装置,可以执行上述实施例中电子设备的动作,其实现原理和技术效果类似,在此不再赘述。
需要说明的是,应理解以上接收单元实际实现时可以是接收器,发送单元实际实现时可以是发送器,处理单元可以以软件通过处理元件调用的形式实现;也可以以硬件的形式实现。例如,处理单元可以为单独设立的处理元件,也可以集成在上述装置的某一个芯片中实现,此外,也可以以程序代码的形式存储于上述装置的存储器中,由上述装置的某一个处理元件调用并执行以上处理单元的功能。此外这些单元全部或部分可以集成在一起,也可以独立实现。这里所述的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个单元可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
例如,以上这些单元可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个专用集成电路(application specific integrated circuit,ASIC),或,一个或多个微处理器(digital signal processor,DSP),或,一个或者多个现场可编程门阵列(field programmable gate array,FPGA)等。再如,当以上某个单元通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(centralprocessing unit,CPU)或其它可以调用程序代码的处理器。再如,这些单元可以集成在一起,以片上系统(system-on-a-chip,SOC)的形式实现。
图13是本申请实施例提供的一种电子设备的结构示意图,如图13所示,该电子设备200包括:
处理器21和存储器22;
所述存储器22存储计算机执行指令;
所述处理器21执行所述存储器22存储的计算机执行指令,使得所述处理器21执行如上电子设备对应的应用程序发布方法。
处理器21的具体实现过程可参见上述方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。
可选地,该电子设备200还包括通信接口23。其中,处理器21、存储器22以及通信接口23可以通过总线24连接。
本发明实施例还提供一种存储介质,所述存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如上电子设备执行的应用程序发布方法。
本发明实施例还提供一种计算机程序产品,当所述计算机程序产品在电子设备上运行时,用于实现电子设备执行的应用程序发布方法。
图14为本申请实施例提供的一种电子设备的硬件结构示意图。如图14所示,电子设备300包括但不限于:射频单元31、网络模块32、音频输出单元33、输入单元34、传感器35、显示单元36、用户输入单元37、接口单元38、存储器39、处理器30等部件。本领域技术人员可以理解,图14中示出的电子设备结构并不构成对电子设备的限定,电子设备300可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。在本申请实施例中,电子设备包括但不限于手机、平板电脑、掌上电脑等。
其中,用户输入单元37,用于接收用户的输入;显示单元36,用于响应于用户输入单元37接收的输入,根据输入显示内容。
应理解的是,本申请实施例中,射频单元31可用于收发信息或通话过程中,信号的接收和发送,具体的,将来自主基站或辅基站的下行数据接收后,给处理器30处理;另外,将上行的数据发送给主基站或辅基站。通常,射频单元31包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器、双工器等。此外,射频单元31还可以通过无线通信系统与网络和其他设备通信。
电子设备300通过网络模块32为用户提供了无线的宽带互联网访问,如帮助用户收发电子邮件、浏览网页和访问流式媒体等。
音频输出单元33可以将射频单元31或网络模块32接收的或者在存储器39中存储的音频数据转换成音频信号并且输出为声音。而且,音频输出单元33还可以提供与电子设备300执行的特定功能相关的音频输出(例如,呼叫信号接收声音、消息接收声音等)。音频输出单元33包括扬声器、蜂鸣器以及受话器等。
输入单元34用于接收音频或视频信号。输入单元34可以包括图形处理器(Graphics Processing Unit,GPU)341和麦克风342,图形处理器341用于对摄像头等捕捉的图片或视频的图像数据进行处理。处理后的图像帧可以显示在显示单元36上。经图形处理器341处理后的图像帧可以存储在存储器39(或其它存储介质)中或者经由射频单元31或网络模块32进行发送。麦克风342可以接收声音,并且能够将这样的声音处理为音频数据。处理后的音频数据可以在电话通话模式的情况下转换为可经由射频单元31发送到移动通信基站的格式输出。
电子设备300还包括至少一种传感器35,比如光传感器、运动传感器以及其他传感器。具体地,光传感器包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板361的亮度,接近传感器可在电子设备300移动到耳边时,关闭显示面板361和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别电子设备姿态(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;传感器35还可以包括指纹传感器、压力传感器、虹膜传感器、分子传感器、陀螺仪、气压计、湿度计、温度计、红外线传感器等,在此不再赘述。
显示单元36用于显示由用户输入的信息或提供给用户的信息。显示单元36可包括显示面板361,可以采用液晶显示器(Liquid Crystal Display,LCD)、有机发光二极管(Organic Light-Emitting Diode,OLED)等形式来配置显示面板361。
用户输入单元37可用于接收输入的数字或字符信息,以及产生与电子设备的用户设置以及功能控制有关的键信号输入。具体地,用户输入单元37包括触控面板371以及其他输入设备372。触控面板371,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板371上或在触控面板371附近的操作)。触控面板371可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器30,接收处理器30发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板371。除了触控面板371,用户输入单元37还可以包括其他输入设备372。具体地,其他输入设备372可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆,在此不再赘述。
进一步的,触控面板371可覆盖在显示面板361上,当触控面板371检测到在其上或附近的触摸操作后,传送给处理器30以确定触摸事件的类型,随后处理器30根据触摸事件的类型在显示面板361上提供相应的视觉输出。虽然在图14中,触控面板371与显示面板361是作为两个独立的部件来实现电子设备的输入和输出功能,但是在某些实施例中,可以将触控面板371与显示面板361集成而实现电子设备的输入和输出功能,具体此处不做限定。
接口单元38为外部装置与电子设备300连接的接口。例如,外部装置可以包括有线或无线头戴式耳机端口、外部电源(或电池充电器)端口、有线或无线数据端口、存储卡端口、用于连接具有识别模块的装置的端口、音频输入/输出(I/O)端口、视频I/O端口、耳机端口等等。接口单元38可以用于接收来自外部装置的输入(例如,数据信息、电力等等)并且将接收到的输入传输到电子设备300内的一个或多个元件或者可以用于在电子设备300和外部装置之间传输数据。
存储器39可用于存储软件程序以及各种数据。存储器39可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器39可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
处理器30是电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器39内的软件程序和/或模块,以及调用存储在存储器39内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进行整体监控。处理器30可包括一个或多个处理单元;可选的,处理器30可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器30中。
请参照图14,本申请实施例中,存储器39中存储计算机程序,其中,所述处理器30运行所述计算机程序,以使得所述电子设备执行上述的应用程序发布方法
在本申请实施例中,处理器可以是通用处理器、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
在本申请实施例中,存储器可以是非易失性存储器,比如硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD)等,还可以是易失性存储器(volatilememory),例如随机存取存储器(random-access memory,RAM)。存储器是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本申请实施例中的存储器还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
本申请各实施例提供的方法中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、网络设备、用户设备或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机可以存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,数字视频光盘(digital video disc,DVD))、或者半导体介质(例如,SSD)等。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
本文中的术语“多个”是指两个或两个以上。本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系;在公式中,字符“/”,表示前后关联对象是一种“相除”的关系。
可以理解的是,在本申请的实施例中涉及的各种数字编号仅为描述方便进行的区分,并不用来限制本申请的实施例的范围。
可以理解的是,在本申请的实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请的实施例的实施过程构成任何限定。
Claims (18)
1.一种应用程序发布方法,其特征在于,包括:
接收用户输入的请求指令,所述请求指令用于请求分析应用程序APP对应的安卓安装包APK代码中的注解;
根据所述请求指令,分析所述APK代码,以得到注解信息xml文件,所述注解信息xml文件包含多个注解;
从所述APK代码中收集所述多个注解中每个注解对应的代码片段,以得到代码信息xml文件,所述代码信息xml文件包含多类代码片段;
根据所述注解信息xml文件、所述代码信息xml文件和所述APK代码,生成所述多个df工程文件和一个基础文件,所述多个df工程文件中的不同df工程文件对应所述多类代码片段中不同类的代码片段;
打包所述多个df工程文件和一个基础文件,得到所述APP对应的ABB文件;
向服务器发送所述ABB文件,以发布所述APP。
2.根据权利要求1所述的方法,其特征在于,所述根据所述请求指令,分析所述APK代码,以得到注解信息xml文件,包括:
根据所述请求指令,按照文件级别扫描应用文本,所述APP对应的APK代码存储在多个应用文本中;
识别所述应用文本中符合预设规则的字符串;
根据所述字符串、所述字符串所在的应用文本的名称、所述字符串在所述应用文本中的行号生成所述注解信息;
根据所述注解信息生成所述注解信息xml文件。
3.根据权利要求2所述的方法,其特征在于,所述根据所述注解信息生成所述注解信息xml文件,包括:
持久化处理所述注解信息,以得所述注解信息xml文件。
4.根据权利要求2或3所述的方法,其特征在于,还包括:
根据所述注解信息生成JAR包,所述JAR包用于使得所述注解信息被正确编译。
5.根据权利要求1~4任一项所述的方法,其特征在于,所述多个注解中的任意一个注解对应的代码片段包含下述维度中至少一个的代码片段:类、成员、函数。
6.根据权利要求1~5任一项所述的方法,其特征在于,所述根据所述注解信息xml文件、所述代码信息xml文件和所述APK代码,生成所述多个df工程文件和一个基础文件之前,还包括:
针对所述多类代码片段中的目标类代码片段,按照预设优先顺序生成子df工程文件,所述预设优先顺序依次为动态特性、包、类、内部类、函数或接口、成员;
拼接所述子df工程文件,得到所述目标类代码片段的df工程文件,所述目标类代码片段是所述多类代码片段中的任意一类代码片段。
7.根据权利要求1~6任一项所述的方法,其特征在于,所述根据所述注解信息xml文件、所述代码信息xml文件和所述APK代码,生成所述多个df工程文件和一个基础文件之后,还包括:
生成所述多个df工程文件中每个df工程文件对应的安卓应用配置文件;
根据所述多个df工程文件、所述多个df工程文件中每个df工程文件对应的安卓应用配置文件以及所述基础文件,生成所述APP的编译文件。
8.根据权利要求1~7任一项所述的方法,其特征在于,所述根据所述注解信息xml文件、所述代码信息xml文件和所述APK代码,生成所述多个df工程文件和一个基础文件之后,还包括:
对所述df工程文件插入标识符,所述标识符用于指示所述df工程文件是利用所述APK代码自动生成的。
9.一种电子设备,其特征在于,包括:处理器、存储器,以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时执行如下步骤:
接收用户输入的请求指令,所述请求指令用于请求分析应用程序APP对应的安卓安装包APK代码中的注解;
根据所述请求指令,分析所述APK代码,以得到注解信息xml文件,所述注解信息xml文件包含多个注解;
从所述APK代码中收集所述多个注解中每个注解对应的代码片段,以得到代码信息xml文件,所述代码信息xml文件包含多类代码片段;
根据所述注解信息xml文件、所述代码信息xml文件和所述APK代码,生成所述多个df工程文件和一个基础文件,所述多个df工程文件中的不同df工程文件对应所述多类代码片段中不同类的代码片段;
打包所述多个df工程文件和一个基础文件,得到所述APP对应的ABB文件;
向服务器发送所述ABB文件,以发布所述APP。
10.根据权利要求9所述的设备,其特征在于,所述根据所述请求指令,分析所述APK代码,以得到注解信息xml文件,包括:
根据所述请求指令,按照文件级别扫描应用文本,所述APP对应的APK代码存储在多个应用文本中;
识别所述应用文本中符合预设规则的字符串;
根据所述字符串、所述字符串所在的应用文本的名称、所述字符串在所述应用文本中的行号生成所述注解信息;
根据所述注解信息生成所述注解信息xml文件。
11.根据权利要求10所述的设备,其特征在于,所述根据所述注解信息生成所述注解信息xml文件,括:
持久化处理所述注解信息,以得所述注解信息xml文件。
12.根据权利要求10或11所述的设备,其特征在于,还包括:
根据所述注解信息生成JAR包,所述JAR包用于使得所述注解信息被正确编译。
13.根据权利要求9~12任一项所述的设备,其特征在于,所述多个注解中的任意一个注解对应的代码片段包含下述维度中至少一个的代码片段:类、成员、函数。
14.根据权利要求9~13任一项所述的设备,其特征在于,所述根据所述注解信息xml文件、所述代码信息xml文件和所述APK代码,生成所述多个df工程文件和一个基础文件之前,还包括:
针对所述多类代码片段中的目标类代码片段,按照预设优先顺序生成子df工程文件,所述预设优先顺序依次为动态特性、包、类、内部类、函数或接口、成员;
拼接所述子df工程文件,得到所述目标类代码片段的df工程文件,所述目标类代码片段是所述多类代码片段中的任意一类代码片段。
15.根据权利要求9~14任一项所述的设备,其特征在于,所述根据所述注解信息xml文件、所述代码信息xml文件和所述APK代码,生成所述多个df工程文件和一个基础文件之后,还包括:
生成所述多个df工程文件中每个df工程文件对应的安卓应用配置文件;
根据所述多个df工程文件、所述多个df工程文件中每个df工程文件对应的安卓应用配置文件以及所述基础文件,生成所述APP的编译文件。
16.根据权利要求9~15任一项所述的设备,其特征在于,所述根据所述注解信息xml文件、所述代码信息xml文件和所述APK代码,生成所述多个df工程文件和一个基础文件之后,还包括:
对所述df工程文件插入标识符,所述标识符用于指示所述df工程文件是利用所述APK代码自动生成的。
17.一种计算机存储介质,其特征在于,所述计算机可读存储介质中存储有指令,当所述指令在电子设备上运行时,使得电子设备执行上述权利要求1~8任一项所述的方法。
18.一种包含指令的计算机程序产品,其特征在于,所述指令在电子设备上运行时,使得电子设备执行上述权利要求1~8任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910883546.9A CN112527386B (zh) | 2019-09-18 | 2019-09-18 | 应用程序发布方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910883546.9A CN112527386B (zh) | 2019-09-18 | 2019-09-18 | 应用程序发布方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112527386A true CN112527386A (zh) | 2021-03-19 |
CN112527386B CN112527386B (zh) | 2022-10-04 |
Family
ID=74975203
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910883546.9A Active CN112527386B (zh) | 2019-09-18 | 2019-09-18 | 应用程序发布方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112527386B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113204330A (zh) * | 2021-06-01 | 2021-08-03 | 李麟 | 一种基于人工智能的程序开发设计方法及系统 |
CN113612818A (zh) * | 2021-07-09 | 2021-11-05 | 中国汽车技术研究中心有限公司 | 一种低代码平台的工业app发布系统和方法 |
CN116107585A (zh) * | 2023-02-17 | 2023-05-12 | 广州市保伦电子有限公司 | 一种服务器端编译时期xml生成方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11354996A (ja) * | 1998-06-12 | 1999-12-24 | Yamagata Casio Co Ltd | 部品実装プログラム作成装置 |
CN108287694A (zh) * | 2017-08-08 | 2018-07-17 | 深圳壹账通智能科技有限公司 | 应用程序构建方法、系统、计算机设备和存储介质 |
CN108416009A (zh) * | 2018-03-01 | 2018-08-17 | 广东欧珀移动通信有限公司 | 移动终端的文本检索方法、装置、存储介质及移动终端 |
-
2019
- 2019-09-18 CN CN201910883546.9A patent/CN112527386B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11354996A (ja) * | 1998-06-12 | 1999-12-24 | Yamagata Casio Co Ltd | 部品実装プログラム作成装置 |
CN108287694A (zh) * | 2017-08-08 | 2018-07-17 | 深圳壹账通智能科技有限公司 | 应用程序构建方法、系统、计算机设备和存储介质 |
CN108416009A (zh) * | 2018-03-01 | 2018-08-17 | 广东欧珀移动通信有限公司 | 移动终端的文本检索方法、装置、存储介质及移动终端 |
Non-Patent Citations (3)
Title |
---|
AGEHUA’BLOG: "《Android App Bundle(AAB) ⽂件介绍》", 《 HTTPS://AGEHUA.GITHUB.IO/2019/03/27/ANDROID-APP- BUNDLES-INTRODUCTION/》 * |
AGEHUA’BLOG: "《Android App Bundle(AAB) ⽂件介绍》", 《HTTPS://AGEHUA.GITHUB.IO/2019/03/27/ANDROID-APP- BUNDLES-INTRODUCTION/》 * |
DANIEXLEE: "《什么是数据持久化?为什么要持久化?》", 《HTTPS://BLOG.CSDN.NET/WOYAOKAOYAN/ARTICLE/DETAILS/4895857》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113204330A (zh) * | 2021-06-01 | 2021-08-03 | 李麟 | 一种基于人工智能的程序开发设计方法及系统 |
CN113204330B (zh) * | 2021-06-01 | 2024-03-26 | 李麟 | 一种基于人工智能的程序开发设计方法及系统 |
CN113612818A (zh) * | 2021-07-09 | 2021-11-05 | 中国汽车技术研究中心有限公司 | 一种低代码平台的工业app发布系统和方法 |
CN113612818B (zh) * | 2021-07-09 | 2023-09-01 | 中国汽车技术研究中心有限公司 | 一种低代码平台的工业app发布系统 |
CN116107585A (zh) * | 2023-02-17 | 2023-05-12 | 广州市保伦电子有限公司 | 一种服务器端编译时期xml生成方法及装置 |
CN116107585B (zh) * | 2023-02-17 | 2024-03-08 | 广东保伦电子股份有限公司 | 一种服务器端编译时期xml生成方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112527386B (zh) | 2022-10-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108897562B (zh) | 安装包更新方法、装置、介质以及设备 | |
CN110716715B (zh) | 一种应用程序开发方法、装置、设备及介质 | |
CN112527386B (zh) | 应用程序发布方法及装置 | |
CN111240684B (zh) | 一种js代码的裁剪方法、装置、介质和电子设备 | |
CN109873735B (zh) | H5页面的性能测试方法、装置和计算机设备 | |
CN111740948B (zh) | 数据包发布方法、动态更新方法、装置、设备及介质 | |
CN109558734A (zh) | 一种堆栈安全性的检测方法及装置、移动设备 | |
CN113961919B (zh) | 恶意软件检测方法和装置 | |
CN111931102A (zh) | 一种构建页面的方法、装置及系统 | |
CN113268245A (zh) | 代码分析方法、装置及存储介质 | |
CN111913741B (zh) | 对象拦截方法、装置、介质及电子设备 | |
CN109933381A (zh) | 一种内核的加载方法及装置 | |
EP4300303A1 (en) | Animation resource information processing method and apparatus, device, medium and product | |
CN114035805A (zh) | 用于预编译器的代码转换方法、装置、介质及设备 | |
CN113835701A (zh) | 一种基于组件化的代码生成方法和装置 | |
CN110851211A (zh) | 用于显示应用信息的方法、装置、电子设备和介质 | |
CN112416303B (zh) | 软件开发工具包热修复方法、装置及电子设备 | |
CN108304697B (zh) | 检测app二次打包的方法、装置及移动终端 | |
CN109522719A (zh) | 应用安装包的加固检测方法、装置及移动终端 | |
CN108845864A (zh) | 一种基于spring框架的JVM垃圾回收方法和装置 | |
CN117093261A (zh) | 一种基于构建时抽象语法树的代码容错处理方法和装置 | |
CN110348226A (zh) | 一种工程文件的扫描方法、装置、电子设备及存储介质 | |
CN110826074A (zh) | 一种应用漏洞检测方法、装置和计算机可读存储介质 | |
CN109145598B (zh) | 脚本文件的病毒检测方法、装置、终端及存储介质 | |
CN111539200B (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 |