CN115640269B - 一种基于按需复制的安卓应用安装加速方法 - Google Patents
一种基于按需复制的安卓应用安装加速方法 Download PDFInfo
- Publication number
- CN115640269B CN115640269B CN202211659851.8A CN202211659851A CN115640269B CN 115640269 B CN115640269 B CN 115640269B CN 202211659851 A CN202211659851 A CN 202211659851A CN 115640269 B CN115640269 B CN 115640269B
- Authority
- CN
- China
- Prior art keywords
- apk
- file
- apkfilepath
- android
- copy
- 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
Links
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种基于按需复制的安卓应用安装加速方法,其中,包括:步骤1.计算出磁盘I/O性能;步骤2.修改安卓框架下的类PackageManagerService.InstallParams的复制apk的函数,包括:跳过安卓标准的复制apk的操作;将PackageManagerService为apk文件对应的app创建的Package对象中的apk成员变量中的路径指向apkFilePath;启动一个线程,并将apkFilePath和Package对象传递到该线程,且并行执行复制apk的操作;如apk文件不在系统临时目录,根据磁盘I/O性能以及apkFileSize,选择执行安卓标准的复制apk的流程,或通过链接来访问apkFilePath;步骤3.执行安卓标准安装流程。本发明的基于按需复制的安卓应用安装加速方法通过根据apk的具体情况,进行相应的操作,减少安装app的耗时。
Description
技术领域
本发明涉及安卓操作系统技术领域,特别涉及一种基于按需复制的安卓应用安装加速方法。
背景技术
安卓系统安装app是个复杂的过程,核心工作主要是PackageManagerService完成。
apk安装一般包括四种方式:1. 系统应用安装:没有安装界面,在开机时自动完成。2. 网络下载应用安装:没有安装界面,在应用市场完成。3. ADB命令安装:没有安装界面,通过命令直接安装。4. 外部设备安装:有安装界面,通过SD卡等外部设备安装,由packageInstaller处理安装逻辑。
apk安装涉及到的几个常用目录包括:1.system/app:系统自带的应用程序,获得root权限才能删除。2.data/app:用户程序安装目录,安装时会把apk文件复制到此目录下。3.data/data:存放应用程序的数据。4.data/dalvik-cache:将apk中的dex文件安装到该目录下(dex文件是dalvik虚拟机的可执行文件,大小约为原始apk的四分之一)。
安装app的第一步就是将app的apk文件复制(注意:是复制不是移动)到/data/app/目录下,然后再执行后续的操作。因此,如果这个apk文件很大,这个复制操作时间就会很长,而且额外占用磁盘空间。
这个复制操作是由handleStartCopy函数完成的,handleStartCopy的核心就是copyApk,其他的都是些存储空间检查,权限检查等等安全校验。
发明内容
本发明的目的在于提供一种基于按需复制的安卓应用安装加速方法,用于解决安卓系统安装app的耗时问题。
本发明一种基于按需复制的安卓应用安装加速方法,其中,包括:步骤1.计算出磁盘I/O性能;步骤2.修改安卓框架下的类PackageManagerService.InstallParams的复制apk的函数,包括:如apk文件在系统临时目录,获取待安装apk文件的全路径,记为apkFilePath;跳过安卓标准的复制apk的操作;将PackageManagerService为apk文件对应的app创建的Package对象中的apk成员变量中的路径指向apkFilePath;启动一个线程,并将apkFilePath和Package对象传递到该线程,且并行执行复制apk的操作;如apk文件不在系统临时目录,则获取待安装的apk文件大小,记为apkFileSize,并根据磁盘I/O性能以及apkFileSize,选择执行安卓标准的复制apk的流程,或创建一个待安装的apk文件的base.apk到apkFilePath的链接,通过链接来访问apkFilePath;步骤3.执行安卓标准安装流程。
根据本发明所述的基于按需复制的安卓应用安装加速方法的一实施例,其中,计算出磁盘I/O性能包括:记A秒读取字节数readBytes和A秒写入字节数writeBytes,计算出A秒内能够复制的文件大小,记为copyBytes,作为磁盘I/O性能,包括:copyBytes =(readBytes* writeBytes)/( readBytes + writeBytes)。
根据本发明所述的基于按需复制的安卓应用安装加速方法的一实施例,其中,A秒为1秒。
根据本发明所述的基于按需复制的安卓应用安装加速方法的一实施例,其中,复制apk的函数为handleStartCopy函数,安卓标准的复制apk操作为handleStartCopy的复制操作。
根据本发明所述的基于按需复制的安卓应用安装加速方法的一实施例,其中,该并行执行复制apk的操作包括:在启动的该线程中,将apk文件复制到base.apk;复制完成后,将Package中的apk成员变量中的路径指向apkFilePath。
根据本发明所述的基于按需复制的安卓应用安装加速方法的一实施例,其中,根据磁盘I/O性能以及apk文件大小apkFileSize,确定执行标准复制流程,或创建一个base.apk到apkFilePath的链接包括:a.如果apkFileSize <= copyBytes,则执行安卓标准的复制apk操作;b.如apkFileSize > copyBytes,则创建一个base.apk到apkFilePath的链接,通过链接来访问apkFilePath。
根据本发明所述的基于按需复制的安卓应用安装加速方法的一实施例,其中,创建一个base.apk到apkFilePath的链接后,还获取apk文件的权限,判断是否是system/root权限,如果是,则通知内核驱动,监视apkFilePath文件的删除和移动操作;如果不是,则使用inotify监视apkFilePath文件的删除和移动操作。
根据本发明所述的基于按需复制的安卓应用安装加速方法的一实施例,其中,内核驱动或inotify监视安装的apk文件的移动操作包括:判断移动的apk文件对应的app是否正在运行,如移动的apk文件对应的app正在运行,则:a.挂起移动apk操作,通过保留apk文件原路径对应的inode节点,使得base.apk能够继续通过原路径apkFilePath进行访问;b.创建一个线程,等待该对应的app结束后执行移动操作,并更新base.apk的链接;如移动的apk文件对应的app未运行,则更新base.apk的链接。
根据本发明所述的基于按需复制的安卓应用安装加速方法的一实施例,其中,内核驱动或inotify监视安装的apk文件的删除操作,包括:判断apk文件对应的app是否正在运行,如对应的app正在运行,则在监视进程中打开apk文件;创建一个线程,等待对应的app结束后在监视进程中关闭apk文件,再将apk文件复制到base.apk,删除apk文件原路径对应的inode节点;如未运行,则将apk文件移动到base.apk。
根据本发明所述的基于按需复制的安卓应用安装加速方法的一实施例,其中,在安卓系统内执行磁盘I/O的benchmark,计算出磁盘I/O性能。
本发明的基于按需复制的安卓应用安装加速方法通过根据apk的具体情况,进行相应的操作,通过优化最开始这个复制apk的操作,减少安装app的耗时。
具体实施方式
为使本发明的目的、内容、和优点更加清楚,下面结合实施例,对本发明的具体实施方式作进一步详细描述。
本发明一种基于按需复制的安卓应用安装加速方法包括:
步骤1.在安卓系统内执行磁盘I/O的benchmark,计算出磁盘I/O性能,具体可以为:
记为1秒读取字节数readBytes/s和1秒写入字节数writeBytes/s,计算出1秒内可复制的文件大小,记为copyBytes/s。
计算方程为:copyBytes/readBytes + copyBytes/writeBytes = 1;
即:copyBytes = (readBytes* writeBytes)/( readBytes + writeBytes)
其中copyBytes为每秒能够复制的文件大小。
其中,上述1秒也可以是其他时间阈值,1秒属于较佳的方式。
步骤2.修改安卓框架,安装的时候按需复制对应的apk文件。修改安卓框架下的类PackageManagerService.InstallParams的复制apk的函数(handleStartCopy),来实现以下操作包括:
(1)如apk文件在系统临时目录(一般来自于应用商城apk均在该目录),获取待安装apk文件的全路径,记为apkFilePath,执行:
a.跳过handleStartCopy标准的复制操作;
b.将类PackageManagerService为这个apk文件对应的app创建的Package对象中的apk成员变量中的路径指向该全路径apkFilePath,而不是/data/app/[packageName]/base.apk到apkFilePath;
c.启动一个线程,并将全路径apkFilePath和Package对象传递到该线程,后台并行执行复制操作(即边复制边安装),该复制操作包括:
在该启动的线程中,将apk文件复制到/data/app/[packageName]/base.apk;
复制完成后,将Package中的apk文件指向/data/app/[packageName]/base.apk;
函数返回成功。
(2)如apk文件不在系统临时目录,则读取待安装的apk文件大小,记为apkFileSize,并执行:
a.如 apkFileSize <= copyBytes,则执行handleStartCopy的标准流程;
b.如apkFileSize > copyBytes,则:
b1.创建一个/data/app/[packageName]/base.apk到apkFilePath的链接,系统通过链接来访问apkFilePath;
b2获取apk文件(apkFilePath)的权限,判断是否是system/root权限,来防止apkfilepath被移动改名或删除后,导致链接失效,包括:
如是,则通知内核驱动,监视apkFilePath文件的删除和移动操作;
如不是,则使用inotify的接口在PackageManagerService(或者其他服务中)监视apkFilePath文件的删除和移动操作;
直接函数返回成功。
步骤3.执行后续的标准安装流程。
对于一实施例,内核驱动和inotify监视安装的apk文件(apk文件路径为apkFilePath)的删除和移动操作,以防止apkFilePath文件失效,具体可以包括如下操作:
1.如果是移动操作,则判断移动的apk文件对应的app是否正在运行,判断移动的apk文件对应的app是否正在运行可以通过列举当前的所有进程名中是否包含app的包名进行判断,
(1)如移动的apk文件对应的app正在运行,则:
a.挂起移动操作,可以通过保留原路径的文件系统的inode节点,使得/data/app/[packageName]/base.apk可以继续通过原路径apkFilePath进行访问。
其中,inode节点储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等的区域就叫做inode,中文译名为索引节点。每一个文件都有对应的inode,里面包含了与该文件有关的一些信息。
b.创建一个线程,等待app结束后执行移动操作,并更新/data/app/[packageName]/base.apk的链接,即将/data/app/[packageName]/base.apk链接到移动后的全路径;
(2)如移动的apk文件对应的app未运行,则更新链接,即将/data/app/[packageName]/base.apk链接到移动后的全路径;
2.如果是删除操作,则判断app是否正在运行(可以通过列举当前的所有进程名中是否包含app的包名进行判断):
(1)如在运行,则:
在内核或者inotify监视进程中打开apk文件,这样就可以阻止删除操作;
创建一个线程,等待app结束后在内核或者inotify监视进程中关闭apk文件;
然后将apk文件复制到/data/app/[packageName]/base.apk;
删除apk文件原路径对应的inode节点;
(2)如未运行,则:
将apk文件移动到/data/app/[packageName]/base.apk,但不执行删除。
本发明的基于按需复制的安卓应用安装加速方法通过判断哪些apk(根据大小)是适合直接复制apk安装的,即优化空间不大的;哪些apk是必须要复制的;哪些是可以不复制的,且如何实现不复制就可以正常安装,并且不影响后续的应用执行的,并进行相应的操作,最终减少了安装app的耗时,对于大的apk尤其明显,且可节省磁盘空间。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (7)
1.一种基于按需复制的安卓应用安装加速方法,其特征在于,包括:
步骤1.计算出磁盘I/O性能;
步骤2.修改安卓框架下的类PackageManagerService.InstallParams的复制apk的函数,包括:
如apk文件在系统临时目录中,获取待安装apk文件的全路径,记为apkFilePath;
跳过安卓标准的复制apk的操作;
将PackageManagerService为apk文件对应的app创建的Package对象中的apk成员变量中的路径指向apkFilePath;
启动一个线程,并将apkFilePath和Package对象传递到该线程,且执行复制apk的操作;
如apk文件不在系统临时目录中,则获取待安装的apk文件大小,记为apkFileSize,并根据磁盘I/O性能以及apkFileSize,选择执行安卓标准的复制apk的流程,或创建一个待安装的apk文件的base.apk到apkFilePath的链接,通过链接来访问apkFilePath;
步骤3.执行安卓标准安装流程;
所述计算出磁盘I/O性能包括:
记A秒读取字节数readBytes和A秒写入字节数writeBytes,计算出A秒内能够复制的文件大小,记为copyBytes,作为磁盘I/O性能,包括:
copyBytes=(readBytes*writeBytes)/(readBytes+writeBytes);
根据磁盘I/O性能以及apk文件大小apkFileSize,确定执行标准复制流程,或创建一个base.apk到apkFilePath的链接包括:
a.如果apkFileSize<=copyBytes,则执行安卓标准的复制apk操作;
b.如果apkFileSize>copyBytes,则创建一个base.apk到apkFilePath的链接,通过链接来访问apkFilePath。
2.如权利要求1所述的基于按需复制的安卓应用安装加速方法,其特征在于,所述A秒为1秒。
3.如权利要求1所述的基于按需复制的安卓应用安装加速方法,其特征在于,复制apk的函数为handleStartCopy函数,所述安卓标准的复制apk的操作为handleStartCopy的复制操作。
4.如权利要求1所述的基于按需复制的安卓应用安装加速方法,其特征在于,创建一个base.apk到apkFilePath的链接后,还获取apk文件的权限,判断是否是system/root权限,如果是,则通知内核驱动,监视apkFilePath文件的删除和移动操作;如果不是,则使用inotify监视apkFilePath文件的删除和移动操作。
5.如权利要求4所述的基于按需复制的安卓应用安装加速方法,其特征在于,内核驱动或使用inotify监视apkFilePath文件的删除和移动操作包括:
判断移动的apk文件对应的app是否正在运行,
如移动的apk文件对应的app正在运行,则:
a.挂起移动apk操作,通过保留apk文件原路径对应的inode节点,使得base.apk能够继续通过原路径apkFilePath进行访问;
b.创建一个线程,等待该对应的app结束后执行移动操作,并更新base.apk的链接;
如移动的apk文件对应的app未运行,则更新base.apk的链接。
6.如权利要求4所述的基于按需复制的安卓应用安装加速方法,其特征在于,内核驱动或使用inotify监视apkFilePath文件的删除和移动操作,还包括:
判断apk文件对应的app是否正在运行,
如对应的app正在运行,则在监视进程中打开apk文件;创建一个线程,等待对应的app结束后在监视进程中关闭apk文件,再将apk文件复制到base.apk,删除apk文件原路径对应的inode节点;
如未运行,则将apk文件移动到base.apk。
7.如权利要求1所述的基于按需复制的安卓应用安装加速方法,其特征在于,在安卓系统内执行磁盘I/O的benchmark,计算出磁盘I/O性能。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211659851.8A CN115640269B (zh) | 2022-12-23 | 2022-12-23 | 一种基于按需复制的安卓应用安装加速方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211659851.8A CN115640269B (zh) | 2022-12-23 | 2022-12-23 | 一种基于按需复制的安卓应用安装加速方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115640269A CN115640269A (zh) | 2023-01-24 |
CN115640269B true CN115640269B (zh) | 2023-03-10 |
Family
ID=84949117
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211659851.8A Active CN115640269B (zh) | 2022-12-23 | 2022-12-23 | 一种基于按需复制的安卓应用安装加速方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115640269B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003281816A (ja) * | 2002-03-25 | 2003-10-03 | Hitachi Ltd | 高速コピー方法およびシステム |
CN111966368A (zh) * | 2020-09-07 | 2020-11-20 | 山东车微联信息技术股份有限公司 | 应用程序静默安装方法、系统、安卓终端和可读介质 |
CN112214267A (zh) * | 2020-10-12 | 2021-01-12 | 广州大学 | 一种安卓脱壳加速方法、装置、存储介质及计算机设备 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108062226A (zh) * | 2017-12-29 | 2018-05-22 | 福州福大海矽微电子有限公司 | 一种安卓系统应用预安装方法及终端 |
KR20220016704A (ko) * | 2020-08-03 | 2022-02-10 | 삼성전자주식회사 | 어플리케이션 설치 방법 및 이를 지원하는 전자 장치 |
CN112256286B (zh) * | 2020-10-21 | 2023-05-05 | 抖音视界有限公司 | 一种应用运行的方法、装置及计算机存储介质 |
CN114489697A (zh) * | 2022-01-04 | 2022-05-13 | 维沃移动通信有限公司 | 应用程序的安装方法及装置 |
CN115437564A (zh) * | 2022-08-18 | 2022-12-06 | 深圳感臻智能股份有限公司 | 一种Android安装应用的存储优化方法、装置及Android系统 |
-
2022
- 2022-12-23 CN CN202211659851.8A patent/CN115640269B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003281816A (ja) * | 2002-03-25 | 2003-10-03 | Hitachi Ltd | 高速コピー方法およびシステム |
CN111966368A (zh) * | 2020-09-07 | 2020-11-20 | 山东车微联信息技术股份有限公司 | 应用程序静默安装方法、系统、安卓终端和可读介质 |
CN112214267A (zh) * | 2020-10-12 | 2021-01-12 | 广州大学 | 一种安卓脱壳加速方法、装置、存储介质及计算机设备 |
Also Published As
Publication number | Publication date |
---|---|
CN115640269A (zh) | 2023-01-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108701048B (zh) | 数据加载方法及装置 | |
US5537596A (en) | Method and apparatus for overriding resource maps in a computer system | |
JP2010511926A (ja) | 漸進・透過的ファイル更新 | |
CN110543369A (zh) | 一种安卓系统存储空间结构的构建方法、装置及其构建结构 | |
CN104603750A (zh) | 使用bpram来布局和执行软件应用 | |
US9501344B2 (en) | Data dump for a memory in a data processing system | |
JP5012628B2 (ja) | メモリデータベース、メモリデータベースシステム及びメモリデータベース更新方法 | |
CN104583948A (zh) | 使用bpram来布局和执行操作系统 | |
US8949590B2 (en) | Controlling access to software component state | |
US11409451B2 (en) | Systems, methods, and storage media for using the otherwise-unutilized storage space on a storage device | |
CN100507850C (zh) | 一种借助USB设备启动在Windows操作系统中嵌入内核驱动程序的方法 | |
US20040243986A1 (en) | Interpreter and native code execution method | |
CN114756296A (zh) | 可读写挂载启动方法、装置、存储介质及电子设备 | |
US11698795B2 (en) | Unified way to track user configuration on a live system | |
CN113641394A (zh) | 一种多操作系统设备的差分升级方法 | |
CN103309696A (zh) | 一种Java卡扩展库更新方法、装置和Java卡 | |
CN101236498B (zh) | 一种借助PCI卡启动在Windows操作系统中嵌入内核驱动程序的方法 | |
CN115640269B (zh) | 一种基于按需复制的安卓应用安装加速方法 | |
CN110928840B (zh) | 一种qnx6文件系统读取方法 | |
WO2023169164A1 (zh) | 应用程序的修复方法、装置、计算机设备以及存储介质 | |
US10185653B2 (en) | Integrated systems and methods for the transactional management of main memory and data storage | |
JP2004206353A (ja) | ソフトウェアのインストール方法 | |
KR101562282B1 (ko) | 오덱스 무결성 검증 시스템 및 방법 | |
CN116028100B (zh) | 软件版本升级方法和电子设备 | |
CN116643770A (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 |