Android知识Android开发Android技术知识

Small插件化实践-踩坑记

2017-02-07  本文已影响122人  冰点k

本文主要记录学习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相同的几率很小,这方面还需要进一步研究测试...)

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

上一篇下一篇

猜你喜欢

热点阅读