[发明专利]一种检测Android应用Service构件泄露的高效方法有效
申请号: | 201710790636.4 | 申请日: | 2017-09-05 |
公开(公告)号: | CN107590013B | 公开(公告)日: | 2020-12-04 |
发明(设计)人: | 马骏;陶先平;吕建 | 申请(专利权)人: | 南京大学 |
主分类号: | G06F11/07 | 分类号: | G06F11/07;G06F11/36 |
代理公司: | 南京知识律师事务所 32207 | 代理人: | 张苏沛 |
地址: | 210046 江苏*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 检测 android 应用 service 构件 泄露 高效 方法 | ||
本发明提供了快速检测安卓应用潜在的Service构件泄露的方法。其特征在于,包括以下步骤:步骤1、重复尝试“启动(start)并停止(stop)”以及“绑定(bind)并解绑(unbind)”应用在其AndroidManifest.xml文件中所声明的各个service;步骤2、获取应用堆栈内存;步骤3、分析应用堆栈内存,鉴别泄露的Service构件。本发明的能准确的检测安卓应用潜在的Service构件泄露风险,具有全自动、效率高、可重现等特征。
技术领域
本发明专利涉及安卓软件应用,内存泄露检测领域,尤其涉及一种检测安卓应用Service构件泄露的高效方法。
背景技术
近年来,随着移动设备的普及,基于移动设备的安卓应用数量不断增加。然而,由于安卓复杂的生命周期管理机制,开发安卓应用极容易引入泄露Service构件的可能性。这些潜在的应用构件的泄露,会不断消耗系统内存等资源,导致应用卡顿甚至崩溃,极大的影响用户体验和商家品牌形象。为此,如何自动化高效的检测应用潜在的Service构件的泄露,有着极大的意义。然而,现有检测安卓应用Service泄露的工作要么需要大量的人工介入,要么难以重现泄露场景。为此,本发明旨在为安卓应用潜在的Service构件的泄露现象的自动化检测提供一个快速检测方案。
发明内容
本发明主要针对现有工作的不足,提出了一种检测Android应用Service构件泄露的高效方法。
该方法基于以下现实:安卓应用往往包含一系列的Service,这些Service中部分仅仅供应用内部使用(“android:exported=false”),还有一部分可供本应用之外的其他应用的各种构件所使用(“android:exported=true”);对于“android:exported=true”的Service,其他应用的构件可以通过startService()或bindService()两个API来访问该应用;通常情况下,两种方式都会创建Service实例;当不需要使用该服务的时候,应用构件可以通过stopService()或unbindService()两个方法来停止服务或解除对服务的绑定。当一个Service实例被停止并且没有其他构件绑定该服务的时候,系统则会自动销毁该Service实例;安卓系统为了管理应用的Service实例,在应用对应的ActivityThread实例中提供了专门用于记录处于运行态的服务的域mServices;当一个Service实例被创建,则会在mServices域中添加对该实例的间接引用,当一个Service实例被销毁,mServices域也会自动删除相应的引用关系。通过对mServices域值的比较,可以判断Service实例是否已被销毁;不能被GC回收的Service实例,一定存在通往GC root的不包含SoftReference、WeakReference、PhantomReference、FinalizerReference以及Finalizer类型对象的路径。
为了实现上述发明目的,本发明采用的技术方案为:
一种安卓应用Service构件泄露的高效检测方法,其特征在于,分为主程序(Master)与客户端检测应用(APKchecker)两部分。主程序(Master)运行在PC端,客户端检测应用(APKchecker)运行在测试安卓设备(安卓实体机或虚拟机)上。其主要步骤包括:
步骤一、主程序(Master)借助Android-Debug-Bridge(ADB)安装待检测应用APKtarget;
步骤二、主程序(Master)借助Android-Debug-Bridge(ADB)安装客户端检测应用(APKchecker);
步骤三、主程序(Master)以“Start模式”启动客户端检测应用(APKchecker);
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710790636.4/2.html,转载请声明来源钻瓜专利网。