- 从组件化的一无所知,到单独负责一个模块实现组件化,自己成长又要开始,祝自己收获多多,一路出坑
case 1. 先建一个组件,发现自己的图标跟别人的不一样
右下角是圆点的代表的是组件,可单独编译运行
右下角是柱状图的代表是library库
参考# Android组件化架构 —— 基础(一) - 组件化与集成化
case 2. Compiler An exception is encountered, [These no module name, at ‘build.
解决: 在base module 和在 other module中都要添加
android {
defaultConfig {
javaCompileOptions {
annotationProcessorOptions {
arguments = [AROUTER_MODULE_NAME: project.getName()]
}
}
}
}
dependencies {
api 'com.alibaba:arouter-api:1.5.2'
kapt 'com.alibaba:arouter-compiler:1.5.2'
}
参考: kotlin/java混合开发接入ARouter遇到的问题Compiler An exception is encountered
case 3. ARouter there's no route matched解决方法
项目app模块可以调整登陆组件模块,但是组件模块不能跳转app模块,toast提示ARouter there's no route matched
我是在app模块的一个kotlin文件上添加的Route注解,组件模块跳转不过去,那么我就测一下app模块自己跳自己的页面吗?发现也不行。我想是不是因为是kotlin页面所以不能正常跳转啊,所以我就找了一个java页面写了一个路由试一下,发现可以。然后我在登陆模块去跳app模块发现也可以。
原来是Java页面可以跳转,kotlin页面不能跳转,真是一个坑,下一步就想着怎么样才能跳转kotlin页面吧
case 4
如果app工程的组件是project依赖,app调用组件的代码是可以直接调用的,跟调用app功能中的逻辑是一样的,组件调用app工程的页面是需要Arouter的,组件间的跳转也是需要Arouter的。
case 5
组件化的时候 尽量把引用依赖放在自己的module内,
本层要用的:
implementation
上层要用的:
api
当然依赖的方式很多,最常见的就是这两种
case 6 Android接入微信SDK之一:发起微信授权登录
重要的事情首先说!
包名、应用签名、app id 三者都必须和在腾讯上申请的一致!!!否则将不能成功。
包名:就是在腾讯上申请的包名
case 7 Arouter子模块调用主模块
1 子模块中定义一个与主模块通信的接口 ISkill继承自IProvide
public interface ISkill extends IProvider {
public void eat();
}
2 主模块定义一个ISkill实现类ISkillImpl,注意加上注解!
@Route(path = "/app/ISkillImpl")
public class ISkillImpl implements ISkill {
@Override
public void eat() {
Log.i("TAG", "大王叫我来巡山!");
}
@Override
public void init(Context context) {
}
}
3 子模块通过ARouter获取这个ISkillImpl的实例化对象
ISkill impl=ARouter.getInstance().build("/app/ISkillImpl").navigation();
impl.eat();
参考:# 利用ARouter实现组件间通信,解决子模块调用主模块问题(示例代码)
case 8 新建module后面的位置显示跟别的不一样
解决:新建module后,android主工程下的.gradle和.idea删除后,重新编译即可