Android ARouter 集成 注意点(Kotlin)
2018-06-11 本文已影响237人
半截铅笔
相关配置 及引用版本
- Arouter 版本配置
#Arouter
arouter_group=com.alibaba
arouter_api_version=1.3.1
arouter_compiler_version=1.1.4
arouter_register_version=1.0.2
- 项目Gradle
...
apply plugin: 'com.alibaba.arouter'
buildscript {
...
dependencies {
...
classpath "$kotlin_group:kotlin-gradle-plugin:$kotlin_version"
classpath "$arouter_group:arouter-register:$arouter_register_version"
...
}
}
...
- Module 的 gradle 配置
apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
...
kapt {
arguments {
arg("moduleName", project.getName())
}
}
dependencies {
...
//ARouter
api "$arouter_group:arouter-api:$arouter_api_version"
kapt "$arouter_group:arouter-compiler:$arouter_compiler_version"
...
}
注意点:
1.使用@Autowired 注解时, 必须要在对应的Activity中 调用 ARouter.getInstance().inject(this);
2.Kotlin 代码编写的项目 在 @Autowired 标注的变量上, 还需要添加注解 @JvmField
示例代码
@Route(path = ICommBizConstants.IRouter.PATH_RELATE_INFO)
class RelatedInfoActivity : BaseActivity() {
@JvmField
@Autowired(name = ICommBizConstants.IParams.PARAMS_REQ_ID)
var reqId: String? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
ARouter.getInstance().inject(this);
}
}
排查点:
1.清理本地缓存,然后重新编译(大部分情况都是缓存的问题)
2.App层 是否引入了对应的module
3.检查build->generated->source->apt(kapt)是否生成了对应的映射
4.检查每个gradle 中是否正确配置了 相应库的 引用.
5.检查 moduleName 是否正确配置
5.检查 不同module 中 activity 或者 fragment 的path 或者 group 是否有错误