CN110489180A - 一种埋点上报方法、装置、介质和电子设备 - Google Patents

一种埋点上报方法、装置、介质和电子设备 Download PDF

Info

Publication number
CN110489180A
CN110489180A CN201910725547.0A CN201910725547A CN110489180A CN 110489180 A CN110489180 A CN 110489180A CN 201910725547 A CN201910725547 A CN 201910725547A CN 110489180 A CN110489180 A CN 110489180A
Authority
CN
China
Prior art keywords
information
interface
parameter
reporting
buried point
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
Application number
CN201910725547.0A
Other languages
English (en)
Other versions
CN110489180B (zh
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.)
Douyin Vision Co Ltd
Beijing Volcano Engine Technology Co Ltd
Douyin Vision Beijing Co Ltd
Original Assignee
Beijing ByteDance 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 Beijing ByteDance Network Technology Co Ltd filed Critical Beijing ByteDance Network Technology Co Ltd
Priority to CN201910725547.0A priority Critical patent/CN110489180B/zh
Publication of CN110489180A publication Critical patent/CN110489180A/zh
Application granted granted Critical
Publication of CN110489180B publication Critical patent/CN110489180B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Alarm Systems (AREA)

Abstract

本发明提供了一种埋点上报方法、装置、介质和电子设备,该埋点上报方法包括:获取预先编写的接口信息;其中,接口信息至少包括:必要的事件名称和/或参数键值对信息;根据接口信息和预设的横切面编程方法,生成相应的实现埋点上报功能的类或对象;根据接口信息调用与接口信息匹配的方法,并对方法进行注解,得到相应的方法注解信息;解析方法注解信息和与方法注解信息对应的参数注解信息,得到相应的解析信息;若调用方法时,根据方法传入的参数和解析信息进行埋点上报。本发明提供的埋点上报方法,开发者只需定义接口,无需手动编写接口的实际实现类,提高了埋点上报方法的智能化。

Description

一种埋点上报方法、装置、介质和电子设备
技术领域
本发明涉及计算机技术领域,具体而言,涉及一种埋点上报方法、装置、介质和电子设备。
背景技术
在手机移动应用的开发中,上报埋点事件已成为了一项重要工作。埋点的业务侵入性强,开发和维护成本都比较高。在Android平台的手机应用中,利用埋点上报框架上报单个埋点事件时需要手动拼接事件参数对应的Json字符串,开发工作量相对较高,对应用开发者造成一定负担。更严重的是,在产品的开发和迭代中,埋点相关的代码很多情况下没有做良好的封装,甚至出现在各业务的页面代码中维护埋点事件名称(event)/参数键值对(params)的情况,使得埋点事件的维护成本加大。
在封装埋点的代码时,若业务调用方通过接口与埋点上报的具体实现解耦,这样可以对业务方隔离了每个埋点事件的具体实现,event和各个params的值收敛到埋点实现类中,对业务方透明,降低了维护成本。然而这种方式中,还是需要手动实现埋点上报类,仍然有较高的开发成本。
如何简化上述开发过程,开发者只需要定义接口,而无需手动编写接口的实际实现类。
因此,在长期的研发当中,发明人对如何简化埋点上报方法进行了大量的研究,提出了一种埋点上报方法,以解决上述技术问题之一。
发明内容
本发明的目的在于提供一种埋点上报方法、装置、介质和电子设备,能够解决上述提到的至少一个技术问题。具体方案如下:
根据本发明的具体实施方式,第一方面,本公开提供一种埋点上报方法,包括:
获取预先编写的接口信息;其中,所述接口信息至少包括:必要的事件名称和/或参数键值对信息;
根据所述接口信息和预设的横切面编程方法,生成相应的实现埋点上报功能的类或对象;
根据所述接口信息调用与所述接口信息匹配的方法,并对所述方法进行注解,得到相应的方法注解信息;
解析所述方法注解信息和与所述方法注解信息对应的参数注解信息,得到相应的解析信息;
若调用所述方法时,根据所述方法传入的参数和所述解析信息进行埋点上报。
可选的,通过JDK的动态代理实现所述预设的横切面编程方法。
可选的,所述JDK的动态代理包括:
在接收到运行指令之后,动态生成代理类的字节码;
根据所述代理类的字节码和预设模型生成相应的接口代理对象。
可选的,在所述获取参数键值对信息之前,所述方法还包括:
添加参数键值对。
可选的,所述添加参数键值对包括以下方式:
若服务端下发json,且客户端为字符串形式,则添加参数键值对的方式为:在上报过程中,该json中的key/value添加到埋点事件的参数中;或者,
若对接口外的调用方透明,则按照预设方式固定添加参数。
可选的,所述若对接口外的调用方透明,则按照预设方式固定添加参数包括:
若对接口外的调用方透明,则传入单个参数,并对传入的单个参数进行添加;或者,
若对接口外的调用方透明,则添加固定值的参数;或者,
若对接口外的调用方透明,则以json串形式传入多个参数,并对以json串形式传入的多个参数进行添加;或者,
若对接口外的调用方透明,则以map形式传入多个参数,并对以map形式传入的多个参数进行添加。
可选的,在所述获取参数键值对信息之前,所述方法还包括:
获取所述参数键值对的优先级控制策略,并根据所述优先级控制策略对一个埋点事件中不同时间点传入的同一key值分别设置优先级。
根据本发明的具体实施方式,第二方面,本发明提供一种埋点上报装置,包括:
获取单元,用于获取预先编写的接口信息;其中,所述获取单元获取到的所述接口信息至少包括:必要的事件名称和/或参数键值对信息;
生成单元,用于根据所述获取单元获取到的所述接口信息和预设的横切面编程方法,生成相应的实现埋点上报功能的类或对象;
调用及注解单元,用于根据所述获取单元获取到的所述接口信息调用与所述接口信息匹配的方法,并对所述方法进行注解,得到相应的方法注解信息;
解析单元,用于解析所述调用及注解单元注解的所述方法注解信息和与所述方法注解信息对应的参数注解信息,得到相应的解析信息;
埋点上报单元,用于若调用所述方法时,根据所述方法传入的参数和所述解析信息进行埋点上报。
根据本发明的具体实施方式,第三方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如上任一项所述的埋点上报方法。
根据本发明的具体实施方式,第四方面,本发明提供一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上任一项所述的埋点上报方法。
本发明实施例的上述方案与现有技术相比,至少具有以下有益效果:本发明提供一种埋点上报方法、装置、介质和电子设备,该埋点上报方法根据接口信息和预设的横切面编程方法,生成相应的实现埋点上报功能的类或对象;根据接口信息调用与接口信息匹配的方法,并对方法进行注解,得到相应的方法注解信息;解析方法注解信息和与方法注解信息对应的参数注解信息,得到相应的解析信息;若调用方法时,根据方法传入的参数和解析信息进行埋点上报。本发明提供的埋点上报方法,开发者只需定义接口,无需手动编写接口的实际实现类,提高了埋点上报方法的智能化。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1示出了根据本发明实施例的埋点上报方法流程图;
图2示出了根据本发明实施例的具体应用中的接口中埋点方法调用后处理流程图;
图3示出了根据本发明的实施例的埋点上报装置结构示意图;
图4示出了根据本发明的实施例的电子设备连接结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义,“多种”一般包含至少两种。
应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
应当理解,尽管在本发明实施例中可能采用术语第一、第二、第三等来描述……,但这些……不应限于这些术语。这些术语仅用来将……区分开。例如,在不脱离本发明实施例范围的情况下,第一……也可以被称为第二……,类似地,第二……也可以被称为第一……。
取决于语境,如在此所使用的词语“如果”、“若”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的商品或者装置中还存在另外的相同要素。
下面结合附图详细说明本发明的可选实施例。
实施例1
如图1所示,根据本公开的具体实施方式,第一方面,本公开提供一种埋点上报方法,具体包括如下方法步骤:
S102:获取预先编写的接口信息;其中,接口信息至少包括:必要的事件名称和/或参数键值对信息.
在此步骤中,除了上述罗列的接口信息之外,还有其它常用的接口信息,在此不再一一赘述。
S104:根据接口信息和预设的横切面编程方法,生成相应的实现埋点上报功能的类或对象。
目前实现横切面编程方法有如下可行方法,具体如下所述:
例如,代码织入(AspectJ)以及一些字节码注入的方式(如Lancet等)都比较适合再已有的类中做注入,并不适用于基于接口生成其实现的场景。
又例如,用APT在编译前做代码生成:也是一种可行的实现方案,在对于每个接口生成其埋点上报的实现类,这在当埋点业务的不断增加的场景下会生成大量代码,这对编译速度和包大小都会产生影响。
再者,ASM、javassist等方法直接生成字节码:这种方案灵活度高,但直接生成字节码的开发难度大,也要造成class的增加,会对编译速度和包大小产生影响。
除了上述列举出的常用的实现横切面编程方法之外,在此步骤中,本公开提供的埋点上报方法,通过JDK的动态代理实现预设的横切面编程方法。
JDK的动态代理:JDK动态代理可以在运行时动态的生成代理类的字节码,从而生成代理对象。该方法不需要在编译生成代码,对包大小和编译速度没有影响。同时这种方法在开发时和ASM等直接生成字节码相比更容易,对功能开发比较便捷。
相对于前述所述的其它三种实现横切面编程方法而言,本公开提供的埋点上报方法所采用的JDK的动态代理实现预设的横切面编程方法具有如下优势:
开发成本低、对包大小和编译的影响小以及运行效率高,因此,本公开提供的埋点上报方法选择了用JDK动态代理来作为AOP的实现方式。
在此步骤中,通过JDK动态代理来实现接口代理对象的生成。
S106:根据接口信息调用与接口信息匹配的方法,并对方法进行注解,得到相应的方法注解信息。
S108:解析方法注解信息和与方法注解信息对应的参数注解信息,得到相应的解析信息。
在此步骤中,对方法信息进行解析的过程如下所述:
LogMethod对象在创建时根据传入的Method对象,对修饰方法的Annotation进行解析,从而得到埋点事件的event名称以及固定的params。
遍历方法的注解:
如果是Event注解,通过其value得到埋点事件的event名称mEventName;
如果为ConstantParam和ConstantParamArray注解,分别对应单个固定param和多个固定params,根据其param和value解析到mConstantParams中。
在此步骤中,对方法参数信息进行解析的过程如下所述:
遍历方法每个参数的注解,根据不同类型的注解,解析得到每个参数注解对应的IParameterHandler。
在上述解析过程中,每种参数注解用其对应的IParameterHandler来处理其对埋点params的逻辑。IParameterHandler的子类实现其抽象方法apply(),apply()被LogMethod.call()调用,在代理对象方法调用时传入对应的参数值,对当前埋点的paramMap进行操作,可将IParameterHandler此次解析到的埋点param拼接到Map中。
S110:若调用方法时,根据方法传入的参数和解析信息进行埋点上报。
在此步骤中,LogMethod将传入的Method对象进行解析,通过对修饰方法的Annotation及修饰方法参数的Annotation进行解析,得到埋点上报时需要的一些信息。当代理对象的相关方法被调用时,LogMethod.call()根据方法传入的参数以及预先解析的信息进行埋点上报。
在此步骤中,对选择的当前方法进行调用的过程做如下说明:
LogMethod.call()在代理对象的方法调用时被触发。调用过程中,将需要上报的params集中拼装到logParams中:首先将之前解析到的固定参数拼装进logParams,再遍历传入的参数,由各参数对应的IParameterHandler完成对应param向logParams组装的操作。
如图2所示,示出了根据本发明实施例的具体应用中的接口中埋点方法调用后处理流程图。
下面对如图2所示的处理流程图做如下说明:
如果是Object的方法,则直接调用Method.invoke(),其他方法(即接口内定义的方法)通过getLogMethod()获得其对应的LogMethod对象,调用LogMethod.call()传入参数,触发被代理的方法逻辑。在LogMethod中,完成了对Method对象的解析,并处理了埋点上报的具体逻辑。
为了当方法重复调用时,LogMethod不被反复创建,降低对Method的解析频率,获取LogMethod的方法getLogMethod()中提供了对LogMethod的缓存。在之前对JDK动态代理的分析中,可以看到JDK动态代理会对动态生成的的代理类做缓存,但实际的方法调用逻辑交给了InvocationHandler.invoke(),此处对LogMethod的缓存就是对代理类各方法的实现做缓存。
由于埋点上报的方法可能会被多线程调用,所以在获取缓存LogMethod时要考虑到线程安全问题。通过ConcurrentHashMap及加锁的方式保证了方法调用时的线程安全。
可选的,通过JDK的动态代理实现预设的横切面编程方法。
可选的,JDK的动态代理包括:
在接收到运行指令之后,动态生成代理类的字节码;
根据代理类的字节码和预设模型生成相应的接口代理对象。
可选的,在获取参数键值对信息之前,所述方法还包括:
添加参数键值对。
可选的,添加参数键值对包括以下方式:
若服务端下发json,且客户端为字符串形式,则添加参数键值对的方式为:在上报过程中,该json中的key/value添加到埋点事件的参数中;或者,
若对接口外的调用方透明,则按照预设方式固定添加参数。
可选的,若对接口外的调用方透明,则按照预设方式固定添加参数包括:
若对接口外的调用方透明,则传入单个参数,并对传入的单个参数进行添加;或者,
若对接口外的调用方透明,则添加固定值的参数;或者,
若对接口外的调用方透明,则以json串形式传入多个参数,并对以json串形式传入的多个参数进行添加;或者,
若对接口外的调用方透明,则以map形式传入多个参数,并对以map形式传入的多个参数进行添加。
可选的,在获取参数键值对信息之前,所述方法还包括:
获取参数键值对的优先级控制策略,并根据优先级控制策略对一个埋点事件中不同时间点传入的同一key值分别设置优先级。
在此步骤中,对键值对优先级控制做如下说明:
注解@Param、@JsonString、@ParamMap可以控制其优先级,通过设置"force"值来控制当前的param能否覆盖已有的相同key。在这些注解对应的IParameterHandler中,在apply()时如果是force或logParams无此key则将其拼装到logParams中,从而实现优先级的控制。
本发明提供一种埋点上报方法、装置、介质和电子设备,该埋点上报方法根据接口信息和预设的横切面编程方法,生成相应的实现埋点上报功能的类或对象;根据接口信息调用与接口信息匹配的方法,并对方法进行注解,得到相应的方法注解信息;解析方法注解信息和与方法注解信息对应的参数注解信息,得到相应的解析信息;若调用方法时,根据方法传入的参数和解析信息进行埋点上报。本发明提供的埋点上报方法,开发者只需定义接口,无需手动编写接口的实际实现类,提高了埋点上报方法的智能化。
此外,本发明提供的埋点上报方法,能够做到:自动实现埋点逻辑,生成埋点上报的实例对象:开发者只需编写接口,在接口中用注解修饰方法来提供必要的事件名称(event)/参数的键值对(params)的信息。使用者向框架传入接口类,获得接口的实例。
再者,本发明提供的埋点上报方法,多种方式添加参数的键值对(params):由于在实际开发中,埋点上报的参数来源不同,在客户端的组织形式也不同,如服务端会下发json,在客户端以字符串形式持有,上报时该json中的key/value添加到埋点事件的params中。另外比如一些固定添加的参数我们希望对接口外的调用方透明。框架需要支持传入单个param、添加固定值的param(不对接口外暴露)、以json串形式传入多个params、以map形式传入多个params等功能,这些功能以注解的方式提供给提供给开发者来编写接口。
又如,本发明提供的埋点上报方法,参数的键值对params的优先级控制:在实际应用中,在一个埋点事件里同一key的值可能会被传入多次,在这些情景下,通过引入明确的优先级策略,减少正确的参数被覆盖的概率。
最后,本发明提供的埋点上报方法具有可用性:同一接口及同一埋点方法可能会被多线程同时调用,框架需要考虑线程的安全性。在框架的实现时,由于项目中埋点事件很多、且很多埋点会被反复调用,需要不断提高编译效率和执行效率。
实施例2
如图3所示,根据本公开的具体实施方式,第二方面,本公开提供一种埋点上报装置,埋点上报装置具体包括获取单元302、生成单元304、调用及注解单元306、解析单元308和埋点上报单元310等,具体如下:
获取单元302,用于获取预先编写的接口信息;其中,获取单元302获取到的接口信息至少包括:必要的事件名称和/或参数键值对信息;
生成单元304,用于根据获取单元302获取到的接口信息和预设的横切面编程方法,生成相应的实现埋点上报功能的类或对象;
调用及注解单元306,用于根据获取单元302获取到的接口信息调用与接口信息匹配的方法,并对方法进行注解,得到相应的方法注解信息;
解析单元308,用于解析调用及注解单元306注解的方法注解信息和与方法注解信息对应的参数注解信息,得到相应的解析信息;
埋点上报单元310,用于若调用方法时,根据方法传入的参数和解析信息进行埋点上报。
可选的,所述装置还包括:
JDK动态代理单元(在图3中未示出),用于通过JDK的动态代理实现预设的横切面编程方法。
可选的,JDK动态代理单元具体用于:
在接收到运行指令之后,动态生成代理类的字节码;
根据代理类的字节码和预设模型生成相应的接口代理对象。
可选的,所述装置还包括:
添加单元(在图3中未示出),用于在获取单元302获取到参数键值对信息之前,添加参数键值对。
可选的,添加单元添加添加参数键值对包括以下方式:
若服务端下发json,且客户端为字符串形式,则添加参数键值对的方式为:在上报过程中,该json中的key/value添加到埋点事件的参数中;或者,
若对接口外的调用方透明,则按照预设方式固定添加参数。
可选的,若对接口外的调用方透明,则添加单元按照预设方式固定添加参数包括:
若对接口外的调用方透明,则传入单个参数,并对传入的单个参数进行添加;或者,
若对接口外的调用方透明,则添加固定值的参数;或者,
若对接口外的调用方透明,则以json串形式传入多个参数,并对以json串形式传入的多个参数进行添加;或者,
若对接口外的调用方透明,则以map形式传入多个参数,并对以map形式传入的多个参数进行添加。
可选的,获取单元302还用于:
在获取参数键值对信息之前,获取参数键值对的优先级控制策略;
可选的,所述装置还包括:
优先级设置单元(在图3中未示出),用于根据获取单元302获取到的优先级控制策略对一个埋点事件中不同时间点传入的同一key值分别设置优先级。
本发明提供一种埋点上报方法、装置、介质和电子设备,该埋点上报方法根据接口信息和预设的横切面编程方法,生成相应的实现埋点上报功能的类或对象;根据接口信息调用与接口信息匹配的方法,并对方法进行注解,得到相应的方法注解信息;解析方法注解信息和与方法注解信息对应的参数注解信息,得到相应的解析信息;若调用方法时,根据方法传入的参数和解析信息进行埋点上报。本发明提供的埋点上报方法,开发者只需定义接口,无需手动编写接口的实际实现类,提高了埋点上报方法的智能化。
此外,本发明提供的埋点上报装置,能够做到:自动实现埋点逻辑,生成埋点上报的实例对象:开发者只需编写接口,在接口中用注解修饰方法来提供必要的事件名称(event)/参数的键值对(params)的信息。使用者向框架传入接口类,获得接口的实例。
再者,本发明提供的埋点上报装置,多种方式添加参数的键值对(params):由于在实际开发中,埋点上报的参数来源不同,在客户端的组织形式也不同,如服务端会下发json,在客户端以字符串形式持有,上报时该json中的key/value添加到埋点事件的params中。另外比如一些固定添加的参数我们希望对接口外的调用方透明。框架需要支持传入单个param、添加固定值的param(不对接口外暴露)、以json串形式传入多个params、以map形式传入多个params等功能,这些功能以注解的方式提供给提供给开发者来编写接口。
又如,本发明提供的埋点上报装置,参数的键值对params的优先级控制:在实际应用中,在一个埋点事件里同一key的值可能会被传入多次,在这些情景下,通过引入明确的优先级策略,减少正确的参数被覆盖的概率。
最后,本发明提供的埋点上报装置具有可用性:同一接口及同一埋点方法可能会被多线程同时调用,框架需要考虑线程的安全性。在框架的实现时,由于项目中埋点事件很多、且很多埋点会被反复调用,需要不断提高编译效率和执行效率。
实施例3
如图4所示,本实施例提供一种电子设备,该设备用于埋点上报方法,所述电子设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:根据接口信息和预设的横切面编程方法,生成相应的实现埋点上报功能的类或对象;根据接口信息调用与接口信息匹配的方法,并对方法进行注解,得到相应的方法注解信息;解析方法注解信息和与方法注解信息对应的参数注解信息,得到相应的解析信息;若调用方法时,根据方法传入的参数和解析信息进行埋点上报。本发明提供的埋点上报方法,开发者只需定义接口,无需手动编写接口的实际实现类,提高了埋点上报方法的智能化。
实施例4
本公开实施例提供了一种非易失性计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令可执行上述任意方法实施例中的埋点上报方法。
实施例5
下面参考图4,其示出了适于用来实现本公开实施例的电子设备400的结构示意图。本公开实施例中的终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图4示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图4所示,电子设备400可以包括处理装置(例如中央处理器、图形处理器等)401,其可以根据存储在只读存储器(ROM)402中的程序或者从存储装置408加载到随机访问存储器(RAM)403中的程序而执行各种适当的动作和处理。在RAM 403中,还存储有电子设备400操作所需的各种程序和数据。处理装置401、ROM 402以及RAM 403通过总线404彼此相连。输入/输出(I/O)接口405也连接至总线404。
通常,以下装置可以连接至I/O接口405:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置406;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置407;包括例如磁带、硬盘等的存储装置408;以及通信装置409。通信装置409可以允许电子设备400与其他设备进行无线或有线通信以交换数据。虽然图4示出了具有各种装置的电子设备400,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置409从网络上被下载和安装,或者从存储装置408被安装,或者从ROM 402被安装。在该计算机程序被处理装置401执行时,执行本公开实施例的方法中限定的上述功能。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:根据接口信息和预设的横切面编程方法,生成相应的实现埋点上报功能的类或对象;根据接口信息调用与接口信息匹配的方法,并对方法进行注解,得到相应的方法注解信息;解析方法注解信息和与方法注解信息对应的参数注解信息,得到相应的解析信息;若调用方法时,根据方法传入的参数和解析信息进行埋点上报。本发明提供的埋点上报方法,开发者只需定义接口,无需手动编写接口的实际实现类,提高了埋点上报方法的智能化。。
或者,上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:根据接口信息和预设的横切面编程方法,生成相应的实现埋点上报功能的类或对象;根据接口信息调用与接口信息匹配的方法,并对方法进行注解,得到相应的方法注解信息;解析方法注解信息和与方法注解信息对应的参数注解信息,得到相应的解析信息;若调用方法时,根据方法传入的参数和解析信息进行埋点上报。本发明提供的埋点上报方法,开发者只需定义接口,无需手动编写接口的实际实现类,提高了埋点上报方法的智能化。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定,例如,第一获取单元还可以被描述为“获取至少两个网际协议地址的单元”。

Claims (10)

1.一种埋点上报方法,其特征在于,包括:
获取预先编写的接口信息;其中,所述接口信息至少包括:必要的事件名称和/或参数键值对信息;
根据所述接口信息和预设的横切面编程方法,生成相应的实现埋点上报功能的类或对象;
根据所述接口信息调用与所述接口信息匹配的方法,并对所述方法进行注解,得到相应的方法注解信息;
解析所述方法注解信息和与所述方法注解信息对应的参数注解信息,得到相应的解析信息;
若调用所述方法时,根据所述方法传入的参数和所述解析信息进行埋点上报。
2.根据权利要求1所述的方法,其特征在于,通过JDK的动态代理实现所述预设的横切面编程方法。
3.根据权利要求2所述的方法,其特征在于,所述JDK的动态代理包括:
在接收到运行指令之后,动态生成代理类的字节码;
根据所述代理类的字节码和预设模型生成相应的接口代理对象。
4.根据权利要求1所述的方法,其特征在于,在所述获取参数键值对信息之前,所述方法还包括:
添加参数键值对。
5.根据权利要求4所述的方法,其特征在于,所述添加参数键值对包括以下方式:
若服务端下发json,且客户端为字符串形式,则添加参数键值对的方式为:在上报过程中,该json中的key/value添加到埋点事件的参数中;或者,
若对接口外的调用方透明,则按照预设方式固定添加参数。
6.根据权利要求5所述的方法,其特征在于,所述若对接口外的调用方透明,则按照预设方式固定添加参数包括:
若对接口外的调用方透明,则传入单个参数,并对传入的单个参数进行添加;或者,
若对接口外的调用方透明,则添加固定值的参数;或者,
若对接口外的调用方透明,则以json串形式传入多个参数,并对以json串形式传入的多个参数进行添加;或者,
若对接口外的调用方透明,则以map形式传入多个参数,并对以map形式传入的多个参数进行添加。
7.根据权利要求1所述的方法,其特征在于,在所述获取参数键值对信息之前,所述方法还包括:
获取所述参数键值对的优先级控制策略,并根据所述优先级控制策略对一个埋点事件中不同时间点传入的同一key值分别设置优先级。
8.一种埋点上报装置,其特征在于,包括:
获取单元,用于获取预先编写的接口信息;其中,所述获取单元获取到的所述接口信息至少包括:必要的事件名称和/或参数键值对信息;
生成单元,用于根据所述获取单元获取到的所述接口信息和预设的横切面编程方法,生成相应的实现埋点上报功能的类或对象;
调用及注解单元,用于根据所述获取单元获取到的所述接口信息调用与所述接口信息匹配的方法,并对所述方法进行注解,得到相应的方法注解信息;
解析单元,用于解析所述调用及注解单元注解的所述方法注解信息和与所述方法注解信息对应的参数注解信息,得到相应的解析信息;
埋点上报单元,用于若调用所述方法时,根据所述方法传入的参数和所述解析信息进行埋点上报。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1至7中任一项所述的方法。
10.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1至7中任一项所述的方法。
CN201910725547.0A 2019-08-07 2019-08-07 一种埋点上报方法、装置、介质和电子设备 Active CN110489180B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910725547.0A CN110489180B (zh) 2019-08-07 2019-08-07 一种埋点上报方法、装置、介质和电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910725547.0A CN110489180B (zh) 2019-08-07 2019-08-07 一种埋点上报方法、装置、介质和电子设备

Publications (2)

Publication Number Publication Date
CN110489180A true CN110489180A (zh) 2019-11-22
CN110489180B CN110489180B (zh) 2023-03-28

Family

ID=68550089

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910725547.0A Active CN110489180B (zh) 2019-08-07 2019-08-07 一种埋点上报方法、装置、介质和电子设备

Country Status (1)

Country Link
CN (1) CN110489180B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110750315A (zh) * 2019-12-23 2020-02-04 武汉斗鱼鱼乐网络科技有限公司 Android系统中的类加载方法、装置、设备和存储介质
CN113742161A (zh) * 2020-09-07 2021-12-03 北京沃东天骏信息技术有限公司 一种埋点上报方法和装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017041657A1 (zh) * 2015-09-09 2017-03-16 阿里巴巴集团控股有限公司 一种应用接口管理方法和装置
CN106844217A (zh) * 2017-01-26 2017-06-13 网易(杭州)网络有限公司 对应用的控件进行埋点的方法及装置、可读存储介质
CN106970789A (zh) * 2017-03-07 2017-07-21 武汉斗鱼网络科技有限公司 一种Android端基于AOP和AspectJ的日志自动埋点方法及系统
CN107145489A (zh) * 2016-03-01 2017-09-08 阿里巴巴集团控股有限公司 一种基于云平台的客户端应用的信息统计方法和装置
CN107239271A (zh) * 2016-03-29 2017-10-10 滴滴(中国)科技有限公司 开发文档生成方法及装置
CN109271331A (zh) * 2018-08-20 2019-01-25 平安普惠企业管理有限公司 日志的生成方法、装置、计算机设备及存储介质
CN109766241A (zh) * 2018-12-29 2019-05-17 中国银行股份有限公司 系统监控方法、装置、计算机设备及计算机可读存储介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017041657A1 (zh) * 2015-09-09 2017-03-16 阿里巴巴集团控股有限公司 一种应用接口管理方法和装置
CN107145489A (zh) * 2016-03-01 2017-09-08 阿里巴巴集团控股有限公司 一种基于云平台的客户端应用的信息统计方法和装置
CN107239271A (zh) * 2016-03-29 2017-10-10 滴滴(中国)科技有限公司 开发文档生成方法及装置
CN106844217A (zh) * 2017-01-26 2017-06-13 网易(杭州)网络有限公司 对应用的控件进行埋点的方法及装置、可读存储介质
CN106970789A (zh) * 2017-03-07 2017-07-21 武汉斗鱼网络科技有限公司 一种Android端基于AOP和AspectJ的日志自动埋点方法及系统
CN109271331A (zh) * 2018-08-20 2019-01-25 平安普惠企业管理有限公司 日志的生成方法、装置、计算机设备及存储介质
CN109766241A (zh) * 2018-12-29 2019-05-17 中国银行股份有限公司 系统监控方法、装置、计算机设备及计算机可读存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
马思峻等: "Android应用性能数据采集探针研究", 《计算机应用与软件》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110750315A (zh) * 2019-12-23 2020-02-04 武汉斗鱼鱼乐网络科技有限公司 Android系统中的类加载方法、装置、设备和存储介质
CN113742161A (zh) * 2020-09-07 2021-12-03 北京沃东天骏信息技术有限公司 一种埋点上报方法和装置

Also Published As

Publication number Publication date
CN110489180B (zh) 2023-03-28

Similar Documents

Publication Publication Date Title
CN110489101A (zh) 接口模拟方法、系统、介质和电子设备
CN111240684B (zh) 一种js代码的裁剪方法、装置、介质和电子设备
CN111367516B (zh) 应用界面生成方法、装置及电子设备
CN111338623B (zh) 一种开发用户界面的方法、装置、介质和电子设备
CN110489323B (zh) 可视化的rpc api调试方法、装置、介质和设备
GB2589658A (en) Method and apparatus for running an applet
CN111581555B (zh) 一种文档加载方法、装置、设备及存储介质
CN111796865B (zh) 一种字节码文件修改方法、装置、终端设备及介质
CN113377365B (zh) 代码显示方法、装置、设备、计算机可读存储介质及产品
CN111309304B (zh) 一种生成idl文件的方法、装置、介质和电子设备
CN112631590B (zh) 组件库生成方法、装置、电子设备和计算机可读介质
CN110489180B (zh) 一种埋点上报方法、装置、介质和电子设备
CN110609687A (zh) 一种编译方法、装置、电子设备和存储介质
CN110389899A (zh) 检测js程序的api数据类型的方法装置、介质和设备
CN112988175A (zh) 跨平台应用安装包的生成方法、装置、介质及电子设备
CN111752644A (zh) 接口模拟方法、装置、设备及存储介质
CN111273967A (zh) 适用于Android系统的远程钩子设置方法、装置及电子设备
CN113448585B (zh) 一种线程池的编译方法、装置、电子设备和存储介质
CN111309323B (zh) 参数初始化方法、装置和电子设备
CN113778451A (zh) 文件加载方法、装置、计算机系统和计算机可读存储介质
CN111782196A (zh) 基于mvp架构的开发方法及装置
CN112015394B (zh) 安卓功能模块开发方法和装置、计算机系统和存储介质
CN111381813A (zh) 前端页面调试方法、装置、计算机设备和存储介质
CN110647405A (zh) 系统消息处理方法、电子设备和计算机可读存储介质
CN109933334B (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
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: 100041 B-0035, 2 floor, 3 building, 30 Shixing street, Shijingshan District, Beijing.

Patentee after: Douyin Vision Co.,Ltd.

Address before: 100041 B-0035, 2 floor, 3 building, 30 Shixing street, Shijingshan District, Beijing.

Patentee before: Tiktok vision (Beijing) Co.,Ltd.

Address after: 100041 B-0035, 2 floor, 3 building, 30 Shixing street, Shijingshan District, Beijing.

Patentee after: Tiktok vision (Beijing) Co.,Ltd.

Address before: 100041 B-0035, 2 floor, 3 building, 30 Shixing street, Shijingshan District, Beijing.

Patentee before: BEIJING BYTEDANCE NETWORK TECHNOLOGY Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20230707

Address after: 100190 1309, 13th floor, building 4, Zijin Digital Park, Haidian District, Beijing

Patentee after: Beijing volcano Engine Technology Co.,Ltd.

Address before: 100041 B-0035, 2 floor, 3 building, 30 Shixing street, Shijingshan District, Beijing.

Patentee before: Douyin Vision Co.,Ltd.