安卓应用日志的实现方法和装置制造方法及图纸

技术编号:15762859 阅读:415 留言:0更新日期:2017-07-05 23:09
本申请提供一种安卓应用日志的实现方法,包括:将本应用的日志记录写入属于本应用进程的存储空间;读取所述日志记录,根据预定条件生成本应用的日志。通过本申请的技术方案,不必增加新的进程即可实现通过应用进程所在的设备或远程查看应用的日志,实现简单,节省了所在设备的资源,不会对耗电量造成影响。

Method and device for implementing Android application log

The invention provides a method, a Android application log includes: the application of writing log records storage space belongs to the application process; reading the log records, according to predetermined conditions the log application cost. Through the technical scheme of the application, do not need to add new process can be realized through the application process where the equipment or remote viewing application log, simple, save where the equipment resources, will not affect the power consumption.

【技术实现步骤摘要】
安卓应用日志的实现方法和装置
本申请涉及计算机及软件
,尤其涉及一种安卓应用日志的实现方法和装置。
技术介绍
在软件开发和测试过程中,对于定位软件中存在的问题,日志具有难以替代的作用。即使在软件完成测试、正式发布之后,仍有可能存在缺陷,定位缺陷如果没有日志来辅助,无异于盲人摸象。对Android(安卓)系统中的应用,可以使用系统提供的日志工具来产生应用的日志,但是需要将运行应用的移动设备通过USB(UniversalSerialBus,通用串行总线)等本地连接方式接入个人电脑后,利用个人电脑上的adb(androiddebugbridge,安卓调试桥)工具才能查看和分析这些日志。现有技术还提供了另一种获得应用日志的方案,运行一个日志获取进程,通过调用Android系统提供的函数,实时向Android自带的系统日志进程请求某个应用的日志,并且将获得的日志传递给该应用的进程。这样,查看日志不再需要本地连接个人电脑。但是,这种方案需要运行一个新的进程来在系统日志进程和应用进程之间传递日志,实现复杂;并且由于安卓的系统日志进程始终处于运行状态,这个新的日志获取进程也需要一直运行,要一直占用移动设备上有限的系统资源,并且使得移动设备耗电量增加。
技术实现思路
有鉴于此,本申请提供一种安卓应用日志的实现方法,包括:将本应用的日志记录写入属于本应用进程的存储空间;读取所述日志记录,根据预定条件生成本应用的日志。本申请还提供了一种安卓应用日志的实现装置,包括:日志记录写入单元,用于将本应用的日志记录写入属于本应用进程的存储空间;应用日志生成单元,用于读取所述日志记录,根据预定条件生成本应用的日志。由以上技术方案可见,本申请的实施例中,应用进程将自身的日志记录写入到本应用进程的存储空间,而非系统日志进程的存储空间,应用进程可以利用这些日志记录生成本应用的日志,从而不必增加新的进程即可实现通过应用进程所在的设备或远程查看应用的日志,实现简单,节省了所在设备的资源,不会对耗电量造成影响。附图说明图1是本申请实施例中一种安卓应用日志的实现方法的流程图;图2是本申请应用示例中一种应用日志生成过程的示意图;图3是终端或服务器的一种硬件结构图;图4是本申请实施例中一种安卓应用日志的实现装置的逻辑结构图。具体实施方式Android系统提供了自带的日志实现机制。系统中运行的应用可以通过调用android.util.log类来输出应用的日志记录。android.util.log类提供了Log.v()、Log.d()、Log.i()、Log.w()、Log.e()、Log.println()等多个Java层方法,可以由应用进程直接调用,来将应用进程在运行中产生的日志记录输出到系统的日志设备文件中。系统的日志设备文件用来在系统中运行的所有应用进程与Android系统自带的系统日志进程Logcat之间传递日志记录。系统日志进程Logcat在日志设备文件中读取所有应用的日志记录,生成各个应用的日志,用户可以通过运行在本地连接的个人电脑上adb工具来查看。而前述现有技术的实现方案中,则是运行一个新的进程,来向系统日志进程logcat请求属于某个应用的日志,并对logcat进程是否生成了该应用的新日志进行实时监控,以及时获得该应用的新日志。本申请的实施例提出一种新的安卓应用日志的实现方法,将应用进程产生的日志记录的输出,从现有技术中的系统日志设备文件修改为属于本应用进程的存储空间,由应用进程利用日志记录来生成日志,这样,不需额外的进程即可在应用所安装的设备上或者远程查看该应用的日志,避免了对设备系统资源和电量的消耗,以解决现有技术中存在的问题。本申请的实施例应用在运行Android系统应用程序的终端或服务器上,其中,终端可以是手机、平板电脑、PC(PersonalComputer,个人电脑)、笔记本等设备;服务器可以是物理或逻辑服务器;不做限定。本申请的实施例中,Android应用日志的实现方法的流程如图1所示。步骤110,将本应用的日志记录写入属于本应用进程的存储空间。Android系统为每个进程分配了独立的存储空间,一个进程不能直接访问属于另一个进程的存储空间。每个应用的日志记录由该应用的进程来搜集,本专利技术的实施例中,应用进程在采集运行中的日志记录后,将日志记录写入到Android系统为本应用进程分配的存储空间中。根据Android系统所在设备的具体实现,存储空间可以是内存、虚拟内存、闪存或其他存储设备中的一段到几段可读写的地址范围。应用进程可以采用自定义的方式来采集本应用的日志记录,并将采集到日志记录写入属于本应用进程的存储空间中,但是,这种方式改变了开发人员的习惯,并且增加了应用的编程复杂程度。为了避免上述两个问题,在一种实现方式中,可以利用Android系统提供的native函数注册机制来将应用进程日志记录的输出,由现有的设备文件修改为分配给本应用进程的存储空间。Android系统中的java层方法在运行时,其调用的每个函数对应于Java虚拟机中的一个数据结构,该数据结构有属性来表示该函数是否是一个native函数,并且包含一个指针来指向对应的native函数。Android的JNI提供了一个动态注册native函数的方式,在动态注册后Java虚拟机中该函数对应的数据结构中,指针会指向新注册的native函数,这样,在Java虚拟机将调用新注册的native函数,而不会运行动态注册前指针指向的native函数。本申请的实施例中,可以通过动态注册用于日志记录输出的native函数,在新注册的native函数中将日志记录输出到分配给本应用进程的存储空间中,即可通过调用注册后的native函数来将本应用的日志记录写入属于本应用进程的存储空间。这样,只要修改并动态注册用于日志记录输出的native函数,开发人员调用动态注册后Android系统的日志工具即可实现本步骤。具体而言,应用进程可以通过调用Android系统提供的android.util.log类中的各种Java层方法,如Log.v()、Log.d()、Log.i()、Log.w()、Log.e()、Log.println()等来输出应用运行中产生的日志记录。android.util.log类中的上述Java层方法都通过调用JNI(JavaNativeInterface,Java本地接口)的native(本地)函数println_native来将应用的日志记录输出到系统的日志设备文件。这样,修改println_native函数,将日志记录的输出从系统日志设备文件修改为应用进程的存储空间后,动态注册修改后的println_native函数,开发人员在编程时仍调用android.util.log类中的上述各种Java层方法来实现日志记录的输出,而该应用的日志记录即可写入到属于该应用进程的存储空间中。应用进程可以在属于其的存储空间中设置一段缓冲区,来存放在运行的过程中不断产生的日志记录。应用进程可以将本应用的日志记录按照循环队列写入设置的缓冲区中。当有新的日志记录产生时,应用进程将新的日志记录写入循环队列当前写指针指向的存储位置,并将写指针向循环队列的尾部移动,如本文档来自技高网...
安卓应用日志的实现方法和装置

【技术保护点】
一种安卓应用日志的实现方法,其特征在于,包括:将本应用的日志记录写入属于本应用进程的存储空间;读取所述日志记录,根据预定条件生成本应用的日志。

【技术特征摘要】
1.一种安卓应用日志的实现方法,其特征在于,包括:将本应用的日志记录写入属于本应用进程的存储空间;读取所述日志记录,根据预定条件生成本应用的日志。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:将本应用的日志保存在本地或通过网络传输给其他主机。3.根据权利要求1所述的方法,其特征在于,所述将本应用的日志记录写入属于本应用进程的存储空间,包括:在属于本应用进程的存储空间中设置缓冲区,将本应用的日志记录按照循环队列写入所述缓冲区。4.根据权利要求3所述的方法,其特征在于,所述读取日志记录,根据预定条件生成本应用的日志,包括:当所述缓冲区中有未读取的日志记录时,读取所述未读取的日志记录,根据预定条件生成本应用的日志。5.根据权利要求1所述的方法,其特征在于,所述预定条件包括预定过滤条件和/或预定分组条件;所述预定过滤条件用来对读取的日志记录进行筛选;所述预定分组条件用来将日志记录归属为不同类型的日志。6.根据权利要求1所述的方法,其特征在于,所述将本应用的日志记录写入属于本应用进程的存储空间,包括:动态注册用于日志记录输出的安卓本地native函数,调用注册后的native函数将本应用的日志记录写入属于本应用进程的存储空间。7.根据权利要求6所述的方法,其特征在于,所述安卓native函数包括:println_native函数。...

【专利技术属性】
技术研发人员:黎三平
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛,KY

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1