Android开发 利用AppJoint解决跨模块调用主工程类中的方法
参考博客:https://juejin.im/post/5bcc95abe51d457ab729be8d
参考AppJoint 的 Github 主页:https://github.com/PrototypeZ/AppJoint
为了找这样的方法花了一两天的功夫,本来想找现成的直接用的,但是没有,最后就自己花心思研究了一下Github上的AppJoint,因为它里面用kotlin语言写了几个类,刚开始看到这个就跑了,因为感觉语言不对,看了也没用,最后实在没办法就认真看了一下,也写了个Demo测试了,转成我熟悉的Java类弄成功了,写此博客也是为了记录一下。
问题背景
在做项目的时候,公司有需求将其他模块的文字用语音读出来,但是语音模块集成在主工程里了,调用不到,我又不知道再怎么将语音模块拆分成单独的library模块,只好去找能调用主工程中方法的方法。
有如下模块:
app 模块是主工程模块, 而 module1 模块是 library 模块。如果 module1 模块想要调用 app 模块的功能,那么肯定需要存在一个接口,这个接口两个模块要都能访问到。所以这个接口存在的位置就只能是 app 模块和 module1 模块都依赖的公共模块。假设 router 为公共模块
配置AppJoint环境
- 在项目根目录的 build.gradle 文件中添加 AppJoint 插件依赖:
buildscript { ... dependencies { ... classpath 'io.github.prototypez:app-joint:1.6.1' } }
- 在 router 模块添加 AppJoint 依赖,然后在 App 模块和 module1 模块中引入这个 router 模块:
dependencies { ... api "io.github.prototypez:app-joint-core:1.6.1" }
具体操作为第一步选中对应模块按快捷键 F4 如图:
第三步中选择 Module dependency 添加 router 模块后点 OK 。
- 在主 app 模块应用 AppJoint插件:
apply plugin: 'com.android.application' apply plugin: 'app-joint'
问题解决
在公共模块 router 中创建一个接口:里面只写了一个方法(为了测试)
然后在 App 模块中写一个类去继承这个接口实现接口中的方法,这时候可以在方法中获取到其他类中的方法:
这是 MainActivity 中代码:
最后,我们可以在其他任何模块获得 AppService 接口的实例,调用里面的所有方法了:
AppService appService = AppJoint.service(AppService.class);
如 module1 模块中的调用:
就这样就是一个简单的演示了,更多的测试我也没继续研究,写得不好别喷 ~~
- 利用java反射解决 Android系统方法不能调用的情况
- Android开发之APP安装后在桌面上不显示应用图标的解决方法
- android开发,eclipse工程图标上有个红色感叹号原因和解决方法
- 【Android开发经验】利用反射机制,获取类的字段、方法、并实现简单调用
- 最近开发android app时遇到问题和解决方法
- Android遇到的各种问题(一)——开发中Theme.AppCompat.Light的解决方法
- Android开发中使用Eclipse创建工程后提示The project cannot be built until build path errors are resolved问题的解决方法
- android开发 app闪退后fragment重叠bug解决方法,推荐使用第二种方法,完美解决问题
- Android开发中调用系统相册上传图片到服务器OPPO等部分手机上出现短暂的显示桌面问题的解决方法
- Android开发:Android导入一个工程时提示 Invalid project description的解决方法
- [置顶] android开发 app闪退后fragment重叠bug解决方法,推荐使用第二种方法,完美解决问题
- Android App调用SDK 登录第一次总是失败的解决方法
- Android开发 activity里面的WebView加载js调用windows.location.reload()会弹出浏览器的解决方法
- C#调用C++接口提示找不到指定的模块解决方法,本机正常
- 解决 eclipse开发的android工程在linux上编译不过的@Override问题
- 导入工程的“The import android cannot be resolved”错误解决方法
- Eclipse搭建Android开发环境之ADT安装常见错误及解决方法
- android-insmod驱动模块出错问题解决方法
- Android开发:用eLocity平板机做真机调试出现的问题和解决方法
- 关于android开发时,eclipse的函数自动提示功能很卡的问题解决方法