利索能及
我要发布
收藏
专利号: 202211661277X
申请人: 北京麟卓信息科技有限公司
专利类型:发明专利
专利状态:已下证
更新日期:2025-10-27
缴费截止日期: 暂无
联系人

摘要:

权利要求书:

1.一种基于虚拟文件系统数据智能预取的安卓应用加载优化方法,其特征在于,包括对安卓框架进行修改以及为app的APK文件appAPK创建格式为Squashfs的虚拟文件系统;

为app的APK文件appAPK创建格式为Squashfs的虚拟文件系统,包括:

查找是否存在app的APK文件对应的文件系统元数据文件appAPK.fsinfo,如不存在,则为app的APK文件构造元数据;从appAPK.fsinfo中读取元数据,并在内存中构造Squashfs创建虚拟卷所需的数据结构fsMetaInfo,将元数据填入fsMetaInfo,并将fsMetaInfo和appAPK全路径名传递给Squashfs虚拟文件系统的内核模块;

Squashfs虚拟文件系统的内核模块加载fsMetaInfo,并将appAPK映射到操作系统内核地址空间appAPKMappedAddress,以创建虚拟卷;

将创建的虚拟卷使得用户态应用程序可见;

对安卓框架进行修改,包括:

修改APK文件的加载流程,包括:根据appAPK查找对应的能够预加载的文件集filesToPreloaded,查找到后,读取filesToPreloaded中的所有文件,并判断各文件的大小,如文件大于第一阈值,则将文件读取进内存,并将文件名和内存地址保存进filePreloadedList;如文件小于等于第一阈值,则将文件内容映射到内存,并将文件名和映射后的内存地址保存进filePreloadedList;

对于APK文件打开操作,记文件路径为pathInAPK,判断当前打开的文件是否在filePreloadedList中,如果在,则返回filePreloadedList中的对应文件的句柄;如果不在,则修改打开文件的路径为对文件的打开,新的打开文件路径为虚拟卷的全路径拼接上pathInAPK;

判断打开文件的大小,如打开文件大小小于第二阈值,则认为是能够预加载的文件,将该能够预加载的文件的路径名加入filesToPreloaded。

2.如权利要求1所述的基于虚拟文件系统数据智能预取的安卓应用加载优化方法,其特征在于,为app的APK构造元数据,具体包括:A.基于app的APK创建一个Squashfs的文件系统映像,含有元数据和APK文件,记为appAPK.img;

B.通知Squashfs内核模块基于appAPK.img创建虚拟卷;

C.从Squashfs内核模块中读取虚拟卷的元数据所在数据结构fsMetaInfo;

D.通过Zip文件解析库解析appAPK,读取其中未压缩的块,构建压缩块的Bitmap表,记为uncompressedBitmapTable,uncompressedBitmapTable中一个bit位代表一个文件数据块,通过bit位表示是否为压缩的块,uncompressedBitmapTable作为fsMetaInfo的一部分,保存到fsMetaInfo的尾部;

E.将fsMetaInfo以二进制形式,保存为appAPK.fsinfo。

3.如权利要求1所述的基于虚拟文件系统数据智能预取的安卓应用加载优化方法,其特征在于,基于fsMetaInfo的信息创建虚拟卷,将超级块设置为appAPKMappedAddress+超级块的偏移Offset,将第一个数据块设置为appAPKMappedAddress+第一个数据块的Offset。

4.如权利要求1所述的基于虚拟文件系统数据智能预取的安卓应用加载优化方法,其特征在于,将创建的虚拟卷通过mount方式到Linux文件系统,使得用户态的应用程序可见。

5.如权利要求2所述的基于虚拟文件系统数据智能预取的安卓应用加载优化方法,其特征在于,还包括:修改Squashfs的数据块的读取操作:(1)根据uncompressedBitmapTable中的bit位,判断待读取的数据块是否被压缩;

如是被压缩,则判断当前待读取的数据块是否在Squashfs文件系统的readCache中;如在readCache中,则返回readCache中缓存的数据块;如不在readCache中,则读取此数据块的前后两个数据块并加入readCache;继续执行(2);

如不是被压缩,则继续执行(2);

(2)执行后续的Squashfs标准的读取操作。

6.如权利要求1所述的基于虚拟文件系统数据智能预取的安卓应用加载优化方法,其特征在于,根据appAPK查找对应的能够预加载的文件集filesToPreloaded,查找到后,并行读取filesToPreloaded中的所有文件,并行数为当前处理器逻辑核数的一半。

7.如权利要求1所述的基于虚拟文件系统数据智能预取的安卓应用加载优化方法,其特征在于,该第一阈值为30M,该第二阈值为50M。

8.如权利要求1所述的基于虚拟文件系统数据智能预取的安卓应用加载优化方法,其特征在于,对安卓框架进行修改还包括:对于APK文件读操作,判断读的文件是否在filePreloadedList中,如果在,则从内存或者从内存映射文件中读取文件;如不在,则修改读取文件的路径为对资源相关文件的读操作。

9.如权利要求2所述的基于虚拟文件系统数据智能预取的安卓应用加载优化方法,其特征在于,uncompressedBitmapTable中一个bit位代表一个文件数据块,bit位为1表示未压缩,bit位为0表示已压缩,文件数据块大小记为blockSize,默认大小为128K。

10.如权利要求1所述的基于虚拟文件系统数据智能预取的安卓应用加载优化方法,其特征在于,Squashfs虚拟文件系统的内核模块加载fsMetaInfo,将appAPK通过文件内存映射到操作系统内核地址空间appAPKMappedAddress,并根据fsMetaInfo的信息创建虚拟卷。