安卓应用程序打包方法、装置、存储介质及电子装置与流程

文档序号:26749727发布日期:2021-09-25 02:05阅读:88来源:国知局
安卓应用程序打包方法、装置、存储介质及电子装置与流程

1.本发明涉及通信领域,具体而言,涉及一种安卓应用程序打包方法、装置、存储介质及电子装置。


背景技术:

2.安卓作为当前最主流的两大手机操作系统之一,安卓应用程序(application,简称为app)的应用也越来越广泛,而作为开发者,app的打包也极为频繁。目前基于reactnative框架开发的安卓app打包通过人工进行,需要经过以下步骤:1、打包javascript代码,生成jsbundle代码;2、将jsbundle代码与安卓代码一起进行编译打包;3、用签名工具进行签名。人工处理的话需要依次等待上述三个步骤完成后才能完成,打包周期比较长且耗费人力成本较高。
3.针对相关技术中人工打包周期比较长且耗费人力成本较高的问题,尚未提出解决方案。


技术实现要素:

4.本发明实施例提供了一种安卓应用程序打包方法、装置、存储介质及电子装置,以至少解决相关技术中人工打包周期比较长且耗费人力成本较高的问题。
5.根据本发明的一个实施例,提供一种安卓应用程序打包方法,包括:
6.通过shell脚本程序,将linux命令转化为可顺序执行的脚本程序;
7.通过所述脚本程序执行javascript代码打包、安卓代码打包、文件签名,得到应用程序包,并输出所述应用程序包。
8.可选地,通过所述脚本程序执行javascript代码打包、安卓代码打包、文件签名,得到应用程序包包括:
9.通过shell脚本将javascript代码进行打包,生成jsbundle代码;
10.通过所述shell脚本将jsbundle代码与安卓原生代码一起打包,得到应用程序文件;
11.通过所述shell脚本,基于签名工具对所述应用程序文件进行签名,得到所述应用程序包。
12.可选地,所述方法还包括:
13.基于本地依赖库对所述安卓原生代码进行编译。
14.可选地,基于本地依赖库对所述安卓原生代码进行编译包括:
15.从所述本地依赖库中获取依赖代码;
16.将所述依赖代码与预先编辑的代码进行合并,得到所述安卓原生代码。
17.可选地,所述方法还包括:
18.从网络侧下载依赖库,并将所述依赖库存储到本地,得到所述本地依赖库;
19.对所述本地依赖库进行优化。
20.可选地,对所述本地依赖库进行优化包括:
21.通过检索工具,对所述依赖库中的相同内容进行检测;
22.将检测到的相同内容进行删除处理,得到优化后的所述本地依赖库。
23.根据本发明的另一个实施例,还提供了一种安卓应用程序打包装置,包括:
24.转换模块,用于通过shell脚本程序,将linux命令转化为可顺序执行的脚本程序;
25.执行模块,用于通过所述脚本程序执行javascript代码打包、安卓代码打包、文件签名,得到应用程序包,并输出所述应用程序包。
26.可选地,所述执行模块包括:
27.生成子模块,用于通过shell脚本将javascript代码进行打包,生成jsbundle代码;
28.打包子模块,用于通过所述shell脚本将jsbundle代码与安卓原生代码一起打包,得到应用程序文件;
29.签名子模块,用于通过所述shell脚本,基于签名工具对所述应用程序文件进行签名,得到所述应用程序包。
30.可选地,所述装置还包括:
31.编译模块,用于基于本地依赖库对所述安卓原生代码进行编译。
32.可选地,所述编译模块包括:
33.获取子模块,用于从所述本地依赖库中获取依赖代码;
34.合并子模块,用于将所述依赖代码与预先编辑的代码进行合并,得到所述安卓原生代码。
35.可选地,所述装置还包括:
36.存储模块,用于从网络侧下载依赖库,并将所述依赖库存储到本地,得到所述本地依赖库;
37.优化模块,用于对所述本地依赖库进行优化。
38.可选地,所述优化模块包括:
39.检测子模块,用于通过检索工具,对所述依赖库中的相同内容进行检测;
40.删除子模块,用于将检测到的相同内容进行删除处理,得到优化后的所述本地依赖库。
41.根据本发明的又一个实施例,还提供了一种计算机可读的存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
42.根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。
43.通过本发明,通过shell脚本程序,将linux命令转化为可顺序执行的脚本程序;通过所述脚本程序执行javascript代码打包、安卓代码打包、文件签名,得到应用程序app包,并输出所述app包,可以解决相关技术中人工打包周期比较长且耗费人力成本较高的问题,利用shell脚本进行打包,简化人工操作步骤,提高了打包效率。
附图说明
44.此处所说明的附图用来提供对本发明的进一步理解,构成本技术的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
45.图1是本发明实施例的安卓应用程序打包方法的移动终端的硬件结构框图;
46.图2是根据本发明实施例的安卓应用程序打包方法的流程图;
47.图3是根据本发明实施例的基于reactnative框架的安卓app自动打包的流程图;
48.图4是根据本发明实施例的安卓应用程序打包装置的框图;
49.图5是根据本发明优选实施例的安卓应用程序打包装置的框图一;
50.图6是根据本发明优选实施例的安卓应用程序打包装置的框图二。
具体实施方式
51.下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本技术中的实施例及实施例中的特征可以相互组合。
52.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
53.实施例1
54.本技术实施例一所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,图1是本发明实施例的安卓应用程序打包方法的移动终端的硬件结构框图,如图1所示,移动终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)和用于存储数据的存储器104,可选地,上述移动终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述移动终端的结构造成限定。例如,移动终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
55.存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的安卓应用程序打包方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
56.传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(network interface controller,简称为nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(radio frequency,简称为rf)模块,其用于通过无线方式与互联网进行通讯。
57.基于上述的移动终端或网络架构,在本实施例中提供了一种安卓应用程序打包方法,图2是根据本发明实施例的安卓应用程序打包方法的流程图,如图2所示,该流程包括如下步骤:
58.步骤s202,通过shell脚本程序,将linux命令转化为可顺序执行的脚本程序;
59.步骤s204,通过所述脚本程序执行javascript代码打包、安卓代码打包、文件签名,得到应用程序包,并输出所述应用程序包。
60.本发明实施例中,步骤s204具体可以包括:通过shell脚本将javascript代码进行打包,生成jsbundle代码;通过所述shell脚本将jsbundle代码与安卓原生代码一起打包,得到应用程序文件;通过所述shell脚本,基于签名工具对所述应用程序文件进行签名,得到所述应用程序包。
61.通过上述步骤s202至s204,通过shell脚本程序,将linux命令转化为可顺序执行的脚本程序;通过所述脚本程序执行javascript代码打包、安卓代码打包、文件签名,得到应用程序app包,并输出所述app包,可以解决相关技术中人工打包周期比较长且耗费人力成本较高的问题,利用shell脚本进行打包,简化人工操作步骤,提高了打包效率。
62.应用程序包具体为安卓安装包(android package,简称为apk),apk是一种安卓操作系统的应用程序安装文件,android项目开发完成后需要打包成apk,并下载到终端设备运行。
63.安卓作为当前最主流的两大手机操作系统之一,安卓app的应用也越来越广泛,而作为开发者,app的打包也极为频繁。基于reactnative框架开发的安卓app打包都需要经过:打包javascript代码生成jsbundle;将jsbundle与安卓代码一起进行编译打包;用签名工具进行签名。shell是用c语言编写的应用程序,它是用户使用linux的桥梁,shell脚本就是一种为shell编写的脚本程序,可以将linux下的各种命令结合起来,串联执行。本发明实施例利用shell脚本对上述打包步骤进行优化,简化人工操作步骤,提高打包效率。
64.在一可选的实施例中,基于本地依赖库对所述安卓原生代码进行编译,进一步的,从所述本地依赖库中获取依赖代码;将所述依赖代码与预先编辑的代码进行合并,得到所述安卓原生代码。
65.在另一可选的实施例中,从网络侧下载依赖库,并将所述依赖库存储到本地,得到所述本地依赖库;对所述本地依赖库进行优化,进一步的,通过检索工具,对所述依赖库中的相同内容进行检测;将检测到的相同内容进行删除处理,得到优化后的所述本地依赖库。
66.在上述步骤s204之后,还可以运行应用程序包,首先存储配置多组环境参数的测试参数文件至应用程序代码的资源文件夹中,将应用程序包发布至应用程序测试终端,在应用程序测试终端上安装好该应用程序包之后,启动应用程序,应用程序在启动时,调用默认的初始环境参数,在应用程序启动后,读取并解析测试参数文件中的多组环境参数,并将测试参数文件中的多组环境参数在应用程序测试终端上通过预置的参数配置展示页面上输出展示,并在接收到测试人员输入的切换环境的指令时,以测试人员指定的目标环境参数替换掉应用程序当前正在使用的初始环境参数,从而实现在测试过程中动态切换环境参数的目的,使得测试人员不需要根据环境参数的不同而重复进行打包操作,节省了打包消耗的时间,提升了测试的效率。
67.在linux系统中的应用进程中增加线程并生成shell模块,并且在所述linux系统中引入shell进程,所述shell进程可以与应用进程中的shell模块进行交互,所述shell进程预置shell进程命令,并创建命令共享文件;在本发明实施例中,在linux系统中的应用进程中增加一个线程生成shell模块,并在整个多进程的linux系统中引入一个可以随时启动
的shell进程。用户通过shell进程与应用进程中shell模块之间的交互,即可随时掌握应用进程的执行情况。
68.需初始化shell进程命令,注册由该shell进程本身执行的命令,并创建命令共享文件来向应用进程传递linux系统的命令。具体而言,所述shell进程命令可以包括shell进程退出命令及shell进程切换命令。其中,shell进程切换命令可以使该shell进程可以在多个应用进程间切换,shell进程退出命令则可以结束该shell进程。
69.所述shell进程获取所述linux系统的串口输入的命令字符串;在本发明实施例中利用引入的shell进程来负责获取linux系统串口输入,即当linux系统的串口有命令字符串输入时,shell进程捕获该命令字符串。
70.所述shell进程判断所述命令字符串是否为所述shell进程命令;若是,所述shell进程解析并执行所述命令字符串;若否,所述shell进程将所述命令字符串写入所述命令共享文件,发送信号到指定的应用进程中的shell模块中;所述shell模块用于在接收到所述信号后从所述命令共享文件获取并执行所述命令字符串。
71.当shell进程获取到命令字符串时,若该命令字符串是shell进程命令,则由shell进程解析并执行所述命令字符串;若该命令字符串不是shell进程命令,则将该命令字符串写入命令共享文件,并发送信号到指定的应用进程的shell模块中,shell模块收到信号后,从命令共享文件中获取该命令字符串,并执行该命令字符串相应的命令。
72.图3是根据本发明实施例的基于reactnative框架的安卓app自动打包的流程图,如图3所示,包括:
73.步骤s301,打包javascript代码;
74.步骤s302,编译安卓代码,具体的,将项目中的依赖库全部下载到本地,基于本地依赖库对安卓原生代码进行编译,从所述本地依赖库中获取依赖代码;将所述依赖代码与预先编辑的代码进行合并,得到所述安卓原生代码;
75.步骤s303,配置签名文件;
76.步骤s304,打包输出app包,通过shell脚本将javascript代码进行打包,以生成jsbundle代码;通过该shell脚本将jsbundle代码与安卓原生代码一起打包,得到应用程序文件;通过该shell脚本,基于签名工具对应用程序文件进行签名,得到app包。
77.基于reactnative框架开发的安卓app打包包含:打包javascript代码,以生成jsbundle代码、检测并下载安卓原生代码依赖库、代码混淆配置,编译安卓原生代码、配置签名文件、将代码经签名文件签名并输出app包等步骤。通过shell脚本将上述步骤的执行串联起来,以及通过对安卓原生代码编译速度的优化。
78.针对打包javascript代码,以生成jsbundle代码,编译安卓原生代码,配置签名文件,输出app包等步骤均由linux命令,通过shell脚本程序,将这些linux命令转化为可顺序执行的脚本程序,以简化打包步骤,提升打包效率。
79.针对上述步骤s302中,编译安卓代码步骤,将项目中的依赖库全部下载到本地,通过检索工具,检测依赖库中的相同内容;将检测到的相同依赖库进行删除处理,剩余依赖库的代码移动至项目中,经过本步骤的处理,在项目打包时省略了检测依赖库步骤,并且由于依赖库减少,有效提升了安卓原生代码的编译时间。
80.本发明实施例通过shell脚本将javascript代码打包、app包编译、app包签名三个
步骤串联到一起,让三个步骤的执行无缝衔接,并且通过本地化依赖库,减少了包的体积,同时提高了工程编译速度,省去了人工操作步骤,从而提高打包效率。即针对reactnative的安卓项目,通过shell脚本讲打包步骤串联起来,同时处理掉重复的依赖库,提高编译速度和打包效率。
81.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
82.实施例3
83.在本实施例中还提供了一种安卓应用程序打包装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
84.图4是根据本发明实施例的安卓应用程序打包装置的框图,如图4所示,包括:
85.转换模块42,用于通过shell脚本程序,将linux命令转化为可顺序执行的脚本程序;
86.执行模块44,用于通过所述脚本程序执行javascript代码打包、安卓代码打包、文件签名,得到应用程序包,并输出所述应用程序包。
87.可选地,所述执行模块44包括:
88.生成子模块,用于通过shell脚本将javascript代码进行打包,生成jsbundle代码;
89.打包子模块,用于通过所述shell脚本将jsbundle代码与安卓原生代码一起打包,得到应用程序文件;
90.签名子模块,用于通过所述shell脚本,基于签名工具对所述应用程序文件进行签名,得到所述应用程序包。
91.图5是根据本发明优选实施例的安卓应用程序打包装置的框图一,如图5所示,所述装置还包括:
92.编译模块52,用于基于本地依赖库对所述安卓原生代码进行编译。
93.可选地,所述编译模块52包括:
94.获取子模块,用于从所述本地依赖库中获取依赖代码;
95.合并子模块,用于将所述依赖代码与预先编辑的代码进行合并,得到所述安卓原生代码。
96.图6是根据本发明优选实施例的安卓应用程序打包装置的框图二,如图6所示,所述装置还包括:
97.存储模块62,用于从网络侧下载依赖库,并将所述依赖库存储到本地,得到所述本地依赖库;
98.优化模块64,用于对所述本地依赖库进行优化。
99.可选地,所述优化模块64包括:
100.检测子模块,用于通过检索工具,对所述依赖库中的相同内容进行检测;
101.删除子模块,用于将检测到的相同内容进行删除处理,得到优化后的所述本地依赖库。
102.需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
103.实施例3
104.本发明的实施例还提供了一种存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
105.可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的计算机程序:
106.s1,通过shell脚本程序,将linux命令转化为可顺序执行的脚本程序;
107.s2,通过所述脚本程序执行javascript代码打包、安卓代码打包、文件签名,得到应用程序包,并输出所述应用程序包。
108.可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(read

only memory,简称为rom)、随机存取存储器(random access memory,简称为ram)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
109.实施例4
110.本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
111.可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
112.可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
113.s1,通过shell脚本程序,将linux命令转化为可顺序执行的脚本程序;
114.s2,通过所述脚本程序执行javascript代码打包、安卓代码打包、文件签名,得到应用程序包,并输出所述应用程序包。
115.可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
116.显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
117.以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1