CN103559065B - 一种ota升级的方法和系统 - Google Patents

一种ota升级的方法和系统 Download PDF

Info

Publication number
CN103559065B
CN103559065B CN201310571817.XA CN201310571817A CN103559065B CN 103559065 B CN103559065 B CN 103559065B CN 201310571817 A CN201310571817 A CN 201310571817A CN 103559065 B CN103559065 B CN 103559065B
Authority
CN
China
Prior art keywords
module
entrance
software
upgrading
name
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.)
Active
Application number
CN201310571817.XA
Other languages
English (en)
Other versions
CN103559065A (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.)
Guangdong Oppo Mobile Telecommunications Corp Ltd
Original Assignee
Guangdong Oppo Mobile Telecommunications Corp 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 Guangdong Oppo Mobile Telecommunications Corp Ltd filed Critical Guangdong Oppo Mobile Telecommunications Corp Ltd
Priority to CN201310571817.XA priority Critical patent/CN103559065B/zh
Publication of CN103559065A publication Critical patent/CN103559065A/zh
Application granted granted Critical
Publication of CN103559065B publication Critical patent/CN103559065B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明公开了一种OTA升级的方法和系统,该方法包括:S1:在OTA服务器中设置第一存储模块和第一入口模块,以及设置记录模块;S2:将第一存储模块、第一入口模块和记录模块合成OTA升级包;S3:将OTA升级包发送至移动终端,利用OTA升级包对移动终端进行升级。实施本发明的有益效果是,即使后续OTA升级包中更改包名还是入口类名,软件进行OTA升级后可以保持手机桌面原有的显示位置不变。

Description

一种OTA升级的方法和系统
技术领域
本发明涉及移动通信技术领域,更具体地说,涉及一种OTA升级的方法和系统。
背景技术
目前各大运营商一般将软件版本升级包置于OTA(Over-the-Air Technology,空中下载技术)服务器中,移动终端基于当前软件版本,自动或手动于OTA服务器中搜索相应软件版本的升级包,并将软件版本升级包下载到移动终端上,将本机版本升级为新的软件版本。
但是对于手机厂商来说,一般都会针对手机软件发布OTA软件版本帮助用户升级最新的软件版本,但同时要尽可能保证升级时不会清除用户的数据。而对于桌面来说,如果清除了数据,用户在升级前分类整理好的图标在升级完成后会产生排序错误。这是因为,厂商在制作OTA升级软件时有可能会更改某些之前内置应用的包名或者类名,而且手机自带的系统软件一般都是不可以卸载的。一旦出现这种情况,系统在升级完成后开机,更改后的应用程序由于无法从数据库中找到相同的包名和类名的数据,最终就会导致这几个应用被误当做新安装的程序,图标的位置也发生了变化。
Android(安卓)系统中标识每个应用程序的唯一性是通过应用程序的包名和入口类名来确定的。桌面在重新加载时会根据从包管理中读取的应用程序的包名和类名,与数据库中保存的应用程序的包名和类名信息进行匹配,从而从数据库中得到应用程序正确的位置信息,如果在数据库中找不到记录就认为该应用是新安装的应用,此时会将图标插入到其他空白位置或者最后面的位置。因此,在Android软件进行OTA升级后,如何防止应用程序排序错误是很有必要的。
发明内容
本发明要解决的技术问题在于,针对现有技术的上述缺陷,提供一种OTA升级的方法和系统。
本发明解决其技术问题所采用的技术方案是:构造一种OTA升级的方法;
S1:在OTA服务器中设置第一存储模块和第一入口模块,其中,所述第一存储模块至少包括第一版本号,所述第一入口模块用于标识升级后的软件的存储地址,所述第一版本号用于标识升级后的软件的版本;
在OTA服务器中设置用于读取待升级的软件的第二存储模块和第二入口模块的记录模块,其中,第二存储模块至少包括第二版本号,所述第二入口模块用于唯一标识待升级的软件的存储地址,所述第二版本号用于标识待升级的软件的版本;
S2:将所述第一存储模块、第一入口模块和记录模块合成OTA升级包;
S3:将所述OTA升级包发送至移动终端,利用所述OTA升级包对所述移动终端进行升级。
在本发明所述的方法中,所述步骤S3包括以下子步骤:
S31:在所述移动终端中,设置包括位置信息的桌面数据库,并建立所述位置信息与第二入口模块的对应关系,所述位置信息用于确定待升级的软件的桌面位置;
S32:在所述移动终端中,安装所述OTA升级包对软件升级,读取所述第一存储模块和第一入口模块;解析所述OTA升级包的记录模块,读取待升级的软件的第二存储模块和第二入口模块,将第二版本号存储在所述第一存储模块中;
S33:比较所述第一版本号和第二版本号,若一致,转至步骤S35;若不一致,转至步骤S34;
S34:将所述位置信息与第二入口模块的对应关系更新为所述位置信息与第一入口模块的对应关系;
S35:加载桌面程序并切换至桌面。
在本发明所述的方法中,所述步骤S1还包括:设置所述第一入口模块的第一包名和第一入口类名,所述第一包名用于标识升级后的软件的存储地址,所述第一入口类名用于启动所述升级后的软件;
所述第二入口模块包括第二包名和第二入口类名,所述第二包名用于标识升级后的软件的存储地址,所述第二入口类名用于启动所述升级后的软件。
在本发明所述的方法中,所述步骤S32还包括:
读取所述第二入口模块的第二包名和第二入口类名;
设置用于存储所述第二入口模块的资源文件。
读取所述第一入口模块的第一包名和第一入口类名;
将所述第一入口模块存储到资源文件。
在本发明所述的方法中,所述步骤S34还包括,读取资源文件。
在本发明所述的方法中,该方法还包括:
在所述步骤S34之前,比较所述第一包名和第二包名,以及比较第一入口类名和第二入口类名;若所述第一包名和第二包名一致,且第一入口类名和第二入口类名一致,转至S35;若所述第一包名和第二包名不一致,或者所述第一入口类名和第二入口不一致,或者所述第一包名和第二包名以及所述第一入口类名和第二入口都不一致,转至S34;
在所述步骤S35之后,保存第一存储模块,删除第二存储模块。
本发明的另一方面,提供一种OTA升级的系统,包括OTA服务器和移动终端;
所述OTA服务器包括:
设置模块,用于设置第一存储模块和第一入口模块,其中,所述第一存储模块包括升级数据和第一版本号,所述第一入口模块用于标识升级后的软件的存储地址,所述第一版本号用于标识升级后的软件的版本;
以及设置用于记录待升级的软件的第二存储模块和第二入口模块的记录模块,其中,第二存储模块包括待升级的原始数据、第二版本号和用于确定桌面位置的位置信息,所述第二入口模块用于唯一标识待升级的软件的存储地址,所述第二版本号用于标识待升级的软件的版本;
合成模块,用于将所述第一存储模块、第一入口模块和记录模块合成OTA升级包;
通信模块,用于将所述OTA升级包发送至移动终端;
所述移动终端包括:
解析模块,用于解析所述记录模块并读取待升级的软件的第二存储模块和第二入口模块;
安装模块,用于安装所述OTA升级包对软件升级,读取所述第一存储模块和第一入口模块,将第二版本号存储在所述第一存储模块中;
比较模块,用于比较所述第一版本号和第二版本号;
更新模块,用于将所述位置信息与第二入口模块的对应关系更新为所述位置信息与第一入口模块的对应关系;
加载模块,用于加载桌面程序并切换至桌面;
桌面数据库,包括用于确定待升级的软件的桌面位置的位置信息,用于建立所述位置信息与第二入口模块的对应关系。
在本发明所述的系统中,所述第一入口模块包括第一包名和第一入口类名,所述第一包名用于标识升级后的软件的存储地址,所述第一入口类名用于启动所述升级后的软件;
所述第二入口模块包括第二包名和第二入口类名,所述第二包名用于标识升级后的软件的存储地址,所述第二入口类名用于启动所述升级后的软件。
在本发明所述的系统中,该系统还包括资源模块,所述资源模块用于存储所述资源文件,并建立所述第一入口模块和第二入口模块的对应关系;
所述解析模块还用于读取所述第二入口模块的第二包名和第二入口类名,读取所述第一入口模块的第一包名和第一入口类名,以及读取所述资源文件。
在本发明所述的系统中,所述比较模块还用于比较所述第一入口模块和第二入口模块。
实施本发明的OTA升级的方法和系统,具有以下有益效果:即使后续OTA升级包中更改包名还是入口类名,软件进行OTA升级后可以保持手机桌面原有的显示位置不变。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是本发明第一实施例提供的一种OTA升级的方法的流程图;
图2是本发明提供的OTA升级包的结构示意图;
图3是本发明提供的待升级的软件的结构示意图;
图4是本发明第一实施例提供的一种OTA升级的系统的方框图;
图5是本发明第二实施例提供的一种OTA升级的方法的流程图;
图6是本发明第二实施例提供的一种OTA升级的系统的方框图;
图7是本发明第三实施例提供的一种OTA升级的方法的流程图。
具体实施方式
为了对本发明的技术特征、目的和效果有更加清楚的理解,现对照附图详细说明本发明的具体实施方式。
如图1所示,在本发明提供的一种OTA升级的方法的流程图中,提供了一种在OTA服务器合成的OTA升级包10(如图2所示)以及在移动终端2进行OTA升级的方法,这里的移动终端2主要针对安装了安卓系统的手机,本发明中提供的OTA升级包10主要适用于由厂商开发的安卓系统ROM软件,在安卓软件OTA升级中,该OTA升级包10中包含供多个软件升级的安装包,每个安装包需自身配置activity的meta-data属性,并在资源文件中定义保存修改记录的字符串资源,有修改包名类名的应用软件(可以有多个应用都修改包名类名)才需要按此格式的要求配置meta-data属性;只是修复了内部缺陷的那种应用软件就不需要配置meta-data。故在OTA服务器1中,所述合成OTA升级包10的方法包括:
S1:设置用于软件升级的第一存储模块11和第一入口模块12,其中,所述第一存储模块11包括第一版本号,所述第一入口模块12包括第一包名和第一入口类名;第一存储模块11和第一入口模块12为现有技术提供的OTA升级包10;设置所述第一入口模块(12)的第一包名和第一入口类名,所述第一包名用于标识升级后的软件的存储地址,所述第一入口类名用于启动所述升级后的软件。
所有存储类(即第一存储模块11或第二存储模块31)均存储在数据库。而入口类是指在应用程序中的AndroidManifest.xml中配置了<category android:name="android.intent.category.LAUNCHER"/>的activity。也就是在主菜单中点击应用图标时启动的那个类。
比如:在未做任何升级前厂商内置的相机apk在之前的版本中文件名称为Camera.apk,此时这个apk是放在system/app目录下。应用的包名为com.android.camera,入口类名为com.android.cameraLauncher。
用户如果使用的是这个版本的系统软件,在开机完成后,桌面数据库中会记录相机apk的位置信息,这个信息是通过包名(com.android.camera)和入口类名(com.android.cameraLauncher)这两个来同时确定的。
设置用于记录待升级的软件30(如图3所示,待升级的软件设置在移动终端2上)的第二存储模块31和第二入口模块32的记录模块13,其中,第二存储模块31包括第二版本号和用于确定桌面位置的位置信息,所述第二入口模块32包括第二包名和第二入口类名;利用AndroidManifest.xml中的meta-data属性记录修改前的包名和入口类名(即第二入口模块32)。通过读取修改前的包名和入口类名,OTA升级包10在安装后可以查询每个软件是否配置有这个属性,来判断包名或类名是否改变。
该部分通过在升级包的activity标签下添加如下代码:
以读取待升级的软件30的第二存储模块31和第二入口模块32。
注:oldComponentName和oldComponentNameVersion名称需要规范一个固定的名称。桌面需要通过这两个名称来解析meta-data
oldComponentName用来指向一个记录了该应用所有修改前的包名和入口类名(即第二包名和第二入口类名)的字符串数组。
oldComponentNameVersion用来记录修改的版本(即第二版本号),每修改一次,value值就加1。
在资源文件添加如下代码:
<string-array name="OldComponentNameLists">
<item>com.example.mainapk/com.example.mainapk.MainActivity</item>
<item>…</item>//每更新一次,增加一个item项,item内容为记录更新前的包名和入口类名
</string-array>
OldComponentNameLists:应用所有修改的包名和类名信息的记录在该数组中,每升级一次增加一个item。
在资源文件中增加代码是由于,<meta-data>在使用时还是有一定限制:不能针对一个Key值,直接添加多个Value值。本发明中提到的oldComponentName和oldComponentNameVersion名称需要规范一个固定的名称。桌面需要通过这两个名称来解析meta-data。这里的oldComponentName和oldComponentNameVersion相当于Key值。
虽然<meta-data>不支持一个key值直接添加多个Value,但可以将value值引用为一个字符串数组资源,而字符串数组资源中是可以定义多个value值的。
增加上述代码后,不仅可以在升级后的软件记录升级前的包名和入口类名,还能查找到升级前的包名和入口类名。
S2:将所述第一存储模块11、第一入口模块12和记录模块13合成OTA升级包10;相当于将新添加的模块打包到升级包中,对原升级数据不做修改。
S3:将该OTA升级包10推送至移动终端2,利用所述OTA升级包10对所述移动终端2进行升级。
在移动终端2的软件安装OTA升级包10时,为了保证该软件的桌面位置的正确性,包括以下步骤:
S31:在所述移动终端(2)中,设置包括位置信息的桌面数据库,并建立所述位置信息与第二入口模块(32)的对应关系,所述位置信息用于确定待升级的软件(30)的桌面位置;
S32:在所述移动终端(2)中,安装所述OTA升级包(10)对软件升级,读取所述第一存储模块(11)和第一入口模块(12);解析所述OTA升级包(10)的记录模块(13),读取待升级的软件(30)的第二存储模块(31)和第二入口模块(32),将第二版本号存储在所述第一存储模块(11)中;
如果包名或者入口类名在开发中做了修改,不采取相应的措施,是会使其桌面图标位置错误的。
比如:内置的相机apk在之前的版本中文件名称为Camera.apk,此时这个apk是放在system/app目录下。应用的包名为com.android.camera,入口类名为com.android.cameraLauncher。
下次开机启动桌面时使用应用当前自身的包名和类名去桌面数据库中查询对应的结果,如果从数据库中能找到记录,就从数据库中读取相应的位置信息。没有根据特定规则,在桌面上再找一个空白位置,并将该应用的位置信息添加到数据中。桌面加载完成时,如果桌面数据库中有些数据仍然找不到对应的实际可用的应用程序,则再将这条多余的数据从数据库删除。
此时如果厂商在后续开发维护中,由于一些特殊的需求需要将相机apk的包名更改为com.xxx.camera(假设入口类名仍然保持不变,还是com.android.cameraLauncher)。因为还是原来的相机应用,所以此时厂商仍然会把这个修改的相机apk应用名称定为Camera.apk,并放在system/app目录下。并发布OTA升级软件推送给用户。
此时用户在通过OTA下载最新的系统升级包后,在更新系统重新开机过程中,会把升级包中的Camera.apk替换掉原来system/app目录下的Camera.apk。
安装完成后,会启动桌面,此时需要根据应用当前的包名和类名去桌面数据库中查找记录,并读取位置信息。由于此时相机apk的包名已经发生变化,而数据库中记录的包名是com.android.camera,所以根据新的包名com.xxx.camera是无法从数据库中找到记录的,找不到的话,我们就会在桌面寻找一个新的可用的空白位置来记录这个应用的位置信息。正因为如此相机应用图标的位置就会发生变化。如果变更包名类名的应用程序较多的话,会将用户之前整理好的应用程序的位置全部打乱。
S33:比较所述第一版本号和第二版本号,若一致,转至步骤S35;若不一致,转至步骤S34;该步骤发生在切换至桌面之前,这是由于Launcher是安卓系统中的桌面启动器,安卓系统的桌面UI统称为Launcher,安卓系统中如果没有Launcher就无法启动安卓桌面,Launcher在加载时,会首先从包管理中读取所有应用存放到一个List中,然后加载桌面程序。所以需修改桌面加载的流程,在从包管理中读取所有应用并为每一个应用创建applicationInfo时,比较第一版本号和第二版本号。
S34:将所述位置信息与第二入口模块(32)的对应关系更新为所述位置信息与第一入口模块(12)的对应关系。
S35:加载桌面程序并切换至桌面。在桌面读取数据库之前就已经将修改后的最新的packageName和className更新到数据库中,所以后面在读取数据库的时候就不会出现由于找不到对应记录而导致图标错乱的问题。由于重启手机才会启动Launcher使桌面会重新加载,或者桌面由于异常被停止这些情况都会重新加载一次。由于每一次OTA升级都必须重启手机,而每次重启手机后会加载桌面程序,SharedPreferences存储类实际作用可用来保证桌面在重新加载时不去重复解析应用的meta-data,从而活动桌面程序排序的正确位置。
如图4所示,在本发明第一实施例提供的OTA升级的系统的方框图中,提供了一种OTA升级的系统,该设置于移动终端22,用于在软件安装OTA升级包10时,防止该软件的桌面位置错误,该系统包括OTA服务器1和移动终端2;
OTA服务器1包括:
设置模块41,用于设置第一存储模块11和第一入口模块12,其中,所述第一存储模块11包括升级数据和第一版本号,所述第一入口模块12用于标识升级后的软件的存储地址,所述第一版本号用于标识升级后的软件的版本;
以及设置用于记录待升级的软件30的第二存储模块31和第二入口模块32的记录模块13,其中,第二存储模块31包括待升级的原始数据、第二版本号和用于确定桌面位置的位置信息,所述第二入口模块32用于唯一标识待升级的软件30的存储地址,所述第一版本号用于标识待升级的软件30的版本;
合成模块42,用于将所述第一存储模块11、第一入口模块12和记录模块13合成OTA升级包10;
通信模块43,用于将所述OTA升级包10发送至移动终端2;
移动终端2包括:
解析模块21,用于解析所述记录模块13并读取待升级的软件30的第二存储模块31和第二入口模块32;该模块需要解析升级包的代码,如activity标签下添加的代码等,通过解析代码,从而读取记录模块13并读取待升级的软件30的第二存储模块31和第二入口模块32。
安装模块22,用于安装所述OTA升级包10对软件升级,读取所述第一存储模块11和第一入口模块12,将第二版本号存储在所述第一存储模块11中;OTA升级包10一般打包为apk的形式推送至移动终端22,使用该移动终端22的用户只需安装OTA升级包10,该系统就会自动读取第一存储模块11和第一入口模块12。
比较模块23,用于比较所述第一版本号和第二版本号;即判断软件有没有更新,这是因为需要定制一个启动Launcher的时机,否则还是会有可能出现加载桌面时图标排序错误的可能。
更新模块24,用于将所述第一存储模块11和第一入口模块12分别替换所述第二存储模块31和第二入口模块32,将所述位置信息保存到升级后的软件中;一般桌面图标的位置是由Launcher加载后才会生成,故此处将存储有桌面位置信息的存储类替换即可。
加载模块25,用于加载桌面程序并切换至桌面。
桌面数据库26,包括用于确定待升级的软件30的桌面位置的位置信息,用于建立所述位置信息与第二入口模块32的对应关系。
如图5所示,在本发明第二实施例提供的OTA升级的方法的流程图中,该实施例提供的一种OTA升级的方法不同于第一实施例之处在于在移动终端2增加了版本升级记录,该实施例的有益效果在于无论从哪个版本升级,都能有效地找到对应记录。
由于在OTA服务器1的步骤完全相同,故只详述该方法在移动终端2的步骤:
S201:在所述移动终端2中,设置包括位置信息的桌面数据库,并建立所述位置信息与第二入口模块32的对应关系,所述位置信息用于确定待升级的软件30的桌面位置;
S202:安装所述OTA升级包10对软件升级,读取所述第一存储模块11和第一入口模块12;读取所述第一入口模块12的第一包名和第一入口类名;将所述第一入口模块12存储到资源文件;解析所述记录模块13并读取待升级的软件30的第二存储模块31和第二入口模块32;读取所述第二入口模块32的第二包名和第二入口类名,将第二版本号存储在所述第一存储模块11中;设置用于存储所述第二入口模块32的资源文件。由于入口信息是软件的唯一标识信息,所以OTA升级后,升级前的唯一标识信息可以使存储类准确替换。
S203:比较所述第一版本号和第二版本号,若一致,转至步骤S205;若不一致,转至步骤S204;该步骤通过读取meta-data信息中的oldComponentNameVersion并与该应用保存在桌面应用中的version(每成功修改一次就将这个应用的version保存到桌面应用的SharedPreferences中)进行比较,如果从meta-data中读取出来的值大于SharedPreferences保存的,说明该应用有更新过packageName或者className。
S204:将所述位置信息与第二入口模块32的对应关系更新为所述位置信息与第一入口模块12的对应关系;读取资源文件,建立所述第一入口模块12与第二入口模块32的对应关系。
比如,软件发布的第一个版本包名和类名总称为A,第二个版本为B,第三个版本C,而这个软件最新版本的包名类名总称为D,用户可以从A、B、C中任一版本升级到D。每次更改,都需要将更改前的包名信息记录到应用的meta-data中。所以在更新到D版本时,读取出来的应用的meta-data信息中就会有A、B、C三个数据。
如果用户是从A更新到D,那么更新前数据库中记录的包名类名是A,这时候以A做为条件找到记录的,找到后就将A更新为D,此时就无需再去用B、C做为条件再继续查找。
如果用户从B更新到D,此时从更新前数据库记录的包名类名就为B,以A作为条件是无法查找到应用的;A查找不到时,再以B作为条件去查找,此时就可以查找到了,找到后就将B更新为D。
上述例子是因为读取应用meta-data本身就是循环读取,此处的中断循环是内层循环,中断内层循环后,会继续外层循环去读取下一个应用的meta-data信息。内层循环主要是用来识别一个应用如果有修改多次包名和类名,如果每次修改都发布给用户使用了,用户如果从任意版本升级到最新版本,那针对最新版本软件在更新桌面数据库时就有多种情况。
该步骤通过读取meta-data信息中的oldComponentName的值,并解析出对应的字符串数组中的packageName和className,然后循环根据每一个item解析出来的packageName和className去更新数据库中对应的值。根据手机数据库更新操作的返回值是否大于0来判断是否有更新成功。由于从oldComponentName解析出来的字符串数组包含了应用的所有修改记录,所以无论用户从哪个版本OTA升级到最新版本,都能够有效的找到对应的记录。
S205:加载桌面程序并切换至桌面。
如图6所示,本发明第二实施例提供的OTA升级的系统的方框图中,该系统为第二实施例提供的OTA升级的方法对应的系统,该系统基于第一实施例在移动终端2添加了资源模块26,并增加了其他一些模块的功能,由于在OTA服务器1的模块与功能相比实施例1无差别,故只详述移动终端2的模块具体包括:
解析模块21,用于解析所述记录模块13并读取待升级的软件30的第二存储模块31和第二入口模块32;还用于读取所述第二入口模块32的第二包名和第二入口类名,读取所述第一入口模块12的第一包名和第一入口类名,以及读取所述资源文件。
安装模块22,用于安装所述OTA升级包10对软件升级,读取所述第一存储模块11和第一入口模块12,将第二版本号存储在所述第一存储模块11中;
比较模块23,用于比较所述第一版本号和第二版本号;
更新模块24,用于将所述第一存储模块11和第一入口模块12分别替换所述第二存储模块31和第二入口模块32,将所述位置信息保存到升级后的软件中;
加载模块25,用于加载桌面程序并切换至桌面。
桌面数据库26,包括用于确定待升级的软件30的桌面位置的位置信息,用于建立所述位置信息与第二入口模块32的对应关系。
资源模块27,用于存储资源文件,并建立所述第一入口模块12和第二入口模块32的对应关系。
如图7所示,在本发明第三实施例提供的OTA升级的方法的流程图中,该实施例提供的一种OTA升级的方法不同于第一实施例之处在于比较第一入口模块12与第二入口模块32的步骤,本实施例的有益效果在于,增加替换效率,减少系统开销。
由于在OTA服务器1的步骤完全相同,故只详述该方法在移动终端2的步骤:
S301:在所述移动终端2中,设置包括位置信息的桌面数据库,并建立所述位置信息与第二入口模块32的对应关系,所述位置信息用于确定待升级的软件30的桌面位置;
S302:所述移动终端2中,安装所述OTA升级包10对软件升级,读取所述第一存储模块11和第一入口模块12;解析所述OTA升级包10的记录模块13,读取待升级的软件30的第二存储模块31和第二入口模块32,将第二版本号存储在所述第一存储模块11中;
S303:比较所述第一版本号和第二版本号,若一致,转至步骤S306;若不一致,转至步骤S304;
S304:比较所述第一包名和第二包名,以及比较第一入口类名和第二入口类名;若所述第一包名和第二包名一致,且第一入口类名和第二入口类名一致,转至S306;若所述第一包名和第二包名不一致,或者所述第一入口类名和第二入口不一致,或者所述第一包名和第二包名以及所述第一入口类名和第二入口都不一致,转至S305;因为入口信息是唯一标识信息,如果相同,则自动替换。
S305:将所述位置信息与第二入口模块32的对应关系更新为所述位置信息与第一入口模块12的对应关系,并以第一入口模块12的packageName和className作为关键字,保存第一存储模块11(即升级后的SharedPreferences存储类)在本地,再删除第二存储模块31(即升级前的SharedPreferences存储类);
S306:加载桌面程序并切换至桌面。
如同第一实施例与第二实施例,切换至桌面后,各个图标的排序遵循OTA升级前的排序规则,不会发生排序错误。本实施例多了判断包名步骤,并删除升级前的SharedPreferences存储类,不仅可以减少移动终端2中因启动更新模块24而造成的系统资源浪费,还可以保证桌面在重新加载时不去重复解析应用的meta-data。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。

Claims (9)

1.一种OTA升级的方法,其特征在于:
S1:在OTA服务器(1)中设置第一存储模块(11)和第一入口模块(12),其中,所述第一存储模块(11)至少包括第一版本号,所述第一入口模块(12)用于标识升级后的软件的存储地址,所述第一版本号用于标识升级后的软件的版本;
在OTA服务器(1)中设置用于读取待升级的软件(30)的第二存储模块(31)和第二入口模块(32)的记录模块(13),其中,第二存储模块(31)至少包括第二版本号,所述第二入口模块(32)用于唯一标识待升级的软件(30)的存储地址,所述第二版本号用于标识待升级的软件(30)的版本;
S2:将所述第一存储模块(11)、第一入口模块(12)和记录模块(13)合成OTA升级包(10);
S3:将所述OTA升级包(10)发送至移动终端(2),利用所述OTA升级包(10)对所述移动终端(2)进行升级;
其中,
所述步骤S3包括以下子步骤:
S31:在所述移动终端(2)中,设置包括位置信息的桌面数据库,并建立所述位置信息与第二入口模块(32)的对应关系,所述位置信息用于确定待升级的软件(30)的桌面位置;
S32:在所述移动终端(2)中,安装所述OTA升级包(10)对软件升级,读取所述第一存储模块(11)和第一入口模块(12);解析所述OTA升级包(10)的记录模块(13),读取待升级的软件(30)的第二存储模块(31)和第二入口模块(32),将第二版本号存储在所述第一存储模块(11)中;
S33:比较所述第一版本号和第二版本号,若一致,转至步骤S35;若不一致,转至步骤S34;
S34:将所述位置信息与第二入口模块(32)的对应关系更新为所述位置信息与第一入口模块(12)的对应关系;
S35:加载桌面程序并切换至桌面。
2.根据权利要求1所述的方法,其特征在于,所述步骤S1还包括:设置所述第一入口模块(12)的第一包名和第一入口类名,所述第一包名用于标识升级后的软件的存储地址,所述第一入口类名用于启动所述升级后的软件;
所述第二入口模块(32)包括第二包名和第二入口类名,所述第二包名用于标识升级后的软件的存储地址,所述第二入口类名用于启动所述升级后的软件。
3.根据权利要求2所述的方法,其特征在于,所述步骤S32还包括:
读取所述第二入口模块(32)的第二包名和第二入口类名;
设置用于存储所述第二入口模块(32)的资源文件;
读取所述第一入口模块(12)的第一包名和第一入口类名;
将所述第一入口模块(12)存储到资源文件。
4.根据权利要求3所述的方法,其特征在于,所述步骤S34还包括,读取资源文件。
5.根据权利要求2所述的方法,其特征在于,该方法还包括:
在所述步骤S34之前,比较所述第一包名和第二包名,以及比较第一入口类名和第二入口类名;若所述第一包名和第二包名一致,且第一入口类名和第二入口类名一致,转至S35;若所述第一包名和第二包名不一致,或者所述第一入口类名和第二入口类名不一致,或者所述第一包名和第二包名以及所述第一入口类名和第二入口类名都不一致,转至S34;
在所述步骤S35之后,保存第一存储模块(11),删除第二存储模块(31)。
6.一种OTA升级的系统,包括OTA服务器(1)和移动终端(2),其特征在于:
所述OTA服务器(1)包括:
设置模块(41),用于设置第一存储模块(11)和第一入口模块(12),其中,所述第一存储模块(11)包括升级数据和第一版本号,所述第一入口模块(12)用于标识升级后的软件的存储地址,所述第一版本号用于标识升级后的软件的版本;
以及设置用于记录待升级的软件(30)的第二存储模块(31)和第二入口模块(32)的记录模块(13),其中,第二存储模块(31)包括待升级的原始数据、第二版本号和用于确定桌面位置的位置信息,所述第二入口模块(32)用于唯一标识待升级的软件(30)的存储地址,所述第二版本号用于标识待升级的软件(30)的版本;
合成模块(42),用于将所述第一存储模块(11)、第一入口模块(12)和记录模块(13)合成OTA升级包(10);
通信模块(43),用于将所述OTA升级包(10)发送至移动终端(2);
所述移动终端(2)包括:
解析模块(21),用于解析所述记录模块(13)并读取待升级的软件(30)的第二存储模块(31)和第二入口模块(32);
安装模块(22),用于安装所述OTA升级包(10)对软件升级,读取所述第一存储模块(11)和第一入口模块(12),将第二版本号存储在所述第一存储模块(11)中;
比较模块(23),用于比较所述第一版本号和第二版本号;
更新模块(24),用于将所述位置信息与第二入口模块(32)的对应关系更新为所述位置信息与第一入口模块(12)的对应关系;
加载模块(25),用于加载桌面程序并切换至桌面;
桌面数据库(26),包括用于确定待升级的软件(30)的桌面位置的位置信息,用于建立所述位置信息与第二入口模块(32)的对应关系。
7.根据权利要求6所述的系统,其特征在于,所述第一入口模块(12)包括第一包名和第一入口类名,所述第一包名用于标识升级后的软件的存储地址,所述第一入口类名用于启动所述升级后的软件;
所述第二入口模块(32)包括第二包名和第二入口类名,所述第二包名用于标识升级后的软件的存储地址,所述第二入口类名用于启动所述升级后的软件。
8.根据权利要求7所述的系统,其特征在于,该系统还包括资源模块,所述资源模块(27)用于存储所述资源文件,并建立所述第一入口模块(12)和第二入口模块(32)的对应关系;
所述解析模块(21)还用于读取所述第二入口模块(32)的第二包名和第二入口类名,读取所述第一入口模块(12)的第一包名和第一入口类名,以及读取所述资源文件。
9.根据权利要求7所述的系统,其特征在于,所述比较模块(23)还用于比较所述第一入口模块(12)和第二入口模块(32)。
CN201310571817.XA 2013-11-13 2013-11-13 一种ota升级的方法和系统 Active CN103559065B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310571817.XA CN103559065B (zh) 2013-11-13 2013-11-13 一种ota升级的方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310571817.XA CN103559065B (zh) 2013-11-13 2013-11-13 一种ota升级的方法和系统

Publications (2)

Publication Number Publication Date
CN103559065A CN103559065A (zh) 2014-02-05
CN103559065B true CN103559065B (zh) 2017-02-01

Family

ID=50013319

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310571817.XA Active CN103559065B (zh) 2013-11-13 2013-11-13 一种ota升级的方法和系统

Country Status (1)

Country Link
CN (1) CN103559065B (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106610839B (zh) * 2015-10-21 2020-10-30 阿里巴巴集团控股有限公司 发布升级包的方法、轻量升级方法、装置及系统
CN105786498A (zh) * 2016-02-25 2016-07-20 广州阿里巴巴文学信息技术有限公司 用于修改应用程序的方法、设备和电子设备
CN108270806A (zh) * 2016-12-30 2018-07-10 航天信息股份有限公司 一种多应用升级方法和系统
CN108459869A (zh) * 2017-12-28 2018-08-28 新华三技术有限公司 Issu升级方法及装置
CN109348472B (zh) * 2018-09-20 2021-11-05 广东小天才科技有限公司 一种基于单点推送的ota升级方法及系统
CN109710125B (zh) * 2018-10-29 2021-10-12 努比亚技术有限公司 一种应用控制方法、终端及计算机可读存储介质
CN113076117B (zh) * 2020-01-03 2024-05-07 北京猎户星空科技有限公司 一种ota升级方法、装置、电子设备及存储介质
CN111488151B (zh) * 2020-04-17 2023-09-26 上海数禾信息科技有限公司 Android各模块间页面交互的方法、装置
CN112667258B (zh) * 2020-12-23 2023-10-31 艾体威尔电子技术(北京)有限公司 一种安卓pos机外接设备程序的远程升级方法
CN115774561A (zh) * 2021-09-06 2023-03-10 花瓣云科技有限公司 应用程序升级方法、电子设备、芯片及可读存储介质
CN116400938B (zh) * 2023-03-27 2023-11-24 荣耀终端有限公司 操作系统的升级方法、设备及存储介质
CN117331591B (zh) * 2023-12-01 2024-05-03 荣耀终端有限公司 一种系统升级方法、电子设备和可读存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101203002A (zh) * 2007-05-24 2008-06-18 深圳市德诺通讯技术有限公司 一种移动终端软件升级的方法
WO2008110088A1 (fr) * 2007-03-09 2008-09-18 Huawei Technologies Co., Ltd. Procédé et système de mise à jour automatique d'un logiciel de terminal mobile, terminal mobile et serveur de gestion de logiciel
CN101467129A (zh) * 2006-07-14 2009-06-24 三星电子株式会社 能够空中下载的移动终端的程序升级系统和方法
CN103309712A (zh) * 2013-06-25 2013-09-18 惠州Tcl移动通信有限公司 一种手机软件升级方法及其系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101467129A (zh) * 2006-07-14 2009-06-24 三星电子株式会社 能够空中下载的移动终端的程序升级系统和方法
WO2008110088A1 (fr) * 2007-03-09 2008-09-18 Huawei Technologies Co., Ltd. Procédé et système de mise à jour automatique d'un logiciel de terminal mobile, terminal mobile et serveur de gestion de logiciel
CN101203002A (zh) * 2007-05-24 2008-06-18 深圳市德诺通讯技术有限公司 一种移动终端软件升级的方法
CN103309712A (zh) * 2013-06-25 2013-09-18 惠州Tcl移动通信有限公司 一种手机软件升级方法及其系统

Also Published As

Publication number Publication date
CN103559065A (zh) 2014-02-05

Similar Documents

Publication Publication Date Title
CN103559065B (zh) 一种ota升级的方法和系统
CN102622241B (zh) 一种软件升级方法及装置
CN107506221B (zh) 应用程序升级方法、装置及设备
CN1641583B (zh) 自描述软件映象更新组件
US7657884B2 (en) Electronic device supporting multiple update agents
US6996818B2 (en) Update system for facilitating software update and data conversion in an electronic device
US10216510B2 (en) Silent upgrade of software with dependencies
CN109947767A (zh) 多重租赁数据库系统中的系统共享类型
CN101188516B (zh) 一种网络设备软件系统高可靠性自适应远程更新的方法
JP2021002317A (ja) アプリケーションをアップグレードするための方法、装置、デバイスならびに記憶媒体
US20070143379A1 (en) Metadata driven deployment of applications
US20050026603A9 (en) System and method for the management of wireless communications device system software downloads in the field
CN110069264A (zh) 构建资源包的方法、装置、计算机设备和存储介质
CN111897570A (zh) 一种基于Maven插件的多依赖项文件提取方法及装置
US10338910B2 (en) Multi-tenant upgrading
CN109445807A (zh) 实现应用程序更新的方法、装置和计算机可读存储介质
CN103677937B (zh) 升级软件和运行软件的方法及装置
CN107632901A (zh) 一种应用程序运行异常的自修复方法及装置
CN104699511A (zh) 插件升级方法及装置
CN104133699A (zh) 设备系统软件升级方法与系统
CN104932887A (zh) 一种平台系统的插件管理方法和平台系统
CN102054041A (zh) 元数据升级方法和系统
CN112882746B (zh) 应用程序的更新方法、装置、存储介质及计算机设备
CN113805965A (zh) 一种外部插件安装的方法、装置、设备及可读介质
CN101145164A (zh) 一种序时簿的查询方法及一种序时簿的查询装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
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: Changan town in Guangdong province Dongguan 523860 usha Beach Road No. 18

Patentee after: OPPO Guangdong Mobile Communications Co., Ltd.

Address before: Changan town in Guangdong province Dongguan 523860 usha Beach Road No. 18

Patentee before: Guangdong Opel Mobile Communications Co., Ltd.