一种设备启动方法及装置与流程

文档序号:13760321阅读:124来源:国知局
本发明涉及通信
技术领域
,特别涉及一种设备启动方法。本发明同时还涉及一种Android设备。
背景技术
:Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑。对于Android开发来说,其大致包含四大组件,分别是:活动(Activity)、服务(Service)、广播接收器(BroadcastReceiver):内容提供商(ContentProvider),其中活动用于表现功能;服务用于后台运行服务,不提供界面呈现;广播接收器用于接收广播;内容提供商支持在多个应用中存储和读取数据,相当于数据库。由于Android设备具备极高的开发自由度,因此专于Android设备的开发人员的数量占比也非常高。随着Android设备的Android版本不断的升级,目前的Android版本增添了很多新的功能,其中一个典型的功能就是系统分区verity功能(又称系统分区支持校验功能)。该功能的提出是基于安全角度的考虑,因为早期的Android版本并不支持系统分区校验,其系统分区在开机后都是将真实的物理设备挂载到对应的目录上,一旦非法用户取得了root权限,就可以直接对系统分区进行修改操作,安全性较低。当Android版本支持支持系统分区校验后,Android设备在开机的过程中并不直接挂载系统分区,而是将该分区与编译阶段生成的校验码进行校验比对,查看当前的系统分区是否有被篡改的情况,并在发现存在篡改的情况时阻止系统启动,保证了用户数据的安全性;相应地,若通过校验比对发现系统分区正常,则将该分区通过虚拟方式创建出一个dm-0的设备镜像,并将该镜像挂载到对应目录上。由于dm-0只是个可以正常读但却不能正常写的镜像,因此即便是非法用户获取了root权限对系统分区进行改动,真正被改动的也只是一个镜像,真正的系统分区没有受到任何改变,重启之后手机仍能恢复到用户改动前的状态。在Android版本增加了系统分区校验功能出现后,对于用户特别是平台厂商是一大福音,但是却对手机开发者造成了不小的困扰。在Android版本尚未增加系统分区校验功能时,开发者只要获取了root权限就可以随意的推送自己写的apk以进行调试。而在Android版本增加了系统分区校验功能后,开发者即便在将Android设备进行root后推送了apk,Android设备也会在重启手机后恢复推送前的状态,这使得开发者的调试过程充满了困难和麻烦。在现有技术下,开发者只能单独重新编译一个不支持系统校验功能的android版本刷到android设备中才能够正常的推送与调试自己开发的app,而无法使用正式的手机版本,这使得app的开发复杂度直线上升。此外,当用户的Android设备出现问题需要前往售后处理时,售后技术人员也会因为不能针对增加了系统分区校验功能的android版本进行推送而无法调查客户手里的手机的问题,从而客服人员导致在面对很多问题时往往束手无策。技术实现要素:本发明提供了一种设备启动方法,用以解决开发或维修过程中由于系统分区校验功能给开发者或维修人员所带来的不便。该方法应用于在自身的特殊分区中预置指定属性的Android设备,该方法还包括以下步骤:当Android设备启动后,根据所述指定属性对应的获取方式从所述特殊分区获取所述指定属性;根据所述指定属性的取值确定是否需要对所述Android设备的系统分区进行校验处理;若是,对所述系统分区进行校验处理;若否,将所述系统分区挂载至与所述系统分区对应的目录。优选地,在所述Android设备启动之前,还包括:所述Android设备接收推送的分区修改请求;所述Android设备根据所述分区修改请求对所述系统分区进行修改;所述Android设备重新进行启动。优选地,在所述Android设备接收推送的分区修改请求之前,还包括:当所述Android设备接收到系统分区校验功能取消请求时,向所述特殊分区写入所述指定属性;所述Android设备重新进行启动。优选地,所述指定属性具体为stable属性,所述特殊分区具体为diag分区;其中,所述stable属性是在判断属性名的开头字符为stable后打开所述diag分区并按属性名在前以及属性值在后的格式写入的。优选地,根据所述指定属性对应的获取方式从所述特殊分区获取所述指定属性,具体为:通过所述属性服务对所述Android设备中各属性的属性名进行判断;若所述属性名的开头字符为stable,打开所述diag分区,并按照属性名在前以及属性值在后的格式读取所述stable属性。相应的,本申请还提出了一种Android设备,所述Android设备在自身的特殊分区中预置指定属性,该设备还包括:获取模块,当所述Android设备启动后,根据所述指定属性对应的获取方式从所述特殊分区获取所述指定属性;判断模块,根据所述指定属性的取值确定是否需要对所述Android设备的系统分区进行校验处理;校验模块,在所述判断模块的判断结果为是时对所述系统分区进行校验处理;挂载模块,在所述判断模块的判断结果为否时将所述系统分区挂载至与所述系统分区对应的目录。优选地,还包括:修改模块,接收推送的分区修改请求,根据所述分区修改请求对所述系统分区进行修改,并在修改完成后重新启动所述Android设备。优选地,还包括:写入模块,当接收到系统分区校验功能取消请求时,向所述特殊分区写入所述指定属性,并在写入完成后重新启动所述Android设备。优选地,所述指定属性具体为stable属性,所述特殊分区具体为diag分区;其中,所述stable属性是在判断属性名的开头字符为stable后打开所述diag分区并按属性名在前以及属性值在后的格式写入的。优选地,所述获取模块具体用于:通过所述属性服务对所述Android设备中各属性的属性名进行判断;若所述属性名的开头字符为stable,打开所述diag分区,并按照属性名在前以及属性值在后的格式读取所述stable属性。通过应用本申请的以上技术方案,预先在Android设备的特殊分区中预置指定属性,当Android设备启动后,根据指定属性对应的获取方式从特殊分区获取指定属性,以及根据指定属性的取值确定是否需要对Android设备的系统分区进行校验处理,并根据判断结果对系统分区进行校验处理或是将系统分区挂载至与系统分区对应的目录。从而在无需更换设备系统版本的前提下解决了系统分区校验功能给开发者和维修人员带来的不便,减轻了开发调试以及检测维修的难度。附图说明图1为本申请提出的一种设备启动方法的流程示意图;图2为本申请具体实施例读取/写入Stable属性/原始属性的示意图;图3为本申请具体实施例中属性值数据的保存格式示意图;图4为本申请具体实施例中开发人员利用设备启动方法进行开发调试的流程示意图;图5为本申请具体实施例中能够绕过系统校验流程的开机流程示意图;图6为本申请提出的一种android设备的结构示意图。具体实施方式如
背景技术
所述,当开发技术人员或者客服维修人员需要在支持系统分区校验的版本上对android设备进行调试或是修改时,需要绕过android设备针对系统分区进行校验的流程,否则针对系统分区所进行的修改会在android设备重新启动后因为系统校验结果为篡改状态而被禁止启动而导致启动失败,随后系统分区又会被还原至修改前的状态,从而使得技术人员之前针对系统分区所做的修改全部被抹掉。导致以上问题出现的原因在于目前的Android设备的软件版本在启动过程中都是按照“先挂载系统分区,再挂载其它分区(例如用户数据分区)”的挂载顺序进行的。而在android设备的众多分区之中,只有系统分区是只读的,而像用户数据分区这样的可写的分区都是在系统分区挂载之后才能被读取、写入以及使用。所以在android设备启动时针对系统分区进行校验的时候,用户数据分区的数据都处于无法使用的状态,而对于一个android设备来说,其任何上层应用所使用的存放数据的地方就是用户数据分区,因此,在用户数据分区中的任何应用数据在系统分区校验时无法被使用的前提下,技术人员也无法从用户数据分区中的数据来绕过android设备启动时针对系统分区进行校验的流程。针对以上现有技术中所存在的问题,本申请提出了一种设备启动方法,该技术方案旨在通过设置一个特殊的标记位来绕过android设备在启动时针对系统分区校验,该标记位用以在android设备的启动过程中表明当前需要跳过校验过程并直接挂载系统分区本体。因此,android设备中的上层应用若想方便的控制设备本身的启动过程,那么需要能够在一个不会因为系统校验而被检测出篡改并被强制还原的分区中写入这样的标记位。但上层应用不管是写数据库、写一般属性还是写文件的方式,都只能在用户数据分区中进行。基于该情况,本申请的技术方案在应用设备启动之前需要在Android设备上的特殊分区中预置指定属性,需要说明的是,该属性其实并不是一个真正的属性,只是借用了标准的属性设置与取值的接口,实现了一种能够往特殊分区直接写入以及获取指示信息的方式(该特殊分区并不需要挂载),从而达到绕过系统分区校验流程的目的。如图1所示,该方法包括以下步骤:S101,当Android设备启动后,根据所述指定属性对应的获取方式从所述特殊分区获取所述指定属性。如
背景技术
所述,由于现有的系统分区以及用户数据分区都无法通过写入数据的方式来影响系统分区校验过程,因此本申请预先选择一个特殊分区,并在该特殊分区中写入指定属性,该指定属性可由android设备在启动后对系统分区进行校验前从特殊分区获取。在本申请的优选实施例中,将stable属性作为指定属性,特殊分区为diag分区。需要说明的是,该stable属性对外开放的接口跟普通的属性设置与获取一致,都是使用一般android设备中所具有的setprop或者getprop等接口。进一步地,为了将该指定属性与android设备的系统中所包含的其他属性区分开,本申请优选实施例将该stable属性设置为在判断属性名的开头字符为stable后打开diag分区写入。相应地,获取该指定属性的流程如下:步骤a)通过所述属性服务对所述Android设备中各属性的属性名进行判断;步骤b)若所述属性名的开头字符为stable,打开所述diag分区,并读取所述stable属性。需要说明的是,该流程主要针对指定属性的获取进行了说明,因此在判断属性名的开头字符非stable时,则可以根据不同的属性采取现有的其他处理流程,例如写入用户数据分区中的固定文件或从固定文件进行读取等,同时,在写入/读取该指定属性的过程中,按照技术人员事先指定的方式进行。例如按属性名在前以及属性值在后的格式对指定属性进行写入/读取,这些都不影响本申请的保护范围。如图2所示,为本申请具体实施例读取/写入Stable属性/原始属性的示意图,包含以下步骤:S201,android设备利用属性服务(PropertyService)判断当前检测的属性名是否以stable开头,若是转到S202,否则转到S203;S202,android设备打开diag块设备;S203,android设备进行其它处理流程;S204,android设备通过PropertyService按照“属性名+属性值(32字节+92字节)”的格式一段一段写入或读取属性。以上只是基于具体的属性类型以及具体的分区类型对指定属性的读取以及写入进行描述,当技术人员采取其他类型的指定属性或是特殊分区时,亦可以通过类似的步骤完成读取以及写入的步骤,这些改变均在本申请的保护范围之内。如图3所示,为本申请具体实施例中为该指定属性设置的数据的保存格式示意图,在property_service中针对stable开头的属性名进行了特殊的处理。若发现属性名以stable开头,就将属性名以及对应的属性内容通过对diag分区进行直接写入的方式保存到diag分区。由于是直接对diag分区的块设备进行读写操作而不需要挂载,因此应用本申请技术方案的android设备在开机时候可通过该指定属性绕过系统分区的校验流程。以上流程阐述了指定属性以及特殊分区能够在android设备启动过程中先于系统分区被校验被读取,该功能对于用户来说平时是不需要的,但是在开发人员或是客服支持人员有需要的情况下需要通过特殊的方式启用。因此,在实际的开发应用场景中,当开发人员需要向android设备推送修改时,需要预先通过一个专门的请求(系统分区校验功能取消请求)取消系统分区的校验功能。该请求会指示android设备向特殊分区写入指定属性。在本申请的优选实施例中,当该android设备接收到系统分区校验功能取消请求时,将向特殊分区写入指定属性,并在将指定属性写入特殊分区之后重新进行启动。通过上一个步骤,android设备在重新启动之后,即实现了系统分区校验功能的取消,后续针对该android设备分区的修改不会再因为校验判断为篡改而被取消,后续在当android设备重启并将系统分区挂载至与系统分区对应的目录(即绕过了系统分区的校验过程)之后,开发者可向Android设备推送分区修改请求,相应地,当Android设备接收推送的分区修改请求后,根据分区修改请求对系统分区进行修改,并在系统分区修改完毕后重新进行启动。在本申请的一个具体实施例中,开发人员在开发调试过程中应用本申请技术方案来绕过android设备启动过程中针对系统分区校验的示意图如图4所示,在该具体实施例中,包括以下步骤:S401,开发人员通过专门的应用或者是代码进行设置,关闭待修改的android设备的系统分区验证功能,即在该android设备的特殊分区中设置指定属性,具体的设置方式可以通过代码或是应用的方式完成;S402,开发人员将android设备进行重启处理,该重启后的android设备的系统分区校验功能已经被关闭;S403,开发人员向android设备的系统分区推送需要修改的内容;S404,android手机根据开发人员所推送的内容,直接对系统分区进行修改;S405,开发人员将重新将android设备启动;S406,重启后的android设备根据指定属性对应的获取方式从特殊分区获取指定属性,并根据指定属性的取值确定不需要对Android设备的系统分区进行校验处理,因此直接将系统分区挂载至与系统分区对应的目录。这样开发人员针对android设备的系统分区所做的修改不会因为系统分区的校验而被还原。通过应用以上开发调试方法,android设备在启动之后,其系统分区仍然保持了被修改状态,开发人员针对该手机所推送的修改生效。在以上流程中,由于指定属性是在对android设备的系统进行校验前读取的,因此在通过s101获取到指定属性后,本步骤通过对属性取值进行分析,进而确定是否需要对系统分区进行校验处理或是将系统分区挂载至与其对应的目录(即跳过系统分区校验流程)。在该过程中,属性的取值可以按照android设备的系统版本或者事先约定的指示值进行设置,在能够通过属性的取值明确确定是否对系统分区进行校验的前提下,不同的取值均属于本申请的保护范围。为了准备地对android设备在启动过程中系统分区校验的绕过过程进行阐述,现结合图5所示的开机流程示意图进行说明,该具体实施例中的android设备在平时的状态下具备系统分区校验功能以防止恶意篡改,相应地,在开发人员针对其中的特殊分区添加了指定属性后,其也能够在重启过程中绕过系统分区的校验流程,后续开发人员可以继续向该android设备推送修改,而不用担心会因为设备重启而导致修改被还原。具体地,在开发人员针对该android设备的特殊分区增加了指定属性之后,该实施例包括以下步骤:S501,当用户将该android设备开机后,该android设备即进行系统分区的挂载准备;S502,android设备通过系统服务在自身的特殊分区中获取指定属性,即stable.system.verity属性;S503,android设备根据所获取的stable.system.verity属性的取值,判断当前的系统分区是否需要进行校验处理,若是转到S504,否则转到S505;S504,android设备确认对其系统分区进行校验处理;S505,android设备将系统分区挂载到与系统分区所对应的目录上;S506,android设备判断验证是否通过,若验证通过,转至S507,若验证不通过,转至S508;S507,android设备对系统分区的dm-0镜像进行虚拟;S508,android设备发现自身的系统分区被篡改,禁止当前的设备启动,并结束流程;S509,android设备将dm-0镜像挂载到与其相对应的目录下;S510,android设备将自身中存在的其他分区(例如用户数据分区)进行挂载,并在所有的分区都挂载完毕之后结束流程。由此可见,通过应用本申请的以上技术方案,预先在Android设备的特殊分区中预置指定属性,当Android设备启动后,根据指定属性对应的获取方式从特殊分区获取指定属性,以及根据指定属性的取值确定是否需要对Android设备的系统分区进行校验处理,并根据判断结果对系统分区进行校验处理或是将系统分区挂载至与系统分区对应的目录。从而在无需更换设备系统版本的前提下解决了系统分区校验功能给开发者和维修人员带来的不便,减轻了开发调试以及检测维修的难度。为了进一步阐述本发明的技术思想,现结合具体的应用场景对本发明的技术方案进行说明,该具体实施例的过程的实现方式如下:步骤a)当开发人员需要因为开发调试的原因需要取消android设备的系统分区校验功能,开发人员在应用侧通过暗码的方式(如拨号盘中输入*1973463#)打开关于系统分区校验功能的控制界面;步骤b)开发人员在应用的控制界面上选择取消系统分区校验功能;步骤c)响应于开发人员的选择操作,应用向该android设备的特殊分区写入一个stable属性,并同时为该stable属性赋值,在该具体实施例中,若stable属性取值为true,则说明无需跳过系统分区的校验流程;若stable属性的取值为false,则说明跳过系统分区的校验流程,在该步骤中,stable属性的名称为stable.system.verity=false;步骤d)开发人员将修改了stable属性后的android设备重新启动;步骤e)修改了stable属性的android设备开机后,将会在其系统分区被校验之前使用stable属性的方式直接打开diag分区,并获取当前属性名为stable.system.verity的stable属性的取值,按照上一个步骤的描述,该步骤中所取得的值为false;步骤f)由于False代表跳过系统分区校验流程,因此android设备在启动的过程中跳过针对系统分区的校验过程以及创建dm-0镜像的过程;步骤g)android设备将真实的系统分区挂载到与系统分区所对应的目录下,操作完成。通过上述流程,系统分区可以被android设备绕过其系统分区校验流程成功进行挂载,后续开发人员可以继续对系统分区进行修改。实现该过程并不需要像现有技术更换android设备的系统版本,开发人员仅通过应用写入属性的方式将该android设备的系统分区校验过程取消即可。相对于重新对android设备的系统版本重新设置,这个过程只是需要开发人员进入隐藏菜单开启一项功能,省去了重新编译特殊版本的麻烦,大大的减轻了开发调试的难度。为达到以上技术目的,本申请还提出了一种Android设备,如图5所示,该Android设备在自身的特殊分区中预置指定属性,该设备还包括:获取模块610,当所述Android设备启动后,根据所述指定属性对应的获取方式从所述特殊分区获取所述指定属性;判断模块620,根据所述指定属性的取值确定是否需要对所述Android设备的系统分区进行校验处理;校验模块630,在所述判断模块的判断结果为是时对所述系统分区进行校验处理;挂载模块640,在所述判断模块的判断结果为否时将所述系统分区挂载至与所述系统分区对应的目录。在具体的应用场景中,还包括:写入模块,当所述Android设备接收到系统分区校验功能取消请求时,向所述特殊分区写入所述指定属性,并在将所述指定属性写入所述特殊分区之后重新进行启动。在具体的应用场景中,还包括:修改模块,接收推送的分区修改请求,并根据所述分区修改请求对所述系统分区进行修改,以及在所述系统分区修改完毕后重新进行启动。在具体的应用场景中,所述指定属性具体为stable属性,所述特殊分区具体为diag分区;其中,所述stable属性是在判断属性名的开头字符为stable后打开所述diag分区写入的。在具体的应用场景中,所述获取模块具体用于:对所述Android设备中各属性的属性名进行判断;若所述属性名的开头字符为stable,打开所述diag分区并读取所述stable属性。通过应用本申请的以上技术方案,预先在Android设备的特殊分区中预置指定属性,当Android设备启动后,根据指定属性对应的获取方式从特殊分区获取指定属性,以及根据指定属性的取值确定是否需要对Android设备的系统分区进行校验处理,并根据判断结果对系统分区进行校验处理或是将系统分区挂载至与系统分区对应的目录。从而在无需更换设备系统版本的前提下解决了系统分区校验功能给开发者和维修人员带来的不便,减轻了开发调试以及检测维修的难度。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施场景所述的方法。本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本发明所必须的。本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。上述本发明序号仅仅为了描述,不代表实施场景的优劣。以上公开的仅为本发明的几个具体实施场景,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1