【技术实现步骤摘要】
基于虚拟文件系统数据智能预取的安卓应用加载优化方法
[0001]本专利技术涉及安卓应用加载技术,特别涉及一种基于虚拟文件系统数据智能预取的安卓应用加载优化方法。
技术介绍
[0002]Squashfs是Linux下的一种只读压缩文件系统类型,使用zlib/lzo/xz等压缩算法来压缩文件、节点及目录。节点和目录数据是字节对齐并且是高度紧凑的。每个压缩的节点平均仅占用8字节长度(确切长度会因为文件类型而不同,比如普通文件、目录、符号链接及块/字符设备节点等)。
[0003]Squashfs作为一种只读文件,一般用mksquashfs工具来创建压缩的Squashfs文件系统。
[0004]Squashfs 文件系统最多包含以下几种字节对齐的模块,如下:压缩的数据块就像从某个目录里读文件一样写到文件系统并进行冗余检查。当文件数据被写入到文件系统,相应的 completed inode, directory, fragment, export, uid/gid lookup 和xattr tables也会同时被写入到
【技术保护点】
【技术特征摘要】
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的一部分...
【专利技术属性】
技术研发人员:温研,晏华,
申请(专利权)人:北京麟卓信息科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。