android如何加载外部的资源文件

本文探讨了在Android中如何加载和替换外部资源文件,特别是在插件化和热更新场景下。通过AssetManager的addAssetPath方法加载SD卡上的APK资源,实现了对原有资源的覆盖或新增资源的加载。通过反射技术改变Resources对象,实现在不重启应用的情况下更新界面颜色。文章还提及使用DexClassLoader加载外部dex文件,并提出了构建热更新和插件化框架的可能性,后续将讨论差异包的制作与合并。

最近在研究插件化和热更新的时候对资源文件的加载和替换产生了费解,比如说腾讯的tinker加载资源补丁是如何替换已有的资源文件的,由于它加载的是差异资源包,那肯定是将差异资源和原有的资源进行合并,如果是存在的资源那就去覆盖。

我们先在原有的项目资源文件上设置一个颜色值,之后把项目运行到手机上。

<color name="plugin_color">#00ffff</color>

在这里插入图片描述
之后我们在把这个plugin_color颜色改变成另外一个值;

<color name="plugin_color">#ff00ff</color>

再次打包放到手机的sd路径下。当我们加载完我们的外部资源时显示的是这个颜色界面。
在这里插入图片描述
前期准备工作完成了。

那么如何加载外部资源呢,我们知道资源都是getResources加载的,那我们Resources re = getResources去对这个对象重新赋值就可以了,我们发现Resources这个类的构造函数传了一个AssetManager,资源问价加载器。

@Deprecated
    public Resources(AssetManager assets, DisplayMetrics metrics, Configuration config) {
        this(null);
        mResourcesImpl = new ResourcesImpl(assets, metrics, config, new DisplayAdjustm
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值