CN112394935A - 一种在页面中实现灰度设置的控制方法及装置 - Google Patents

一种在页面中实现灰度设置的控制方法及装置 Download PDF

Info

Publication number
CN112394935A
CN112394935A CN202011369084.8A CN202011369084A CN112394935A CN 112394935 A CN112394935 A CN 112394935A CN 202011369084 A CN202011369084 A CN 202011369084A CN 112394935 A CN112394935 A CN 112394935A
Authority
CN
China
Prior art keywords
page
file
plug
control method
code
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.)
Withdrawn
Application number
CN202011369084.8A
Other languages
English (en)
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.)
Shanghai 2345 Network Technology Co ltd
Original Assignee
Shanghai 2345 Network 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 Shanghai 2345 Network Technology Co ltd filed Critical Shanghai 2345 Network Technology Co ltd
Priority to CN202011369084.8A priority Critical patent/CN112394935A/zh
Publication of CN112394935A publication Critical patent/CN112394935A/zh
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation

Landscapes

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

Abstract

本发明提供了一种在页面中实现灰度设置的控制方法,包括如下步骤:a:获取页面的class文件;b:基于所述class文件确定与所述页面相对应的页面关键点的字节码信息,所述页面关键点与页面中所存在的第三方插件相关联;c:对所述字节码信息进行置灰代码的修改,其中,所述置灰代码至少包括灰度开关参数。本发明通过在编译期字节码插桩的方式,在页面关键点预埋置灰代码,且页面置灰代码有开关控制,开关由宿主控制,宿主可以通过云控的方式来控制开关。该插件包含了字节码的插桩框架,后续还可以扩展其他功能,如方法耗时等,且插件可以复用,其他宿主只需简单的添加依赖就能集成插件功能。本发明操作简单,使用方便,具有极高的商业价值。

Description

一种在页面中实现灰度设置的控制方法及装置
技术领域
本发明属于数据处理领域,具体地,涉及一种表数据批量自动比对的控制方法及装置。
背景技术
ASM是C++中的一个关键字,用于在C++源码中内嵌汇编语言,ClassVisitor是用来生成asm和改变字节码的,ClassVisitor是一个访问字节码的框架,其对字节码的创建和修改主要是通过其内部的ClassVisitor具体实现来代理的;ClassVisitor对一个java类的访问是有一定顺序的。
目前开发人员在具有第三方插件的页面中进行灰度设置时,只能通过人工插桩的形式手动埋点,但由于实际埋点非常多,开发人员需要完成的工作量非常庞大,且开发人员还需要根据不同的应用程序、页面以及第三方插件对每个不同的代码位置进行代码修改,操作十分繁琐,降低了开发效率,增加了人工成本。
而目前并没有一种能够解决上述技术问题的技术方案,具体地,并没有一种在页面中实现灰度设置的控制方法及装置。
发明内容
针对现有技术存在的技术缺陷,本发明的目的是提供一种在页面中实现灰度设置的控制方法及装置,根据本发明的一个方面,提供了一种在页面中实现灰度设置的控制方法,包括如下步骤:
a:获取页面的class文件;
b:基于所述class文件确定与所述页面相对应的页面关键点的字节码信息,所述页面关键点与页面中所存在的第三方插件相关联;
c:对所述字节码信息进行置灰代码的修改,其中,所述置灰代码至少包括灰度开关参数。
优选地,所述步骤a还包括:
a1:确定所述页面所在应用程序的java文件;
a2:将所述java文件转化为dex文件,
其中,在所述步骤a2之前,还包括:
a2′:基于Gradle插件提供的Transform API确定所述页面的class文件。
优选地,所述Gradle插件为自定义Gradle插件。
优选地,在所述步骤b中,确定与所述页面相对应的页面关键点至少包括在扫描所述class文件时调用OnCreate的位置。
优选地,所述步骤c至少包括:基于ASM语法对所述字节码信息添加置灰代码。
优选地,在所述步骤c中,所述置灰代码还包括灰度范围参数。
根据本发明的另一个方面,提供了一种在页面中实现灰度设置的控制装置,其采用所述的控制方法,包括:
第一获取装置:获取页面的class文件;
第一确定装置:基于所述class文件确定与所述页面相对应的页面关键点的字节码信息;
第一处理装置:对所述字节码信息进行置灰代码的修改。
优选地,所述第一获取装置包括:
第二确定装置:确定所述页面所在应用程序的java文件;
第二处理装置:将所述java文件转化为dex文件。
本发明提供了一种在页面中实现灰度设置的控制方法,包括如下步骤:a:获取页面的class文件;b:基于所述class文件确定与所述页面相对应的页面关键点的字节码信息,所述页面关键点与页面中所存在的第三方插件相关联;c:对所述字节码信息进行置灰代码的修改,其中,所述置灰代码至少包括灰度开关参数。本发明通过在编译期字节码插桩的方式(使用Asm插入代码),在页面关键点预埋置灰代码,且页面置灰代码有开关控制,开关由宿主控制,宿主可以通过云控的方式来控制开关。该插件包含了字节码的插桩框架,后续还可以扩展其他功能,如方法耗时等,且插件可以复用,其他宿主只需简单的添加依赖就能集成插件功能。本发明操作简单,使用方便,具有极高的商业价值。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1示出了本发明的具体实施方式的,一种在页面中实现灰度设置的控制方法的具体流程示意图;
图2示出了本发明的第一实施例的,获取页面的class文件的具体流程示意图;以及
图3示出了本发明的另一具体实施方式的,一种在页面中实现灰度设置的控制装置的模块连接示意图。
具体实施方式
为了更好的使本发明的技术方案清晰地表示出来,下面结合附图对本发明作进一步说明。
图1示出了本发明的具体实施方式的,一种在页面中实现灰度设置的控制方法的具体流程示意图,所述在页面中实现灰度设置的控制方法用以实现在页面中将具有第三方插件设置之处的全部页面内容全部置灰处理,包括如下步骤:
首先,进入步骤S101,获取页面的class文件,本领域技术人员理解,所述页面可以是各种页面,在一个优选地实施例中,可以是浏览器页面,进一步地,本发明优选地采用ClassVisitor访问class文件,进一步地,获取页面的class文件可以通过解析应用程序的classes.jar包来获取应用程序的class文件。
然后,进入步骤S102,基于所述class文件确定与所述页面相对应的页面关键点的字节码信息,所述页面关键点与页面中所存在的第三方插件相关联,确定与所述页面相对应的页面关键点至少包括在扫描所述class文件时调用OnCreate的位置,任何页面都是继承自FragmentActivity或者Activity类,该类存在onCreate的方法,只要在扫描class文件时找到该方法的调用处,且父类是FragmentActivity或者Activity,就可以进行插桩。本发明主要通过对第三方插件相关联的页面关键点进行插桩处理,进而实现对页面中所有页面内容中的灰度进行设置、调整。
最后,进入步骤S103,对所述字节码信息进行置灰代码的修改,其中,所述置灰代码至少包括灰度开关参数,在这样的实施例中,本发明在找到对应的插桩点即页面关键点后,直接使用ASM语法在插桩点添加置灰的代码,将java文件先转化为class文件,然后再转化为dex文件。而通过Gradle插件提供的Transform API,可以在编译成dex文件之前得到class文件。得到class文件后,可以通过ASM对字节码进行修改,即可完成字节码插桩。
本发明在页面中存在第三方的插件时,灰度设置可能无法全部进行灰度设置,而本发明通过步骤S101至步骤S103实现了对于class文件的获取,页面关键点的获取以及对于置灰代码的修改。
进一步地,在所述步骤S103中,所述置灰代码还包括灰度范围参数,所述灰度范围参数即为对灰度的比例,进一步地,所述灰度范围参数的取值范围可以为0%-100%,这些可以根据开发人员自定义或者根据客户需求进行调整,在此不予赘述。
图2示出了本发明的第一实施例的,获取页面的class文件的具体流程示意图,本领域技术人员理解,所述步骤S101还包括:
首先,进入步骤S1011,确定所述页面所在应用程序的java文件,然后,在步骤S1012中,将所述java文件转化为dex文件,而作为本发明的一个优选实施例,在所述步骤S1012之前,还包括S1013,基于Gradle插件提供的Transform API确定所述页面的class文件。
进一步地,本发明主要用于Android,具体地,Android打包流程为:由R.java、application source cade以及java interfaces经过java compiler得到class Files,基于class Files进而得到dex Files,进一步地,所述Gradle插件为自定义Gradle插件,基于自定义Gradle插件通过transform得到class文件,通过ASM修改并覆盖原class文件。具体地,步骤:首先,找到插入点,然后自定义Gradle插件、Transform API,在Transform#transform()中得到class文件;找到FragmentActivity/Activity的class文件,通过ASM库,在onCreate()中插入代码;将原文件替换为修改后的class文件。使用Transform API主要是写一个类继承Transform,并把该Transform注入到打包过程中。注入Transform很简单,先获取com.android.build.gradle.AppExtension对象,然后调用它的registerTransform()方法。这个方法实际上是属于BaseExtension的,AppExtension继承自BaseExtension。
图3示出了本发明的另一具体实施方式的,一种在页面中实现灰度设置的控制装置的模块连接示意图。根据本发明的另一个方面,提供了一种在页面中实现灰度设置的控制装置,其采用所述的控制方法,包括第一获取装置1:获取页面的class文件,所述第一获取装置1的工作原理可以参考前述步骤S101,在此不予赘述。
进一步地,所述控制装置还包括第一确定装置2:基于所述class文件确定与所述页面相对应的页面关键点的字节码信息,所述第一确定装置2的工作原理可以参考前述步骤S102,在此不予赘述。
进一步地,所述控制装置还包括第一处理装置3:对所述字节码信息进行置灰代码的修改,所述第一处理装置3的工作原理可以参考前述步骤S103,在此不予赘述。
进一步地,所述第一获取装置1包括第二确定装置11:确定所述页面所在应用程序的java文件,所述第二确定装置11的工作原理可以参考前述步骤S1011,在此不予赘述。
进一步地,所述第一获取装置1还包括第二处理装置12:将所述java文件转化为dex文件,所述第二处理装置12的工作原理可以参考前述步骤S1012,在此不予赘述。
需要说明的是,上述各装置实施例的具体实施方式与前述对应方法实施例的具体实施方式相同,在此不再赘述。综上所述,本发明的技术方案,为用户提供了一种自动化实现具有第三方插件的页面中灰度设置的控制方法,提高了开发效率,降低了开发成本。
在此提供的算法和显示不与任何特定计算机、虚拟装置或者其它设备固有相关。各种通用装置也可以与基于在此的示教一起使用。根据上面的描述,构造这类装置所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实施例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本发明并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
此外,本领域技术人员理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域技术人员理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。词语“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变形或修改,这并不影响本发明的实质内容。

Claims (8)

1.一种在页面中实现灰度设置的控制方法,其特征在于,包括如下步骤:
a:获取页面的class文件;
b:基于所述class文件确定与所述页面相对应的页面关键点的字节码信息,所述页面关键点与页面中所存在的第三方插件相关联;
c:对所述字节码信息进行置灰代码的修改,其中,所述置灰代码至少包括灰度开关参数。
2.根据权利要求1所述的控制方法,其特征在于,所述步骤a还包括:
a1:确定所述页面所在应用程序的java文件;
a2:将所述java文件转化为dex文件,
其中,在所述步骤a2之前,还包括:
a2′:基于Gradle插件提供的Transform API确定所述页面的class文件。
3.根据权利要求2所述的控制方法,其特征在于,所述Gradle插件为自定义Gradle插件。
4.根据权利要求1所述的控制方法,其特征在于,在所述步骤b中,确定与所述页面相对应的页面关键点至少包括在扫描所述class文件时调用OnCreate的位置。
5.根据权利要求1所述的控制方法,其特征在于,所述步骤c至少包括:基于ASM语法对所述字节码信息添加置灰代码。
6.根据权利要求1所述的控制方法,其特征在于,在所述步骤c中,所述置灰代码还包括灰度范围参数。
7.一种在页面中实现灰度设置的控制装置,其采用如权利要求1-6中任一项所述的控制方法,其特征在于,包括:
第一获取装置(1):获取页面的class文件;
第一确定装置(2):基于所述class文件确定与所述页面相对应的页面关键点的字节码信息;
第一处理装置(3):对所述字节码信息进行置灰代码的修改。
8.根据权利要求7所述的控制装置,其特征在于,所述第一获取装置(1)包括:
第二确定装置(11):确定所述页面所在应用程序的java文件;
第二处理装置(12):将所述java文件转化为dex文件。
CN202011369084.8A 2020-11-30 2020-11-30 一种在页面中实现灰度设置的控制方法及装置 Withdrawn CN112394935A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011369084.8A CN112394935A (zh) 2020-11-30 2020-11-30 一种在页面中实现灰度设置的控制方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011369084.8A CN112394935A (zh) 2020-11-30 2020-11-30 一种在页面中实现灰度设置的控制方法及装置

Publications (1)

Publication Number Publication Date
CN112394935A true CN112394935A (zh) 2021-02-23

Family

ID=74604773

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011369084.8A Withdrawn CN112394935A (zh) 2020-11-30 2020-11-30 一种在页面中实现灰度设置的控制方法及装置

Country Status (1)

Country Link
CN (1) CN112394935A (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150227746A1 (en) * 2014-02-07 2015-08-13 Northwestern University System and Method for Privacy Leakage Detection and Prevention System without Operating System Modification
CN107657175A (zh) * 2017-09-15 2018-02-02 北京理工大学 一种基于图像特征描述子的恶意样本同源检测方法
CN110389898A (zh) * 2019-06-19 2019-10-29 深圳壹账通智能科技有限公司 测试策略的获取方法、装置、终端及计算机可读存储介质
CN111190573A (zh) * 2018-11-14 2020-05-22 北京字节跳动网络技术有限公司 应用程序埋点方法、装置和电子设备

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150227746A1 (en) * 2014-02-07 2015-08-13 Northwestern University System and Method for Privacy Leakage Detection and Prevention System without Operating System Modification
CN107657175A (zh) * 2017-09-15 2018-02-02 北京理工大学 一种基于图像特征描述子的恶意样本同源检测方法
CN111190573A (zh) * 2018-11-14 2020-05-22 北京字节跳动网络技术有限公司 应用程序埋点方法、装置和电子设备
CN110389898A (zh) * 2019-06-19 2019-10-29 深圳壹账通智能科技有限公司 测试策略的获取方法、装置、终端及计算机可读存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CHSMY: "使用ASM完成编译时插桩", Retrieved from the Internet <URL:https://zhuanlan.zhihu.com/p/158758613> *
带心情去旅行: "【Android】函数插桩(Gradle + ASM)", pages 1 - 8, Retrieved from the Internet <URL:https://www.jianshu.com/p/16ed4d233fd1> *

Similar Documents

Publication Publication Date Title
US7694117B2 (en) Virtualized and adaptive configuration of a system
US10008009B1 (en) Method for generating dynamic vector graphics
US9519466B2 (en) Executable code for constrained computing environments
CN110187878A (zh) 一种页面生成方法和装置
CN1524218A (zh) 用于遗留软件与屏幕朗读器程序之间的互操作的方法和装置
US20070156717A1 (en) Meta attributes of system configuration elements
US8161471B2 (en) Utility for optimizing required memory for distribution in embedded systems
WO2008097436A1 (en) Translation process component
US9710355B2 (en) Selective loading of code elements for code analysis
US20110314446A1 (en) Method and system for selectively copying portions of a document contents in a computing system (smart copy and paste
US20130318433A1 (en) Automatic targeting of browser content to optimal rendering engine
US20140075459A1 (en) Managed execution environment for software application interfacing
ATE232998T1 (de) Rechnerarchitektur zur aufschiebung von exceptions statischer spekulativer befehle
US6907597B1 (en) Method and apparatus for constructing an executable program in memory
US6625807B1 (en) Apparatus and method for efficiently obtaining and utilizing register usage information during software binary translation
US20120151321A1 (en) System for Generating Websites for Products with an Embedded Processor
US8191041B2 (en) Javascript pre-processing framework
EP2263148A2 (en) Building operating system images based on applications
US8935657B2 (en) Model-to-model transformation by kind
CN112394935A (zh) 一种在页面中实现灰度设置的控制方法及装置
US20070101261A1 (en) System and method for dynamic model-driven transformations
US9026985B2 (en) Dynamically configurable model-to-model transformation engine
CN108830920B (zh) 一种创建常量缓冲区方法、装置及可读存储介质
TWI608406B (zh) 以外來鍵對映資料表自動產生下拉式表單欄位之方法
CN111221893A (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
WW01 Invention patent application withdrawn after publication

Application publication date: 20210223

WW01 Invention patent application withdrawn after publication