Small插件化实践-踩坑记

作者: 冰点k | 来源:发表于2017-02-07 18:01 被阅读122次

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

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

    相关文章

      网友评论

        本文标题:Small插件化实践-踩坑记

        本文链接:https://www.haomeiwen.com/subject/bhsmittx.html