相關(guān)配置 及引用版本
- Arouter 版本配置
#Arouter
arouter_group=com.alibaba
arouter_api_version=1.3.1
arouter_compiler_version=1.1.4
arouter_register_version=1.0.2
- 項(xiàng)目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"
...
}
注意點(diǎn):
1.使用@Autowired 注解時(shí), 必須要在對(duì)應(yīng)的Activity中 調(diào)用 ARouter.getInstance().inject(this);
2.Kotlin 代碼編寫的項(xiàng)目 在 @Autowired 標(biāo)注的變量上, 還需要添加注解 @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);
}
}
排查點(diǎn):
1.清理本地緩存,然后重新編譯(大部分情況都是緩存的問題)
2.App層 是否引入了對(duì)應(yīng)的module
3.檢查build->generated->source->apt(kapt)是否生成了對(duì)應(yīng)的映射
4.檢查每個(gè)gradle 中是否正確配置了 相應(yīng)庫的 引用.
5.檢查 moduleName 是否正確配置
6.檢查 不同module 中 activity 或者 fragment 的path 或者 group 是否有錯(cuò)誤
7.檢查使用 @Autowired標(biāo)示的變量,是否是在 ARouter.getInstance().inject(this); 之前調(diào)用的(Activity 封裝過的 特別要注意)