CN108415844B - 插件化调试方法及装置 - Google Patents
插件化调试方法及装置 Download PDFInfo
- Publication number
- CN108415844B CN108415844B CN201810242137.6A CN201810242137A CN108415844B CN 108415844 B CN108415844 B CN 108415844B CN 201810242137 A CN201810242137 A CN 201810242137A CN 108415844 B CN108415844 B CN 108415844B
- Authority
- CN
- China
- Prior art keywords
- plug
- debugging
- host
- path
- debugged
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种插件化调试方法及装置,该插件化调试方法包括:获取插件调试指令;基于所述插件调试指令确定插件调试路径,以使宿主基于所述插件调试路径对待调试插件进行调试。本发明中,实现了自动的插件化调试处理,提升了处理效率,也节省了用户的时间。
Description
技术领域
本发明涉及应用软件技术领域,特别是涉及一种插件化调试方法及装置。
背景技术
在现有的Android系统开发领域中,对于插件化方案的讨论一直热度不减,尤以插件化框架RePlugin的相关插件化方案为当下主流方案。但无论是插件化框架RePlugin,还是现有的其他插件化方案,在插件化方案调试过程中,若需要代码输入时,均需要用户进行代码的手动输入编译,通过编译一个debug版本,进行相应代码的手动添加,从而在debugger调试时,实现相应的调试。
然而现有的插件化调试处理,在每一次调试时均需要进行人工的手动处理,不仅耗时,而且处理上不方便,需要浪费大量的人力,效率低下。
发明内容
本发明提供插件化调试方法及装置,以在需要插件化调试时实现自动的调试处理,提升了处理效率。
本发明提供了一种插件化调试方法,包括:
获取插件调试指令;
基于所述插件调试指令确定插件调试路径,以使宿主基于所述插件调试路径对待调试插件进行调试。
优选地,所述基于所述插件调试指令确定插件调试路径,包括如下至少一项:
基于用户输入的插件调试指令确定插件调试路径;
基于宿主发送的插件调试指令确定插件调试路径。
优选地,所述基于用户输入的插件调试指令确定插件调试路径,包括:
接收用户输入的插件调试指令;
对所述插件调试指令进行解析,得到待调试插件的标识信息;
基于所述标识信息确定所述待调试插件的插件调试路径。
优选地,所述基于所述标识信息确定所述待调试插件的插件调试路径,包括:
基于所述标识信息查询所属宿主,确定所属宿主中与所述标识信息对应的插件的插件调试路径;或
基于所述标识信息向对应的插件发送路径请求消息;
接收所述插件返回的路径响应消息,获取所述路径响应消息中携带的对应所述标识信息的插件调试路径。
优选地,所述基于宿主发送的插件调试指令确定插件调试路径,包括:
获取所述宿主发送的插件调试指令;
解析所述插件调试指令,得到待调试插件的标识信息;
确定所述待调试插件的标识信息与所属插件的标识信息是否一致;
并在一致时,确定所属插件的插件调试路径为所述待调试插件的插件调试路径。
优选地,还包括:
向所述宿主发送通知消息,并在所述通知消息中携带所述待调试插件的插件调试路径。
本发明还提供了一种插件化调试装置,包括:
获取单元,用于获取插件调试指令;
确定单元,用于基于所述插件调试指令确定插件调试路径。
优选地,所述确定单元,用于基于用户输入的插件调试指令确定插件调试路径;或,基于宿主发送的插件调试指令确定插件调试路径。
优选地,所述确定单元,具体用于接收用户输入的插件调试指令;对所述插件调试指令进行解析,得到待调试插件的标识信息;基于所述标识信息确定所述待调试插件的插件调试路径。
优选地,所述确定单元,进一步用于基于所述标识信息查询所属宿主,确定所属宿主中与所述标识信息对应的插件的插件调试路径;或基于所述标识信息向对应的插件发送路径请求消息;接收所述插件返回的路径响应消息,获取所述路径响应消息中携带的对应所述标识信息的插件调试路径。
优选地,所述确定单元,具体用于获取所述宿主发送的插件调试指令;解析所述插件调试指令,得到待调试插件的标识信息;确定所述待调试插件的标识信息与所属插件的标识信息是否一致;并在一致时,确定所属插件的插件调试路径为所述待调试插件的插件调试路径。
优选地,还包括:
发送单元,用于向所述宿主发送通知消息,并在所述通知消息中携带所述待调试插件的插件调试路径。
本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现上述插件化调试方法。
本发明还提供了一种计算设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行上述插件化调试方法对应的操作。
与现有技术相比,本发明至少具有以下优点:
通过获取插件调试指令;并基于所述插件调试指令确定插件调试路径,以使宿主基于所述插件调试路径对待调试插件进行调试,从而实现了自动的插件化调试处理,提升了处理效率,也节省了用户的时间,同时,由于预先的参数预设,避免了人为输入代码时的错误输入,进而提升了调试的准确率。
附图说明
图1是本发明实施例所提供的插件化调试方法流程图;
图2是本发明实施例所提供的应用于宿主的插件化调试方法具体实现流程图;
图3是本发明实施例所提供的应用于插件的插件化调试方法具体实现流程图;
图4是本发明实施例所提供的插件化调试装置结构图。
具体实施方式
本发明提出一种插件化调试方法及装置,下面结合附图,对本发明具体实施方式进行详细说明。
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
插件化框架RePlugin是一套完整的、稳定的、适合全面使用的占坑类插件化方案。相比其他插件,它只hook了ClassLoader,最大程度的保证了稳定性、兼容性和可维护性。它的优势包括两个针对群体,即用户和开发者。
对于用户而言
一切按需:利用插件化方案,可以让用户的应用变得“小而精”。只有当用户需要使用某个特定功能时,才可以下载并开启,且可以随时卸载插件。这不仅可以减小APK大小、节省流量,还可明显的减少内存、内部存储的占用,将更多空间让给珍贵的相片、文档等资料。
随时体验新版:用户不用去应用市场等到大包升级,可以随时体验到新版的应用。现在红极一时的插件化、动态化(RN类)、热更新技术,都或多或少的在围绕此点而展开,可见其对用户带来的巨大价值。
对于开发者而言
发版灵活:不用等市场上线、等用户主动升级,结果错过宝贵的时机。插件化方案可让开发者做到“随时发版”,不受“发版窗口期”的限制。甚至可针对不同地域、不同用户群、不同时段来更新,且可以快速验证自己的构想。
组织结构灵活:一旦发版变得足够灵活,则组织结构上就可以由原来的“统一作战”变成“百团作战”,每个团队都在开发“自己的插件单品”,制定自己的发版计划模块思维:可以让团队形成“模块意识”。当然,插件间、插件与宿主间允许有适度的耦合,但不会是“毫无控制”的那种。这让开发者们意识到,我们之间是“插件间的协定”,而非“同一屋檐下,随便胡来”,迫使团队以全新又合适的方式来开发应用。
Android原生优势:和动态化(RN类)不同,开发者可以使用最熟悉的Java/Kotlin语言,及各种原生API来开发插件。这使得应用能和系统更“契合”,充分利用原生的各种优势,且在性能上几乎感受不到影响。
对于插件化框架Replugin而言,其包括4个相关的插件结构,分别为:
replugin-host-gradle,作用于宿主的脚本项目;
replugin-host-library,作用于宿主的依赖库;
replugin-plugin-gradle,作用于插件的脚本项目;
replugin-plugin-library,作用于插件的依赖库。
对于现有技术中所要解决的技术问题,基于上述插件化结构Replugin的相关介绍,下面对本发明所提供的插件化调试方案进行具体的阐述。
如图1所示,为本发明所提供的插件化调试方法流程图,该流程包括如下步骤:
步骤101,获取插件调试指令。
步骤102,基于插件调试指令确定插件调试路径。
本步骤中,基于所确定的插件调试路径,以使得宿主能够基于该插件调试路径对待调试插件进行相应的调试处理。
通过上述处理流程的提供,实现了自动的插件化调试处理,提升了处理效率,也节省了用户的时间。
基于上述的插件化框架,本发明所提供的插件化调试方法可以应用于该插件化框架的宿主侧,也可以用于该插件化框架的插件侧,下面分别就该两种应用场景进行阐述。
其中,在宿主侧,该插件化调试处理方式可以包括插件的安装、插件的卸载、插件的更新、宿主当前运行信息的采集,以及插件当前运行信息的采集等,当然,上述所列举各插件化调试处理方式并非穷举,仅是为了介绍插件化调试处理所列举的几种调试方式,对于其他的插件化调试处理方式也均在本发明的保护范围之内。
如图2所示,为本发明实施例所提供的插件化调试方法具体实现流程图,该插件化调试方法应用于宿主中,具体包括如下步骤:
步骤201,接收用户输入的插件调试指令。
其中,在用户输入插件调试指令之前,会在该宿主中针对插件化调试处理进行相关函数的预埋处理,以为插件化调试提供对应的处理方式,实现了对应的调试处理,提升了调试效率。基于前述所列举的几种插件化调试处理方式,下面分别对其所分别对应的预埋的函数进行介绍,包括:
1.1、预埋调试接口协议广播接收器DebuggerReceiver类。
1.1.1、在DebuggerReceiver类继承BroadcastReviceiver广播器类,并实现了里面的onReceive回调方法。在程序启动时,根据全局配置调试开关的状态来确定是否注册广播,从而选择是否开启该调试装置,该全局配置调试开关在云控配置文件里。
1.2、预埋相关安装插件代码函数,如下:
1.2.1、安装标准的apk函数onInstallByApk(String path,booleanimmediately);其中,path表示apk放置在移动终端存储卡上面的位置,immediately表示该插件是否立即启用生效,函数返回值表示apk插件是否安装成功。
1.2.2、安装标准的apk函数onInstallByPn(String path,booleanimmediately);其中,path表示pn(一种特殊定制的插件,加载更快,安全性更高)放置在移动终端存储卡上面的位置,immediately表示该插件是否立即启用生效,函数返回值表示该pn插件是否安装成功。
1.3、预埋启动插件代码函数:
1.3.1、启动插件函数为onStartActivity(Context context,String plugin,String activity);其中,context表示程序上下文(标准Android的context参数即可),plugin表示插件的名字(这个名字在宿主中唯一表示一个插件实体,不可重复),activity表示插件中所期望启动的Activity容器(该Activity需要传入类的全路径字符串),函数返回值表示插件是否启动成功。另外该函数可以启动任何形式的插件,包括内置插件(宿主apk发布的时候已经提前内置的插件)和外置插件(通过云控配置,动态下发和存储卡安装成功的动态插件)。
1.4、预埋卸载插件代码函数:
1.4.1、卸载插件函数为onUninstallPlugin(Context context,String plugin);其中,context表示程序上下文(传入标准Android的context参数即可),plugin表示插件的名字(这个名字在宿主中唯一表示一个插件实体,不可重复),函数返回值表示该插件是否卸载成功。另外该函数可以启动任何形式的插件,包括内置插件(宿主apk发布的时候已经提前内置的插件)和外置插件(通过云控配置,动态下发和存储卡安装成功的动态插件)。
1.5、预埋得到宿主当前运行信息采集函数代码:
1.5.1、宿主采集函数为getHostRunMsg(Context context,String mode,LongstartTime,Long finshTime,Long ext);其中,context表示程序上下文(传入标准android的context参数即可),Mode表示采集方式,有下面几种方式:
1.5.1.1、mode=“onceTimeBucket”时,表示采集时间段,startTime表示开始时间NTP时刻毫秒。finshTime表示结束NTP时刻毫秒。ext参数此时不生效。
1.5.1.2、mode=“onceTimeDelay”时,表示延时多久后采集一次,startTime表示延时多久后采集一次(单位毫秒)。finshTime表示采集时长。ext参数此时不生效。
1.5.1.3、mode=“cycleTimeBucket”时,表示时刻后开始周期采集,startTime表示开始采集时间NTP时刻毫秒。finshTime表示采集时长。ext表示采样周期时间(单位毫秒),一个完整的采样周期是采集时长和间歇时间的和。
1.5.1.4、mode=“cycleTimeDelay”时,表示延时多久后开始周期采集,startTime表示延时多久后开始采集(单位毫秒)。finshTime表示采集时长。ext表示采样周期时间(单位毫秒),一个完整的采样周期是采集时长和间歇时间的和。
1.5.2、宿主采集函数getHostRunMsg(Context context,String mode,LongstartTime,LongfinshTime,Longext),其函数返回值表示是否配置采集参数成功。
1.5.3、宿主采集函数getHostRunMsg(Context context,String mode,LongstartTime,Long finshTime,Long ext)执行成功后,会根据云控配置的本地变量开关,选择启动一个进程或线程异步生成采样的数据结果文件到手机存储卡云控配置的目录地址中。该文件是经过加密的。用户看到都是密文。需要配套的上位机软件解密才能看到明文。
1.6、预埋得到插件当前运行信息采集函数代码:
1.6.1、插件采集函数为getPluginRunMsg(Context context,String plugin,String mode,Long startTime,Long finshTime,Long ext),context表示程序上下文(传入标准Android的context参数即可)。plugin表示插件的名字(这个名字在宿主中唯一表示一个插件实体,不可重复)。mode表示采集方式,有下面几种方式:
1.6.1.1、mode=“onceTimeBucket”时,表示采集时间段,startTime表示开始时间NTP时刻毫秒。finshTime表示结束NTP时刻毫秒。ext参数此时不生效。
1.6.1.2、mode=“onceTimeDelay”时,表示延时多久后采集一次,startTime表示延时多久后采集一次(单位毫秒)。finshTime表示采集时长。ext参数此时不生效。
1.6.1.3、mode=“cycleTimeBucket”时,表示时刻后开始周期采集,startTime表示开始采集时间NTP时刻毫秒。finshTime表示采集时长。ext表示采样周期时间(单位毫秒),一个完整的采样周期是采集时长和间歇时间的和。
1.6.1.4、mode=“cycleTimeDelay”时,表示延时多久后开始周期采集,startTime表示延时多久后开始采集(单位毫秒)。finshTime表示采集时长。ext表示采样周期时间(单位毫秒),一个完整的采样周期是采集时长和间歇时间的和。
1.6.2、插件采集函数getPluginRunMsg(Context context,String plugin,String mode,Long startTime,Long finshTime,Long ext),其函数返回值表示采集参数是否配置成功。
1.6.3、插件采集函数getPluginRunMsg(Context context,String plugin,String mode,Long startTime,Long finshTime,Long ext)执行成功后,会根据云控配置的本地变量开关,选择启动一个进程或线程异步生成采样的数据结果文件到手机存储卡云控配置的目录地址中,该文件是经过加密的,用户看到都是密文,需要配套的上位机软件解密才能看到明文。
步骤202,基于用户输入的插件调试指令确定插件调试路径。
其中,该步骤还可以具体包括:
步骤2021,接收用户输入的插件调试指令。
步骤2022,对插件调试指令进行解析,得到待调试插件的标识信息。
步骤2023,基于标识信息确定待调试插件的插件调试路径。
进一步地,所述基于所述标识信息确定所述待调试插件的插件调试路径,包括:
基于所述标识信息查询所属宿主,确定所属宿主中与所述标识信息对应的插件的插件调试路径;或
基于所述标识信息向对应的插件发送路径请求消息;
接收所述插件返回的路径响应消息,获取所述路径响应消息中携带的对应所述标识信息的插件调试路径。
步骤203,宿主根据该确定的插件调试路径进行对应的插件调试处理。
对于宿主和插件二者而言,其彼此间的通信纽带为广播命令,具体为标准的adbshell am broadcast命令,简称adb命令。在一具体实施中,可以利用该adb命令和前述宿主中预埋的函数进行通信和调试执行的控制。如,"adb shell am broadcast-acom.qihoo360.mobilesafe.replugin.install-epath/Users/roc/net.apk-e immediately true"来向com.qihoo360.mobilesafe包的宿主安装net.apk的插件。
在插件侧,该插件化调试处理方式可以包括宿主app的强制停止,将apk或pn文件推送到移动终端,宿主app的启动,标准插件的安装,pn插件的安装,插件运行,获取宿主信息和插件信息,当然,上述所列举各插件化调试处理方式并非穷举,仅是为了介绍插件化调试处理所列举的几种调试方式,对于其他的插件化调试处理方式也均在本发明的保护范围之内。
如图3所示,为本发明实施例所提供的插件化调试方法具体实现流程图,该插件化调试方法应用于插件中,尤其用于插件replugin-plugin-gradle中,具体包括如下步骤:
步骤301,接收用户输入的插件调试指令。
其中,在用户输入插件调试指令之前,由于插件replugin-plugin-gradle中封装有adb shell am broadcast命令,故在开发者需要调试当前代码工程的插件时,只要执行点击可视化环境或者手动输出插件replugin-plugin-gradle里面对应的Task任务就可以完成调试。基于此,会在插件replugin-plugin-gradle中针对插件化调试处理进行相关的Task任务预设,以为插件化调试时提供对应的处理方式,实现了对应的调试处理,提升了调试效率。基于前述所列举的几种插件化调试处理方式,下面分别对其所分别对应的预埋的Task任务进行介绍,包括:
2.1.1、强制停止宿主app:核心实现原理是发送广播"${adbFile.absolutePath}shell am force-stop${config.hostApplicationId}",其中${adbFile.absolutePath}表示标准adb工具文件所在的位置,${config.hostApplicationId}表示宿主apk的包名。
2.1.2、推送apk或pn文件到移动终端:核心实现原理是发送广播"${adbFile.absolutePath}push${apkFile.absolutePath}${config.phoneStorageDir}",其中,${adbFile.absolutePath}表示标准adb工具文件所在的位置,${apkFile.absolutePath}表示插件apk或pn插件所在开发机上的文件路径,${config.phoneStorageDir}表示插件apk或pn插件需要推送到移动终端存储卡上的位置。
2.1.3、启动宿主app:核心实现原理是发送广播"${adbFile.absolutePath}shellam start-n\"${config.hostApplicationId}/${config.hostAppLauncherActivity}\"-aandroid.intent.action.MAIN-c android.intent.category.LAUNCHER";其中,${adbFile.absolutePath}表示标准adb工具文件所在的位置,${config.hostApplicationId}表示宿主apk的包名。${config.hostAppLauncherActivity}代表宿主配置的Launcher的activtity。
2.1.4、安装标准插件:向宿主发送广播"${adbFile.absolutePath}shell ambroadcast-a${config.hostApplicationId}.replugin.install-e path${apkPath}-eimmediately${immediately}";其中,${adbFile.absolutePath}表示标准adb工具文件所在的位置,${config.hostApplicationId}表示宿主的包名,${apkPath}表示apk所在的移动终端存储卡的路径,${immediately}表示是否立即生效。
2.1.5、安装特制pn插件:向宿主发送广播"${adbFile.absolutePath}shell ambroadcast-a${config.hostApplicationId}.replugin.install_with_pn-e path${apkPath}-e immediately${immediately}";其中,${adbFile.absolutePath}表示标准adb工具文件所在的位置,${config.hostApplicationId}表示宿主的包名,${apkPath}表示apk所在的移动终端存储卡的路径,${immediately}表示是否立即生效。
2.1.6、运行插件:核心实现原理是发送广播"${adbFile.absolutePath}shell ambroadcast-a${config.hostApplicationId}.replugin.start_activity-e plugin${config.pluginName}";其中,${adbFile.absolutePath}代表标准adb工具文件所在的位置,${config.hostApplicationId}代表宿主的包名,${config.pluginName}代表plugin插件的名字(这个名字是宿主中唯一表示一个插件实体,不可重复)。
2.1.7、得到宿主信息:向宿主发送广播"${adbFile.absolutePath}shell ambroadcast-a${config.hostApplicationId}.replugin.getHostRunMsg-e mode${mode}-estartTime${startTime}-e finshTime${finshTime}-e ext${ext}";其中,${adbFile.absolutePath}代表标准adb工具文件所在的位置,${config.hostApplicationId}代表宿主的包名,${mode}代表采集方式,${startTime},${finshTime},${ext}根据采集方式不同有不同的意义,具体参考前述1.5.1中的相关介绍。
2.1.8、得到插件信息:向宿主发送广播"${adbFile.absolutePath}shell ambroadcast-a${config.hostApplicationId}.replugin.getPluginRunMsg-e plugin${config.pluginName}-e mode${mode}-e startTime${startTime}-e finshTime${finshTime}-e ext${ext}";其中,${adbFile.absolutePath}代表标准adb工具文件所在的位置,${config.hostApplicationId}代表宿主的包名,${config.pluginName}代表plugin代表插件的名字(这个名字是宿主中唯一表示一个插件实体,不可重复),${mode}代表采集方式,${startTime},${finshTime},和${ext}根据采集方式不同有不同的意义,具体参考前述1.6.1中的相关介绍。
步骤302,基于宿主发送的插件调试指令确定插件调试路径。
其中,该步骤还可以具体包括:
步骤3021,获取所述宿主发送的插件调试指令。
步骤3022,解析所述插件调试指令,得到待调试插件的标识信息。
步骤3023,确定所述待调试插件的标识信息与所属插件的标识信息是否一致。
当一致时,转到步骤3024,否则结束流程。
步骤3024,确定所属插件的插件调试路径为所述待调试插件的插件调试路径。
步骤303,向所述宿主发送通知消息。
其中,在该通知消息中会携带待调试插件的插件调试路径。
步骤304,宿主根据该插件调试路径进行对应的插件调试处理。
基于上述本发明所提供的技术方案,实现了自动的插件化调试处理,提升了处理效率,也节省了用户的时间,同时,由于预先的参数预设,避免了人为输入代码时的错误输入,进而提升了调试的准确率。
基于上述本发明所提供的插件化调试方法,本发明还提供了一种插件化调试装置,如图4所示,包括:
获取单元41,用于获取插件调试指令;
确定单元42,用于基于所述插件调试指令确定插件调试路径。
优选地,所述确定单元42,用于基于用户输入的插件调试指令确定插件调试路径;或,基于宿主发送的插件调试指令确定插件调试路径。
优选地,所述确定单元42,具体用于接收用户输入的插件调试指令;对所述插件调试指令进行解析,得到待调试插件的标识信息;基于所述标识信息确定所述待调试插件的插件调试路径。
优选地,所述确定单元42,进一步用于基于所述标识信息查询所属宿主,确定所属宿主中与所述标识信息对应的插件的插件调试路径;或基于所述标识信息向对应的插件发送路径请求消息;接收所述插件返回的路径响应消息,获取所述路径响应消息中携带的对应所述标识信息的插件调试路径。
优选地,所述确定单元42,具体用于获取所述宿主发送的插件调试指令;解析所述插件调试指令,得到待调试插件的标识信息;确定所述待调试插件的标识信息与所属插件的标识信息是否一致;并在一致时,确定所属插件的插件调试路径为所述待调试插件的插件调试路径。
优选地,还包括:
发送单元43,用于向所述宿主发送通知消息,并在所述通知消息中携带所述待调试插件的插件调试路径。
本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现上述插件化调试方法。
本发明还提供了一种计算设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行上述插件化调试方法对应的操作。
本发明中,通过获取插件调试指令;并基于所述插件调试指令确定插件调试路径,以使宿主基于所述插件调试路径对待调试插件进行调试,从而实现了自动的插件化调试处理,提升了处理效率,也节省了用户的时间,同时,由于预先的参数预设,避免了人为输入代码时的错误输入,进而提升了调试的准确率。
本技术领域技术人员可以理解,可以用计算机程序指令来实现这些结构图和/或框图和/或流图中的每个框以及这些结构图和/或框图和/或流图中的框的组合。本技术领域技术人员可以理解,可以将这些计算机程序指令提供给通用计算机、专业计算机或其他可编程数据处理方法的处理器来实现,从而通过计算机或其他可编程数据处理方法的处理器来执行本发明公开的结构图和/或框图和/或流图的框或多个框中指定的方案。
其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明序号仅仅为了描述,不代表实施例的优劣。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。
Claims (14)
1.一种插件化调试方法,其特征在于,包括:
在宿主中预埋调试函数以进行预先的参数预设,所述调试函数用于所述宿主在对待调试插件调试时提供调试处理方式;所述调试函数至少包括调试接口协议广播接收器、安装插件代码函数、启动插件代码函数、卸载插件代码函数、获取宿主当前运行信息采集函数以及获取插件当前运行信息采集函数中的至少一种;
在插件中预埋Task任务以进行预先的参数预设,所述Task任务用于所述宿主在对待调试插件调试时提供调试处理方式;所述Task任务至少包括:强制停止宿主任务、推送文件任务、启动宿主任务、安装插件任务、运行插件任务、获取宿主信息任务以及获取插件信息任务中的至少一种;
获取插件调试指令;
基于所述插件调试指令确定插件调试路径,以使宿主基于所述插件调试路径采用所述调试函数和/或所述Task任务对待调试插件进行调试。
2.如权利要求1所述方法,其特征在于,所述基于所述插件调试指令确定插件调试路径,包括如下至少一项:
基于用户输入的插件调试指令确定插件调试路径;
基于宿主发送的插件调试指令确定插件调试路径。
3.如权利要求2所述方法,其特征在于,所述基于用户输入的插件调试指令确定插件调试路径,包括:
接收用户输入的插件调试指令;
对所述插件调试指令进行解析,得到待调试插件的标识信息;
基于所述标识信息确定所述待调试插件的插件调试路径。
4.如权利要求3所述方法,其特征在于,所述基于所述标识信息确定所述待调试插件的插件调试路径,包括:
基于所述标识信息查询所属宿主,确定所属宿主中与所述标识信息对应的插件的插件调试路径;或
基于所述标识信息向对应的插件发送路径请求消息;
接收所述插件返回的路径响应消息,获取所述路径响应消息中携带的对应所述标识信息的插件调试路径。
5.如权利要求2所述方法,其特征在于,所述基于宿主发送的插件调试指令确定插件调试路径,包括:
获取所述宿主发送的插件调试指令;
解析所述插件调试指令,得到待调试插件的标识信息;
确定所述待调试插件的标识信息与所属插件的标识信息是否一致;
并在一致时,确定所属插件的插件调试路径为所述待调试插件的插件调试路径。
6.如权利要求5所述方法,其特征在于,还包括:
向所述宿主发送通知消息,并在所述通知消息中携带所述待调试插件的插件调试路径。
7.一种插件化调试装置,其特征在于,包括:
获取单元,用于获取插件调试指令;
确定单元,用于基于所述插件调试指令确定插件调试路径,以使宿主基于所述插件调试路径采用调试函数和/或Task任务对待调试插件进行调试;
所述插件化调试装置具体用于在宿主中预埋调试函数以进行预先的参数预设,所述调试函数用于所述宿主在对待调试插件调试时提供调试处理方式;所述调试函数至少包括调试接口协议广播接收器、安装插件代码函数、启动插件代码函数、卸载插件代码函数、获取宿主当前运行信息采集函数以及获取插件当前运行信息采集函数中的至少一种;以及,在插件中预埋Task任务以进行预先的参数预设,所述Task任务用于所述宿主在对待调试插件调试时提供调试处理方式;所述Task任务至少包括:强制停止宿主任务、推送文件任务、启动宿主任务、安装插件任务、运行插件任务、获取宿主信息任务以及获取插件信息任务中的至少一种。
8.如权利要求7所述装置,其特征在于,所述确定单元,用于基于用户输入的插件调试指令确定插件调试路径;或,基于宿主发送的插件调试指令确定插件调试路径。
9.如权利要求8所述装置,其特征在于,所述确定单元,具体用于接收用户输入的插件调试指令;对所述插件调试指令进行解析,得到待调试插件的标识信息;基于所述标识信息确定所述待调试插件的插件调试路径。
10.如权利要求9所述装置,其特征在于,所述确定单元,进一步用于基于所述标识信息查询所属宿主,确定所属宿主中与所述标识信息对应的插件的插件调试路径;或基于所述标识信息向对应的插件发送路径请求消息;接收所述插件返回的路径响应消息,获取所述路径响应消息中携带的对应所述标识信息的插件调试路径。
11.如权利要求8所述装置,其特征在于,所述确定单元,具体用于获取所述宿主发送的插件调试指令;解析所述插件调试指令,得到待调试插件的标识信息;确定所述待调试插件的标识信息与所属插件的标识信息是否一致;并在一致时,确定所属插件的插件调试路径为所述待调试插件的插件调试路径。
12.如权利要求11所述装置,其特征在于,还包括:
发送单元,用于向所述宿主发送通知消息,并在所述通知消息中携带所述待调试插件的插件调试路径。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现权利要求1-6中任一项所述的插件化调试方法。
14.一种计算设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如权利要求1-6中任一项所述的插件化调试方法对应的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810242137.6A CN108415844B (zh) | 2018-03-22 | 2018-03-22 | 插件化调试方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810242137.6A CN108415844B (zh) | 2018-03-22 | 2018-03-22 | 插件化调试方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108415844A CN108415844A (zh) | 2018-08-17 |
CN108415844B true CN108415844B (zh) | 2022-03-08 |
Family
ID=63132208
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810242137.6A Active CN108415844B (zh) | 2018-03-22 | 2018-03-22 | 插件化调试方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108415844B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111290760B (zh) * | 2020-03-03 | 2023-03-31 | 北京字节跳动网络技术有限公司 | 应用程序编译方法、装置、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104778121A (zh) * | 2015-03-25 | 2015-07-15 | 网易(杭州)网络有限公司 | 游戏程序的测试方法、装置及系统 |
CN105022630A (zh) * | 2015-06-30 | 2015-11-04 | 中标软件有限公司 | 一种组件管理系统及组件管理方法 |
CN105260206A (zh) * | 2015-10-10 | 2016-01-20 | 北京京东尚科信息技术有限公司 | 数据源插件实现方法及服务器 |
CN105786562A (zh) * | 2016-02-04 | 2016-07-20 | 百度在线网络技术(北京)有限公司 | 一种集成插件的方法和装置 |
CN107688529A (zh) * | 2017-02-20 | 2018-02-13 | 平安科技(深圳)有限公司 | 组件调试方法和装置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9021436B2 (en) * | 2010-12-08 | 2015-04-28 | Microsoft Technology Licensing Llc | Automatic reconnection of debugger to a reactivated application |
CN104008060B (zh) * | 2014-06-18 | 2017-02-01 | 腾讯科技(深圳)有限公司 | 插件与宿主兼容性的检测方法及检测服务器 |
CN104462879B (zh) * | 2014-11-28 | 2018-04-17 | 北京奇虎科技有限公司 | 应用程序免Root运行控制方法与装置 |
CN105138451B (zh) * | 2015-07-31 | 2017-12-26 | 百度在线网络技术(北京)有限公司 | 一种用于测试插件的功能的方法、装置和系统 |
US20180060220A1 (en) * | 2016-08-23 | 2018-03-01 | Linkedin Corporation | Fixture plugin for product automation |
CN107704396A (zh) * | 2017-10-20 | 2018-02-16 | 平安科技(深圳)有限公司 | 应用程序的测试方法及装置 |
-
2018
- 2018-03-22 CN CN201810242137.6A patent/CN108415844B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104778121A (zh) * | 2015-03-25 | 2015-07-15 | 网易(杭州)网络有限公司 | 游戏程序的测试方法、装置及系统 |
CN105022630A (zh) * | 2015-06-30 | 2015-11-04 | 中标软件有限公司 | 一种组件管理系统及组件管理方法 |
CN105260206A (zh) * | 2015-10-10 | 2016-01-20 | 北京京东尚科信息技术有限公司 | 数据源插件实现方法及服务器 |
CN105786562A (zh) * | 2016-02-04 | 2016-07-20 | 百度在线网络技术(北京)有限公司 | 一种集成插件的方法和装置 |
CN107688529A (zh) * | 2017-02-20 | 2018-02-13 | 平安科技(深圳)有限公司 | 组件调试方法和装置 |
Non-Patent Citations (1)
Title |
---|
replugin源码解析之replugin-plugin-gradle(插件的gradle插件);osan;《https://www.jianshu.com/p/a9b3aaba8e45》;20170720;1-11 * |
Also Published As
Publication number | Publication date |
---|---|
CN108415844A (zh) | 2018-08-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10846073B2 (en) | Methods, apparatuses, terminals, servers, and systems for container generation | |
CN106325847B (zh) | 基于iOS平台获取应用程序功能的方法和装置 | |
US20110154305A1 (en) | System and method for remotely compiling multi-platform native applications for mobile devices | |
KR101541112B1 (ko) | Fota 시스템 및 그 실행 방법 | |
CN107967207B (zh) | 用户界面交互功能的测试方法和装置 | |
CN109240902B (zh) | 一种获取电子设备的固件代码的方法和装置 | |
US9208320B2 (en) | Software distribution system and software distribution method | |
CN104536752A (zh) | 自动生成apk的方法及装置 | |
CN101128800A (zh) | 用于启动与电子设备的接口的方法、系统和装置 | |
CN108415844B (zh) | 插件化调试方法及装置 | |
CN107291427B (zh) | 游戏引擎的优化方法、装置和系统 | |
CN111290773A (zh) | 系统升级方法、设备及可读存储介质 | |
CN111858359B (zh) | 可执行文件的工程代码位置获取方法和装置 | |
KR20080078112A (ko) | 휴대용 단말기에서 부트로고 업데이트 방법 및 장치 | |
CN105468420A (zh) | 操作系统升级方法和装置 | |
CN113032224A (zh) | 一种信息采集方法、装置、电子设备及可读存储介质 | |
CN105119944A (zh) | 一种应用的启动方法和相关装置 | |
CN106648697B (zh) | 一种点亮终端的方法及自动控制终端的方法 | |
CN113434154B (zh) | 安卓应用程序打包方法、装置、存储介质及电子装置 | |
CN111427603B (zh) | 应用程序的升级方法及装置 | |
CN112433938A (zh) | 移动端应用测试的方法和装置 | |
CN104378403A (zh) | 终端及其升级方法 | |
CN112131505A (zh) | 数据存储处理方法、装置、存储介质及电子装置 | |
JP2016515243A (ja) | アンドロイドアプリケーションのタイゼン導入可能パッケージ自動変換方法及びこのためのコンピュータ読み取り可能な記録媒体 | |
CN116009831B (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 |