Small插件化实践-踩坑记

本文主要记录学习Small插件化过程中遇到的问题,欢迎大家一起讨论学习和指正!

Small插件化实践

1.动态替换资源文件流程

动态替换资源文件的流程,比如app.* 要是想访问lib.* 里面的资源文件并且动态从服务器更新,需要先在项目中依赖它,然后在lib.* 更新完文件后重新编译把so上传到服务器,然后再在app.* 中从服务下载lib.* 的so实现资源文件的动态替换

2.打开插件activity

两种方法:
(1)

Small.openUri("main",MainActivity.this);

(2)
这种方法可以带值过去

Intent intent = Small.getIntentOfUri("main",MainActivity.this);
intent.putExtra("msg","main");
startActivity(intent);

3.获取宿主或插件资源

如动画定义在宿主或插件中,再用

Small.getContext().getResources().getIdentifier(AnimName, "anim", "宿主包名");
context.getResources().getIdentifier(AnimName, "anim", "插件包名");

取到resId,接着就可以正常使用了;
或者通过直接依赖lib.*插件,直接调用插件资源R.drawable.xxx或@drawable/xxx。

4.aar依赖插件

可以把app.*,lib.*等插件新建一个工程,然后通过远程aar依赖的方式,这样不会影响so文件的加载,但是如果把aar放在libs下通过compile(name: 'lib-style', ext: 'aar')这样的方式去加载,插件生成的so文件加载就没有效果,它只会去加载libs下对应的aar。
(又做了进一步测试,这种方法存在Bug,只有当so文件中的资源ID和aar文件中资源ID相同才可以进行替换,而目前small在编译lib插件生成so的同时没有生成aar,所以资源ID相同的几率很小,这方面还需要进一步研究测试...)

后面会持续更新......

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容