写点什么

参考微信模块化通信具体实现,android 开发从入门到精通 pdf 下载

用户头像
Android架构
关注
发布于: 15 小时前

}}


copy() {from rootDir + '/' + parentName + '/src/main/AndroidManifest.xml'into rootDir + '/' + moduleName + '/src/main/'filter { line ->String content = line;content = content.replace("android:label="@string/app_name"", "")if (content.contains("package="")) {content = content.replace("">", ".plugin">")}content}}}


再来看下关于接口暴露的问题,其实接口暴露方案主要还是参考微信只不过中间实现细节是否一样就不可知了。 下面着重介绍下我的细节实现,从微信方案中可以看出是将接口文件从.java 后缀改成.api,然后将.api 后缀的文件拷贝至接口 module 中。通过 gradle 插件来定制依赖配置项 compileApi,实现 module 通过 compileApi 依赖关联接口 module,在解析中将实现 module 中接口文件拷贝至接口 module 并修改后缀名从而通过编译。


Configuration configurationtest = project.configurations.create("compileApi")configurationtest.canBeResolved = true;configurationtest.canBeConsumed = true;configurationtest.setVisible(false)


//当该依赖配置被解析时会执行 configurationtest.allDependencies.all {obj->


moveFile(project, obj.name)project.dependencies.add("compile", project.project(':' + obj.name))}


接下来我们可以考虑如何注册以及初始化接口实现类,所谓的注册也就是如何通过接口找到实现类并隐式实例化。


@AService("com.netease.ad


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


d.Add")public abstract class IAdd extends IService{abstract int add(int a, int b);}

public static <T extends IService> void register(Class<T> clazz) {try {AService aService = clazz.getAnnotation(AService.class);if (aService == null) {return;}String clazzName = aService.value();if (!TextUtils.isEmpty(clazzName)) {T t = (T) Class.forName(clazzName).newInstance();ServiceManager.getInstance().put(clazz.getSimpleName(), t);}} catch (InstantiationException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();} catch (ClassNotFoundException e) {e.printStackTrace();}}
考虑到接口的局限性,我通过注解形式将实现类信息传递给接口。至于具体的初始化环节我就不搬过来了,大家可以参照微信的方式自由发挥。 在注册这个点上还有很多其他方案比如 aop/ioc 等,大家有兴趣的话可以去研究并不难。最后

上述只是我对微信模块化通信环节的实现,从而打通了整个环路。至于项目的模块化改造还得依情况而定,从思维角度来讲要遵循大事化小,如果本身就是个小项目就没必要引入繁琐的模块化架构。模块化不单单只是说说以及架构环节,还涉及如何划分模块边界等细节问题。 最后希望我们分享的一点经验能对大家有些价值。

用户头像

Android架构

关注

还未添加个人签名 2021.10.31 加入

还未添加个人简介

评论

发布
暂无评论
参考微信模块化通信具体实现,android开发从入门到精通pdf下载