一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

混合模式移动应用调试系统的制作方法

2021-11-09 21:25:00 来源:中国专利 TAG:


1.本技术实施例涉及计算机技术领域,尤其涉及一种混合模式移动应用调试系统。


背景技术:

2.源于计算机应用技术的更新和市场的需要,混合模式移动应用应运而生。混合模式移动应用是介于原生应用(native app)和网络应用(web app)之间的混合模式移动应用。在开发好混合模式移动应用之后,为了发现开发过程中存在的问题,需要对混合模式移动应用进行远程调试。然而,发明人发现,现有的远程调试方法存在以下几个问题:
3.问题1、当前前端开发人员开发hybrid(混合模式移动应用)项目时,通常只能在pc浏览器中模拟真机视图,但无法测试前端javascript代码与native交互时的真实效果,两种环境存在绝对的差异性,对前端hybrid开发造成混淆与效果展示的困难。
4.问题2、hybrid页面访问本地开发项目的静态资源,需要通过手机连接内网后连接charles代理,然后设置一系列map remote、map local等映射才能实现访问本地资源以及查看网络请求;
5.问题3、当前想要与web开发一样通过chrome devtools进行完整地前端功能调试,需要通过weinre工具,缺点在于仍需要处于同一网段内,且只能使用weinre自带的调试工具,界面、功能不完善,调试功能有限。对于ios页面,由于ios对开发者账号、设备的限制,safari调试无法大规模的应用于真机,对前端开发造成门槛较大等问题。
6.综上,由于现有在对混合模式移动应用进行远程调试存在上述问题,导致对混合模式移动应用进行远程调试非常复杂和不方便。


技术实现要素:

7.本技术实施例的目的是提供一种混合模式移动应用调试系统,以解决现有技术对混合模式移动应用进行远程调试非常复杂和不方便问题。
8.本技术实施例提供了一种混合模式移动应用调试系统,所述应用调试系统包括调试设备、节点服务器及待调试设备,其中:
9.所述调试设备,用于将待调试的混合模式移动应用的页面代码上传至所述节点服务器中;
10.所述节点服务器,用于将接收到的页面代码部署至静态资源服务中,并将所述静态资源服务的网络地址返回给所述调试设备;
11.所述待调试设备,用于从所述调试设备中获取所述网络地址,并根据所述网络地址从所述静态资源服务中获取并加载所述页面代码,以打开待调试页面;
12.所述调试设备,还用于通过安装在所述调试设备中的调试工具对所述待调试页面进行调试。
13.可选地,所述调试设备还包括安装于所述调试设备中的electron桌面客户端以及本地项目调试服务,其中:
14.所述electron桌面客户端,用于创建本地项目打包服务、websocket客户端、websocket服务端、第一模块热替换客户端,以及用于通过所述websocket客户端与所述节点服务器建立第一websocket长连接;
15.所述electron桌面客户端,还用于通过所述本地项目打包服务在所述页面代码中添加用于创建第二模块热替换客户端的第一脚本及添加用于创建模块热替换服务端的第二脚本,以及用于通过所述本地项目打包服务开启所述本地项目调试服务;
16.所述本地项目调试服务,用于根据所述第二脚本创建模块热替换服务端;
17.所述本地项目调试服务,还用于将包含有所述第一脚本的页面代码进行打包生成页面代码文件目录;
18.所述本地项目调试服务,还用于在所述页面代码文件目录中的预设文件中添加用于加载service worker的第三脚本的代码段,以及用于将所述第三脚本添加至所述页面代码文件目录下;
19.所述electron桌面客户端,还用于将包含有所述第三脚本的页面代码文件目录进行打包生成页面代码文件包,并将所述页面代码文件包上传至所述节点服务器。
20.所述节点服务器,还用于对所述页面代码文件包进行解压生成第一代码文件,并将生成的第一代码文件部署至所述静态资源服务中,以及将所述静态资源服务的网络地址返回给所述electron桌面客户端。
21.可选地,所述待调试设备包括安装有所述混合模式移动应用的安卓设备,所述调试工具包括chrome devtools frontend调试工具,其中:
22.所述混合模式移动应用,用于从所述静态资源服务中获取并加载所述第一代码文件,以打开所述待调试页面;
23.所述混合模式移动应用,还用于根据所述第一代码文件中的所述代码段加载所述第三脚本,并通过所述第三脚本拦截所述待调试页面的网络请求,以及根据所述第一代码文件中的第一脚本创建所述第二模块热替换客户端;
24.所述第二模块热替换客户端,用于与所述节点服务器建立第二websocket长连接;
25.所述混合模式移动应用,还用于开启webview调试模式,以使所述安卓设备根据所述webview调试模式调用chromium内核创建unix domain socket服务端;
26.所述混合模式移动应用,还用于与所述unix domain socket服务端建立第三websocket长连接,以及用于与所述节点服务器建立第四websocket长连接;
27.所述websocket客户端,还用于开启桌面调试窗口,并在所述桌面调试窗口加载所述chrome devtools frontend调试工具;
28.所述chrome devtools frontend调试工具,用于与所述websocket服务端建立第五websocket长连接,以通过所述第五websocket长连接与所述chromium内核交换调试数据实现对所述待调试页面进行调试;
29.所述节点服务器,还用于在所述第二websocket长连接建立后,通过所述第一websocket长连接通知所述electron桌面客户端在所述第一模块热替换客户端与所述模块热替换服务端之间建立第六websocket长连接,以通过所述第六websocket长连接实现对页面的热更新。
30.可选地,所述待调试设备还包括ios模拟器,所述调试工具还包括safari浏览器,
其中:
31.所述electron桌面客户端,还用于创建applescript自动化服务及ios模拟器自动化服务;
32.所述electron桌面客户端,还用于通过所述ios模拟器自动化服务开启所述ios模拟器,并在所述ios模拟器开启后,通过所述ios模拟器自动化服务安装所述混合模式移动应用,以及在所述混合模式移动应用安装完成后,通过所述ios模拟器自动化服务在所述ios模拟器中打开所述网络地址,以使得所述混合模式移动应用调用wkwebview内核加载所述待调试页面;
33.所述electron桌面客户端,还用于通过applescript自动化服务从所述safari浏览器打开safari开发者工具;
34.所述safari开发者工具,用于通过safari调试协议与所述wkwebview内核建立连接通道,并通过所述连接通道实现对所述待调试页面进行调试。
35.可选地,所述electron桌面客户端,还用于通过所述ios模拟器自动化服务关闭当前所有已开启的ios模拟器,并在所有的ios模拟器关闭后,重新开启选中的ios模拟器。
36.可选地,所述混合模式移动应用,还用于在与所述节点服务器建立第四websocket长连接后,通过所述第四websocket长连接向所述节点服务器发送所述待调试页面的调试通道已开启的信号;
37.所述节点服务器,还用于在接收到所述信号后,通过所述第一websocket长连接将所述信号发送给所述websocket客户端,以使所述websocket客户端在接收到所述信号后开启所述桌面调试窗口。
38.可选地,所述electron桌面客户端,还用于向所述节点服务器请求获取会话凭证信息;
39.所述节点服务器,用于在接收到所述electron桌面客户端发送的会话凭证信息获取请求时,生成会话凭证信息,并将所述会话凭证信息发送给所述electron桌面客户端,以使所述websocket客户端根据所述会话凭证信息与所述节点服务器建立第一websocket长连接。
40.可选地,所述节点服务器,还用于在生成所述会话凭证信息后,在所述静态资源服务中创建以所述会话凭证信息为名的目录,并将所述第一代码文件部署至以所述会话凭证信息为名的目录下。
41.可选地,所述unix domain socket服务端具有对应的进程标识信息,所述混合模式移动应用,还用于获取所述安卓设备中当前开启的多个进程的进程标识信息,并根据各个进程标识信息查找所述unix domain socket服务端;
42.所述混合模式移动应用,还用于向所述unix domain socket服务端发起握手请求,并在握手成功后向所述unix domain socket服务端发送协议升级指令,以将当前通信协议升级为websocket协议。
43.可选地,所述chrome devtools frontend调试工具,还用于通过所述第五websocket长连接向所述websocket服务端发送所述待调试的hybrid页面的调试信息获取请求给所述websocket服务端,以使所述websocket服务端依次通过所述websocket客户端、所述第一websocket长连接的通道、所述第四websocket长连接的通道及所述第三
websocket长连接的通道将将所述调试信息获取请求发送给所述unix domain socket服务端实现从所述unix domain socket服务端获取所述待调试页面的调试信息。
44.本技术还提供一种混合模式移动应用调试方法,应用于包括调试设备、节点服务器及待调试设备的调试系统中,所述方法包括:
45.通过所述调试设备将待调试的混合模式移动应用的页面代码上传至所述节点服务器中;
46.通过所述节点服务器将接收到的页面代码部署至静态资源服务中,并将所述静态资源服务的网络地址返回给所述调试设备;
47.通过所述待调试设备从所述调试设备中获取所述网络地址,并根据所述网络地址从所述静态资源服务中获取并加载所述页面代码,以打开待调试页面;
48.通过安装在所述调试设备中的调试工具对所述待调试页面进行调试。
49.本技术实施例提供的混合模式移动应用调试系统及方法,可以让前端开发人员直接使用单一pc软件即可达到在本地开发常规前端项目,在真机、模拟器上显示页面效果,并可以在pc软件上直接进行完整地前端页面功能调试,直接在真机上预览前端与native交互的真实效果,大大提升前端开发人员开发hybrid项目的便利性与效率。
附图说明
50.图1示意性示出了混合模式移动应用调试系统的应用环境示意图;
51.图2示意性示出了本技术一实施例的混合模式移动应用调试系统的框图;
52.图3示意性示出了本技术一实施例的混合模式移动应用调试方法的流程图。
具体实施方式
53.以下结合附图与具体实施例进一步阐述本技术的优点。
54.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
55.在本公开使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
56.应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
57.在本技术的描述中,需要理解的是,步骤前的数字标号并不标识执行步骤的前后顺序,仅用于方便描述本技术及区别每一步骤,因此不能理解为对本技术的限制。
58.图1示意性示出了根据本技术实施例的混合模式移动应用调试系统的应用环境示
意图。在示例性的实施例中,该应用环境的系统可包括终端设备10、安装有待调试的混合模式移动应用的设备20及服务器30。其中,终端设备10、安装有待调试的混合模式移动应用的设备20及服务器30之间形成无线或有线连接。终端设备10可以为平板电脑、电脑等,具体此处不作限定。安装有待调试的混合模式移动应用的设备20可以为安卓手机、安卓平板或者ios模拟器等。服务器30可以为一台服务器或多台服务器组成的服务器集群或云计算中心等。服务器30用于存储待调试的混合模式移动应用的页面代码。
59.参阅图2,其为本技术一实施例的混合模式移动应用调试系统的框图。从图中可以看出,本实施例中所提供的混合模式移动应用调试系统包括调试设备200、待调试设备201及节点服务器202,其中:
60.所述调试设备200,用于将待调试的混合模式移动应用的页面代码上传至所述节点服务器202中。
61.具体地,所述调试设备200指的是在混合模式移动应用调试系统中用于对调试设备201进行调试的设备。在本实施例中,在对混合模式移动应用(hybrid应用)进行调试之前,需要先通过所述调试设备200将该混合模式移动应用的页面代码上传至节点服务器202中。
62.在一示例性的实施方式中,所述调试设备200包括安装在所述调试设备200中的electron桌面客户端以及本地项目调试服务。
63.其中,所述electron桌面客户端,是基于electron开源框架的macos、windows的桌面客户端,其是可以实现pc(电脑)、节点服务器202、真机(android手机)或模拟器(ios模拟器)之间的调试耦合中间层,是桌面客户端使用者的ui接入层,聚合了pc底层系统、websocket通信、chromium内核控制等多种功能。具体而言,所述electron桌面客户端可以实现applescript自动化服务与node

simctl ios模拟器自动化服务,实现页面hmr(hot module replacement,模块热替换)所有相关环节的自动化流程,包括注入配置、桥接中间层等。
64.在本实施例中,当electron桌面客户端200启动后,其会在pc本地创建一个websocket客户端与websocket服务端。
65.其中,websocket客户端会主动向节点服务器202发起连接请求,以在其两者之间建立第一websocket长连接,并通过该第一websocket长连接可以将从节点服务器202获取到的数据转发给websocket客户端。websocket客户端还会从websocket服务端获取到的数据(该数据通过websocket服务端与websocket客户端之间的内部数据通道获取得到)通过该第一websocket长连接转发给节点服务器202。
66.在一示例性实施方式中,为了避免没有权限的设备也连上该节点服务器202,所述electron桌面客户端,还用于向所述节点服务器202请求获取会话凭证信息;所述节点服务器202,用于在接收到所述electron桌面客户端发送的会话凭证信息获取请求时,生成会话凭证信息,并将所述会话凭证信息发送给所述electron桌面客户端,以使所述websocket客户端根据所述会话凭证信息与所述节点服务器202建立第一websocket长连接。
67.具体地,节点服务器202在接收到会话凭证信息获取请求后,可以随机生成会话凭证信息,所述会话凭据信息为与节点服务器202建立连接的凭证,只有具有该会话凭证的设备才能与节点服务器202建立连接。
68.其中,websocket服务端作为待调试页面的调试数据、待调试页面的hmr热更新数据、service worker劫持请求转发相关数据的数据中转站。该websocket服务端可以供调试工具(比如,chrome devtools frontend调试工具)连接,实现节点服务器202与chrome devtools frontend调试工具、webpack服务、hybrid应用(混合模式移动应用)、待调试页面及service worker之间的通信。
69.在本实施例中,在启动electron桌面客户端后,其还会在pc本地创建第一模块热替换客户端。
70.具体地,第一模块热替换客户端是由electron桌面客户端创建的本地websocket客户端,用于与模块热替换服务端通信,实现hmr热更新json数据的交换。
71.在本实施方式中,为了可以及时通过所述本地项目调试服务对页面代码进行处理,在启动electron桌面客户端后,其还会在pc本地创建一个本地项目打包服务,以通过该本地项目打包服务开启所述本地项目调试服务。
72.具体地,本地项目打包服务是electron客户端的子进程创建的webpack开发服务器,用于执行开启所述本地项目调试服务,以本地项目调试服务对页面代码进行处理。
73.在本实施方式中,所述electron桌面客户端还用于通过所述本地项目打包服务在所述页面代码中添加用于创建第二模块热替换客户端的第一脚本及添加用于创建模块热替换服务端的第二脚本。
74.具体地,模块热替换服务端,是在webpack开启devserver模式时,由webpack在本地创建的websocket服务端,供第一模块热替换客户端连接并提供hmr热更新json数据。
75.其中,所述第一脚本是javascript脚本,用于替换webpack内置的模块热替换客户端,通过将该第一脚本添加至页面代码中,在加载页面代码时会与webpack内置的模块热替换服务端建立websocket长连接,用于交换hmr热更新的json数据。在本实施例中,通过该第一脚本创建的第二模块热替换客户端可以改变待调试页面的hmr热更新默认的websocket长连接的目标地址为节点服务器202地址,用于转发hmr热更新的json数据至节点服务器202。
76.其中,webpack是一个模块打包器,主要目的是打包在浏览器上运行的javascript代码文件。
77.需要说明的是,hmr热更新,即模块热替换,该功能是一种会在应用程序运行过程中,替换、添加或删除模块时,而无需重新加载整个页面。其具有如下几个特点:
78.1、保留页面状态(页面状态包括表单、路由等状态)。
79.2、只更新变更内容,打包、页面加载、页面呈现速度更快,以节省宝贵的开发时间。
80.3、在源代码中css/js产生修改时,会立刻在浏览器中进行更新,这几乎相当于在浏览器devtools中直接更改样式。
81.其中,所述第二脚本也是javascript脚本,其可以用于替换webpack内置的模块热替换服务端,具体而言,该javascript脚本核心是通过改变内置的模块热替换服务端的serverpath路径为自定义路径,以便可以和创建的模块热替换客户端建立websocket长连接。
82.在一示例性的实施方式中,在通过所述本地项目打包服务在所述页面代码中添加所述第一脚本和所述第二脚本时,可以对所述页面代码中包含的配置文件代码进行解析得
到gitignore、git filemode配置,并在解析后得到的配置文件中添加所述第一脚本和所述第二脚本,在完成所述第一脚本和第二脚本添加后,可以根据现有的config配置文件,以生成新的项目配置文件。
83.在本实施例中,当本地项目打包服务完成在页面代码中添加第一脚本和第二脚本后,本地项目调试服务即可以根据所述第二脚本创建模块热替换服务端。
84.本地项目调试服务还可以将包含有所述第一脚本的页面代码进行打包生成页面代码文件目录。
85.其中,所述本地项目调试服务是一个基于webpack的本地前端项目的dev运行服务。
86.所述页面代码文件目录指的是dist文件,其包括多个文件,比如该dist文件包含项目静态资源html、css、js文件等。
87.在本实施例中,所述本地项目调试服务,还用于在所述页面代码文件目录中的预设文件中添加用于加载service worker的第三脚本的代码段,以及用于将所述第三脚本添加至所述页面代码文件目录下。
88.其中,service worker是一个注册在指定源和路径下的事件驱动worker,它采用javascript控制关联的页面或者网站,拦截并修改访问和请求资源,细粒度的缓存资源。本质上充当web应用程序、浏览器和网络之间的代理服务器。它运行在worker上下文,即在其他线程中,而非浏览器主线程,因此无法访问页面dom,且不会造成阻塞,只能由https承载,是与浏览器主线程完全异步的线程。
89.在本实施例中,为了在加载待调试页面时,可以通过service worker拦截当前待调试页面中的所有的http/https网络请求,实现对网络请求与响应结果的修改,再返回给当前待调试页面,作为当前待调试页面的网络请求结果。在本实施例中,可以现在所述页面代码文件目录中预先添加加载service worker脚本的代码段,这样在加载页面代码时,就可以通过该代码段来开启另一个线程来运行service worker的第三脚本,以实现对当前待调试页面的接管。
90.在本实施方式中,所述预设文件为预先设定的用于添加代码段的文件,其具体为页面代码文件目标中的html文件。
91.在本实施例中,在添加好代码段之后,可以将service worker的javascript的第三脚本放入所述页面代码文件目录下,以便可以通过所述electron桌面客户端将service worker的脚本随页面代码文件目录中的其他静态资源文件一起打包生成页面代码文件包,并将所述页面代码文件包上传至所述节点服务器202。
92.在一示例性的施方式中,可以通过所述electron桌面客户端将包含有所述第三脚本的页面代码文件目录打包成tar包,这样,electron桌面客户端,可以通过http请求的方式将该tar包上传至节点服务器202,具体而言,electron桌面客户端可以将tar包放入http请求的请求体body内。
93.所述节点服务器202,用于将接收到的页面代码部署至静态资源服务中,并将所述静态资源服务的网络地址返回给所述调试设备201。
94.具体地,节点服务器202可以部署在公网环境下的,用于承载api接口服务,管理websocket长连接数据交互,负责接收、解压缩、管理不同客户端的会话凭证(session id)
与项目静态资源,提供静态资源服务等。静态资源服务为节点服务器202中用于存储页面代码的容器。
95.在本实施例中,节点服务器202在接收到调试设备201上传的页面代码后,会将接收到的页面代码部署至静态资源服务中,并将所述静态资源服务的网络地址返回给调试设备201。
96.在一示例性的实施方式中,当节点服务器202接收到的页面代码为通过electron桌面客户端打包生成的页面代码文件包时,所述节点服务器202还用于对所述页面代码文件包进行解压生成第一代码文件,并将生成的第一代码文件部署至所述静态资源服务中,以及将所述静态资源服务的网络地址返回给所述electron桌面客户端。
97.可以理解的是,当节点服务器202接收到的页面代码是以文件包的形式存在的时,需要先对页面代码文件包进行解压,之后才会将解压得到的第一代码文件部署至静态资源服务中,以便待调试设备可以从该静态资源服务中获取所述第一代码文件。
98.在一示例性的实施方式中,为了可以快速查找到存储在静态资源服务中的页面代码(或者第一代码文件),节点服务器202可以在生成所述会话凭证信息后,在所述静态资源服务中创建以所述会话凭证信息为名的目录,这样,后续在对页面代码文件(或者第一代码文件)进行部署时,即可以将接收到的页面代码文件包进行解压,并将解压后得到的页面代码部署至以所述会话凭证信息为名的目录下。
99.所述待调试设备203,用于从所述调试设备201中获取所述网络地址,并根据所述网络地址从所述静态资源服务中获取并加载所述页面代码,以打开待调试页面。
100.具体地,所述待调试设备203为需要通过调试设备201进行调试的设备。在本实施例中,当对待调试设备进行调试时,待调试设备会先从调试设备201中获取所述网络地址,以便可以根据该网络地址从静态资源服务器中获取并加载页面代码,从而打开待调试页面。
101.所述调试设备202,还用于通过安装在所述调试设备202中的调试工具对所述待调试页面进行调试。
102.具体地,所述调试工具为在对待调试设备203进行远程调试的过程中所需要使用的工具。在本实施例中,在进行调试时,在打开待调试页面后,即可以通过该调试工具直接对待调试页面进行远程的页面调试。其中,页面调试可以包括审查元素、console打印、查看network、内存管理等页面调试操作。
103.在一示例性的实施方式中,所述待调试设备203可以包括安装有所述混合模式移动应用的安卓设备。所述安卓设备指的是使用android系统的设备。
104.所述调试工具包括chrome devtools frontend调试工具,chrome devtools frontend调试工具是基于chrome devtools protocol跨端调试协议来进行页面调试的,该协议基于json格式的数据进行页面调试数据交互,无设备限制,市场上大多数基于chromium、blink内核的主流浏览器、webview都可以用于实现跨端调试。
105.所述混合模式移动应用,用于从所述静态资源服务中获取并加载所述第一代码文件,以打开所述待调试页面。
106.具体地,为了使得混合模式移动应用可以方便地从静态资源服务中获取并加载所述第一代码文件,electron桌面客户端在接收到节点服务器202返回的网络地址后,可以根
据所述网络地址生成对应的标识码,其中,所述标识码可以为二维码、条形码等。这样,混合模式移动应用在需要获取所述第一代码文件时,即可以对该条形码进行扫描,以从该条形码中获取所述网络地址,之后,根据网络地址从静态资源服务中获取并加载所述第一代码文件,以打开所述待调试页面。
107.在一实施方式中,为了便于后续混合模式移动应用可以与节点服务器202建立websocket长连接,所述electron桌面客户端还可以将会话凭证信息与所述网络地址进行拼接,并根据拼接后得到的字符信息生成对应的标识码;所述混合模式移动应用,还用于根据从所述标识码中识别出的会话凭证信息与所述节点服务器202建立所述第四websocket长连接。
108.所述混合模式移动应用,还用于根据所述第一代码文件中的所述代码段加载所述第三脚本,并通过所述第三脚本拦截所述待调试页面的网络请求,以及根据所述第一代码文件中的第一脚本创建所述第二模块热替换客户端。
109.具体地,由于获取到的第一页面代码中中包含有加载所述第三脚本(service worker的脚本)的代码段,因此,在加载该获第一页面代码文件的过程中,可以同时加载service worker的脚本,并通过所述service worker拦截所述待调试页面的网络请求,以便可以将拦截到的网络请求的请求地址修改为所述节点服务器202的api接口服务地址。
110.在一示例性的实施方式中,在service worker将拦截到的网络请求的请求地址修改为所述节点服务器202的api接口服务地址时,节点服务器202会将所述网络请求通过所述第一websocket长连接发给websocket客户端。所述websocket客户端在接收到所述网络请求后,通过所述electron桌面客户端对所述网络请求进行域名解析,并根据解析后得到的地址将所述网络请求发给服务端服务器。所述服务端服务器在接收到所述网络请求后,可以对所述网络请求进行响应。
111.其中,服务端服务器为部署api接口服务的服务器,通常会部署在多种环境,如测试、pre、正式环境,用于不同阶段的前后端联调。
112.在一示例性的实施方式中,当节点服务器202通过所述api接口服务地址接收到所述网络请求后,会对所述网络请求进行解析,并将解析后得到的第一网络请求进行封装成包含请求序号、请求地址、请求方式、请求头及请求体的第二网络请求。
113.在一示例性的实施方式中,服务端服务器在接收到所述网络请求后,会对所述网络请求进行响应,以生成响应结果,并将响应结果返回给所述electron桌面客户端。在本实施例中,当所述electron桌面客户端接收到服务端服务器返回的的响应结果后,可以对该响应结果进行封装,并将封装后的第一响应结果通过所述websocket客户端发送给所述节点服务器202;接着,节点服务器202会对接收到的所述第一响应结果进行解析,并将解析后得到的第二响应结果返回给所述service worker,以使所述service worker将所述第二响应结果作为所述待调试页面中包含的网络请求的响应结果。
114.在一实施方式中,为了便于对响应结果进行分析,当electron桌面客户端接收到所述第一响应结果后,会对接收到的第一响应结果进行封装成包含响应序号、响应状态码、响应状态信息、响应头及响应体的第二响应结果。
115.所述第二模块热替换客户端,用于与所述节点服务器建立第二websocket长连接。
116.具体地,所述第二模块热替换客户端为在加载第一页面代码文件时创建的
websocket客户端,用于与模块热替换服务端建立websocket长连接,交换hmr热更新json数据。本实施例中,所述第二模块热替换客户端在收到hmr热更新的json数据后,会主动加载打包后的热模块文件来替换待调试页面中的本地模块,达到热更新的效果。
117.所述混合模式移动应用,还用于开启webview调试模式,以使所述安卓设备根据所述webview调试模式调用chromium内核创建unix domain socket服务端。
118.具体地,webview调试模式为用于对应用进行远程调试的模式。unix domain socket服务端是一个用于提供给外界连接、通信、交换hybrid页面调试的json数据的服务,其进程id格式为@webview_devtools_remote_${pid},pid为webview进程id。该unix domain socket服务端在与hybrid应用进行通信时,是采用基于文件系统、不需要经过网络传输的ipc(inter

process

communication,进程间通信)通信方式,这种通信方式不需要经过网络打包、校验、拆包等过程,更可靠且效率更高。
119.所述混合模式移动应用,还用于与所述unix domain socket服务端建立第三websocket长连接,以及用于与所述节点服务器202建立第四websocket长连接。
120.具体地,混合模式移动应用,在与所述节点服务器202建立第四websocket长连接时,可以先从标识码中识别出会话凭证信息,之后,即可以凭借该会话凭证信息与所述节点服务器202建立第四websocket长连接,以便可以通过该第四websocket长连接预节点服务器202交换待调试页面的调试json数据。
121.在一示例性的实施方式中,所述unix domain socket服务端具有对应的进程标识信息,所述混合模式移动应用,还用于获取所述安卓设备中当前开启的多个进程的进程标识信息,并根据各个进程标识信息查找所述unix domain socket服务端;所述混合模式移动应用,还用于向所述unix domain socket服务端发起握手请求,并在握手成功后向所述unix domain socket服务端发送协议升级指令,以将当前通信协议升级为websocket协议。
122.具体地,所述进程标识信息为用于区别不同进程的信息,所述混合模式移动应用可以使用localsocket库根据当前打开的各个进程的进程标识信息找到对应的unix domain socket服务端对应的进程,然后向找到的进程发起握手请求,握手成功后向该socket套接字发送http报文升级当前通信协议为websocket协议。升级成功后混合模式移动应用就可以与unix domain socket server服务端基于websocket协议进行对应的报文通信。
123.所述websocket客户端,还用于开启桌面调试窗口,并在所述桌面调试窗口加载所述chrome devtools frontend调试工具。
124.具体地,所述chrome devtools frontend调试工具用于调试页面的前端ui,其可以从chromium内核中分离出来作为前端项目独立运行,通过websocket协议与chromium内核通信,交换json格式的调试数据,实现chrome内置devtools的开发效果。
125.所述chrome devtools frontend调试工具,用于与所述websocket服务端建立第五websocket长连接,以通过所述第五websocket长连接与所述chromium内核交换调试数据实现对所述待调试页面进行调试。
126.具体地,chrome devtools frontend调试工具在与websocket服务端建立第五websocket长连接时,可以先通过所述websocket客户端获取所述websocket服务端的地址信息,之后,即可以根据获取到的websocket服务端的地址信息与所述websocket服务端建
立websocket长连接。
127.在一实施方式中,所述chrome devtools frontend调试工具在通过所述第五websocket长连接实现对所述待调试页面进行调试时,可以通过所述第五websocket长连接发送调试请求给所述websocket服务端,以使所述websocket服务端可以依次通过所述websocket客户端、所述第一websocket长连接的通道、所述第四websocket长连接的通道及所述第三websocket长连接的通道将所述调试请求发送给所述unix domain socket服务端,实现对所述待调试页面进行调试。
128.在另一实施方式中,所述调试工具在通过所述第五websocket长连接实现对所述待调试页面进行调试时,还可以通过所述第五websocket长连接向所述websocket服务端发送所述待调试的hybrid页面的调试信息获取请求给所述websocket服务端,以使所述websocket服务端可以依次通过所述websocket客户端、所述第一websocket长连接的通道、所述第四websocket长连接的通道及所述第三websocket长连接的通道将将所述调试信息获取请求发送给所述unix domain socket服务端,从而实现从所述unix domain socket服务端获取所述待调试页面的调试信息,并根据获取到的调试信息进行调试操作。
129.在一示例性的实施方式中,为了及时对待调试页面进行调试,所述混合模式移动应用,还用于在与所述节点服务器202建立第四websocket长连接后,通过所述第四websocket长连接向所述节点服务器202发送所述待调试页面的调试通道已开启的信号;所述节点服务器202,还用于在接收到所述信号后,通过所述第一websocket长连接将所述信号发送给所述websocket客户端,以使所述websocket客户端在接收到所述信号后开启所述桌面调试窗口。
130.本实施例中,还有在接收到调试通道已开启的信号时,才会开启所述桌面调试窗口,以便正式开始对待调试页面进行页面调试。
131.所述节点服务器202,还用于在所述第二websocket长连接建立后,通过所述第一websocket长连接通知所述electron桌面客户端在所述第一模块热替换客户端与所述模块热替换服务端之间建立第六websocket长连接,以通过所述第六websocket长连接实现对页面的热更新。
132.具体地,节点服务器202在所述第二websocket长连接建立后,会通过第一websocket长连接通知所述electron桌面客户端在所述第一模块热替换客户端与所述模块热替换服务端之间建立第六websocket长连接,这样,所述第二模块热替换客户端可以依次通过所述第二websocket长连接的通道、所述第一websocket长连接的通道以及所述第六websocket长连接的通道将页面热更新的数据请求发送给所述模块热替换服务端,实现对所述页面热更新的数据的获取。
133.在一示例性的实施方式中,当页面代码发生修改后,所述electron桌面客户端还可以通过所述模块热替换服务端依次经过所述第六websocket长连接的通道、所述第一websocket长连接的通道及所述第二websocket长连接的通道将修改后的页面代码发送给所述第二模块热替换客户端,以通过所述第二模块热替换客户端根据修改后的页面代码实现对页面的热更新。
134.在一示例性的实施方式中,所述待调试设备201还包括ios模拟器,所述调试工具还包括safari浏览器,其中:
135.所述electron桌面客户,还用于创建applescript自动化服务及ios模拟器自动化服务。
136.具体地,applescript是苹果公司创建的一种脚本语言,适用于macos 7.1及更高版本,允许用户直接控制可编写脚本的macos应用程序及macos本身的部分内置功能与应用,可以帮助使用者在macos中使用applescript脚本控制应用程序,如系统事件、safari浏览器、ios simulator模拟器等,通过该applescript编写的applescript自动化服务可以用于打开safari浏览器的safari开发者工具。
137.ios模拟器自动化服务为使用node

simctl三方库执行xcrun simctl命令对ios模拟器进行控制,包括启动、关闭模拟器,安装app,打开url等的服务。
138.其中,xcrun是macos下xcode应用提供的命令行工具,用于对xcode开发相关的功能进行控制。
139.simctl是xcrun工具的一个子命令,用于控制模拟器,提供了模拟器的启动、关闭、安装应用、打开url等功能。
140.node

simctl是由appium提供的simctl工具的node版本三方库,用于在node程序中对ios simulator模拟器进行控制。
141.所述electron桌面客户端,还用于通过所述ios模拟器自动化服务开启所述ios模拟器,并在所述ios模拟器开启后,通过所述ios模拟器自动化服务安装所述混合模式移动应用,以及在所述混合模式移动应用安装完成后,通过所述ios模拟器自动化服务在所述ios模拟器中打开所述网络地址,以使得所述混合模式移动应用调用wkwebview内核加载所述待调试页面。
142.具体地,ios模拟器是一种用于模拟真实的ios设备的软件,本实施例中,为了节省调试过程中需要花费的时间,通过ios模拟器自动化服务自动启动ios模拟器,并在开启ios模拟器后,通过ios模拟器自动化服务安装所述混合模式移动应用,以及在所述混合模式移动应用安装完成后,通过所述ios模拟器自动化服务在所述ios模拟器中打开所述网络地址,从而实现全自动化的在ios模拟器中安装所述混合模式移动应用,并通过所述混合模式移动应用打开所述待调试页面。
143.wkwebview内核是现代webkit api在ios 8和os x yosemite应用中的核心部分。它代替了uikit中的uiwebview和appkit中的webview,提供了统一的跨双平台api(ios和os)。
144.在一示例性的实施方式中,为了避免在同一时刻有多个ios模拟器开启,在本实施例中,在通过所述ios模拟器自动化服务开启所述ios模拟器时,所述electron桌面客户端,可以先通过所述ios模拟器自动化服务关闭当前所有已开启的ios模拟器,并在所有的ios模拟器关闭后,重新开启默认或用户选中的ios模拟器。之后,可以通过所述ios模拟器自动化服务安装所述混合模式移动应用。
145.在一示例性的实施方式中,在完成混合模式移动应用的安装后,所述electron桌面客户端,还可以通过所述ios模拟器自动化服务安装测试环境证书(比如,ssl证书),以便所述混合模式移动应用可以访问测试环境的https服务。
146.在一示例性的实施方式中,所述electron桌面客户端通过所述ios模拟器自动化服务在所述ios模拟器中打开所述网络地址后,可以通过url schema开启所述混合模式移
动应用,以使得所述混合模式移动应用可以调用wkwebview内核加载所述待调试页面。
147.其中,url schema是当前大多数app都支持的,其具有在真机中的浏览器打开url时可以唤起app并打开相应的页面的功能。
148.自ios 8开始,wkwebview逐步替代uiwebview,成为ios app主要使用的webview,wkwebview基于webkit内核。
149.在一示例性的实施方式中,所述混合模式移动应用调用wkwebview内核加载所述待调试页面包括:所述混合模式移动应用调用所述wkwebview内核开启wkwebview内核调试服务,以及调用所述wkwebview内核采用webkit引擎渲染所述待调试页面。
150.具体地,wkwebview内核调试服务就是wkwebview内核在本地开启的webview调试服务,类似android的chromium内核调试服务。但由于ios的限制,常规情况下,第三方应用无法控制wkwebview的渲染与内部调试,也无法接触该wkwebview内核调试服务,只有safari开发者工具可以与该服务通信并调试,调试协议基于类webkit内核调试协议。在开启内核调试服务后,所述wkwebview内核就会采用webkit引擎渲染所述待调试页面。
151.所述electron桌面客户端,还用于通过applescript自动化服务从所述safari浏览器中打开safari开发者工具。
152.具体地,所述electron桌面客户端可以通过所述applescript自动化服务模拟点击所述safari浏览器中的所述safari开发者工具,以打开所述safari开发者工具。
153.其中,所述safari开发者工具是由safari浏览器提供的用于调试ios真机或模拟器的工具,其类似chrome devtools工具,可以进行元素审查、console打印、管理network网络请求等调试功能。
154.所述safari开发者工具,用于通过safari调试协议与所述wkwebview内核建立连接通道,并通过所述连接通道实现对待调试页面进行调试。
155.具体地,safari开发者工具与ios模拟器的wkwebview内核调试服务在建立连接通道后,可以基于类webkit调试协议通信,交换页面调试数据,进行完整功能性的页面调试。
156.本技术中的混合模式移动应用调试系统,可以让前端开发人员直接使用单一pc软件即可达到在本地开发常规前端项目,在真机、模拟器上显示页面效果,并可以在pc软件上直接进行完整地前端页面功能调试,直接在真机上预览前端与native交互的真实效果,大大提升前端开发人员开发hybrid项目的便利性与效率。
157.参照图3,其为本技术一实施例的混合模式移动应用调试方法,应用于包括调试设备、节点服务器及待调试设备的调试系统中,其中,所述调试系统为上述实施例中的调试系统,在本实施例中不再赘述。
158.在本实施例中,所述方法包括:
159.步骤s30,通过所述调试设备将待调试的混合模式移动应用的页面代码上传至所述节点服务器中;
160.步骤s31,通过所述节点服务器将接收到的页面代码部署至静态资源服务中,并将所述静态资源服务的网络地址返回给所述调试设备;
161.步骤s32,通过所述待调试设备从所述调试设备中获取所述网络地址,并根据所述网络地址从所述静态资源服务中获取并加载所述页面代码,以打开待调试页面;
162.步骤s33,通过安装在所述调试设备中的调试工具对所述待调试页面进行调试。
163.本技术中的混合模式移动应用调试方法,可以让前端开发人员直接使用单一pc软件即可达到在本地开发常规前端项目,在真机、模拟器上显示页面效果,并可以在pc软件上直接进行完整地前端页面功能调试,直接在真机上预览前端与native交互的真实效果,大大提升前端开发人员开发hybrid项目的便利性与效率。
164.以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到至少两个网络单元上。可以根据实际的需要筛选出其中的部分或者全部模块来实现本技术实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
165.通过以上的实施方式的描述,本领域普通技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read

onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。
166.最后应说明的是:以上各实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述各实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献