[发明专利]一种在安卓系统中资源免固化的方法、存储介质及设备在审
申请号: | 202310086546.2 | 申请日: | 2023-02-09 |
公开(公告)号: | CN116088851A | 公开(公告)日: | 2023-05-09 |
发明(设计)人: | 胡泽新;蔡满堂;苗二东 | 申请(专利权)人: | 新加坡新阅科技有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41;G06F8/61 |
代理公司: | 北京君琅知识产权代理有限公司 16017 | 代理人: | 侯宁 |
地址: | 新加坡贝恩路8号#*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 系统 资源 固化 方法 存储 介质 设备 | ||
本发明公开了一种在安卓系统中资源免固化的方法、存储介质及设备,包括三个阶段:一、编译时,处理java代码中引用宿主的资源,获取R.jar并修改其字节码,移除class中所有的final字段,将class中的内联数值修改,保证插件中引用宿主的资源id全部通过R进行引用;二、运行时,处理xml代码中引用宿主的资源,通过aapt2得到ap_文件,根据R.txt找到对应目标信息,一并打包进apk;三、安装时,根据编译生成的配置文件,结合mapRes方法,对patch中的xml、resources.arsc文件进行修改,修改apk的byte数组。利用本发明,解决了资源引用因为其他因素导致不匹配、不稳定问题,动态匹配保证了目标引用的稳定性,也实现了接入成本的降低及解决了因为固化导致的兼容及妥协问题。
技术领域
本发明涉及移动通信技术领域,具体涉及一种在安卓系统中资源免固化的方法、存储介质及设备。
背景技术
随着终端设备及计算机技术的发展,基于Android系统的软件应用也逐渐增多,Google官方提供了一套资源管理的官方版方案,以达到开发者对资源使用进行管理的需要,在此基础上,开发者可根据自身产品需求,定制个性化设计资源呈现给用户。但是由于Android系统中资源是根据英文字母顺序进行排列的,因此,开发者新增的资源,可以插入到官方版资源的序列中去,使得处于插入位置之后的官方版资源的序列号(ID,identification)出现变化,同时,因为资源的变化也影响其他有序资源的改变,从而导致错误的资源调用,导致资源匹配错乱,严重的情况还会导致程序和系统无法正常运行。
对于上述问题,业内实现了资源固化的方案,从而确保资源的匹配和程序及系统的正常运行,但是资源固定方案有以下弊端:
1、因为资源固定值不允许重复,在一个宿主对应多个patch的情况容易引发资源冲突;
2、当需要资源固定的源多个的情况,需要统一固定,成本很高;
3、如果涉及patch兼容多个宿主,涉及相互妥协从而提升接入成本及降低兼容性。
发明内容
针对现有技术的不足,本发明旨在提供一种在安卓系统中资源免固化的方法、存储介质及设备,可以解决资源错乱问题、因为维护成本和接入成本所带来的问题以及多patch的兼容及妥协问题。
为了实现上述目的,本发明采用如下技术方案:
一种在安卓系统中资源免固化的方法,包括三个阶段:
一、编译时,处理java代码中引用宿主的资源,获取R.jar并修改其字节码,移除class中所有的final字段,将class中的内联数值修改,保证插件中引用宿主的资源id全部通过R进行引用;
二、运行时,处理xml代码中引用宿主的资源,通过aapt2得到ap_文件,根据R.txt找到对应目标信息,一并打包进apk;
三、安装时,根据编译生成的配置文件,结合mapRes方法,对patch中的xml、resources.arsc文件进行修改,修改apk的byte数组。
进一步地,阶段一的具体实施过程为:
1.1、编写gradle plugin,在processResourcesTask的doLast中获取R.jar文件,获取java中引用到宿主资源的引用;
1.2、修改R.jar字节码;
1.3、将field中的id为0x7f开头的字段的final修饰符全部移除,以保证patch的class中所有引用宿主资源的目标不被内联成数值;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于新加坡新阅科技有限公司,未经新加坡新阅科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202310086546.2/2.html,转载请声明来源钻瓜专利网。