1 Star 0 Fork 0

DonaldDu / InjectActivityResource

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

InjectActivityResource

研究Qigsaw独立打包,开始发现可以在ActivityLifecycleCallbacks.onActivityPreCreated中注入Resources,后来发现只有Android10+才行,以前的没有,IDE没提示所以一直没发现。

不想在编译期间织入代码,想要做到独立打包,所以想找个兼容所有版本的方法。 如果定义一个基类并在其中重写 getResources 方法是最简单且最高效的办法。但是引用三方库时,没法解决了。 后来想到一个办法:绝大部分的三方库的基类都是AppCompatActivity,如果在公认的基类中增加代码来实现资源注入,那就太方便了。

研究发现这个办法是确实可行的,于是就写代码了。 最后原理是这样的:

绝大部分的项目都引用了appcompat,现在把appcompat库中的AppCompatActivity类通过ASM修改增加一个注入资源的方法。然后把修改后的库打包为 appcompat.qb ,其它保持不变。再把库发布到本地或公司仓库。最后在项目中替换为新的依赖。

    implementation 'androidx.appcompat:appcompat:1.2.0'//大部分的项目用这个
    implementation 'androidx.appcompat:appcompat.qb:1.2.0'//替换为这个

更多内容请点击查看

空文件

简介

暂无描述 展开 收起
Android 等 2 种语言
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Android
1
https://gitee.com/DonaldDu/InjectActivityResource.git
git@gitee.com:DonaldDu/InjectActivityResource.git
DonaldDu
InjectActivityResource
InjectActivityResource
master

搜索帮助