ARouter+Kotlin 问题汇总
16lz
2021-01-24
1. ARouter+Kotlin无法生成路由文档问题解决
如题,无法生成 build/generated/source/apt/(debug or release)/com/alibaba/android/arouter/docs/arouter-map-of-${moduleName}.json
官方
ARouter README中提到:
// 更新 build.gradle, 添加参数 AROUTER_GENERATE_DOC = enable// 生成的文档路径 : build/generated/source/apt/(debug or release)/com/alibaba/android/arouter/docs/arouter-map-of-${moduleName}.jsonandroid { defaultConfig { ... javaCompileOptions { annotationProcessorOptions { arguments = [AROUTER_MODULE_NAME: project.getName(), AROUTER_GENERATE_DOC: "enable"] } } }}
在Java下是没问提,但使用Kotlin的时候需要改为以下配置
解决方案
apply plugin: 'kotlin-kapt'kapt { arguments { arg("AROUTER_MODULE_NAME", project.getName()) arg("AROUTER_GENERATE_DOC", "enable") }}
2. Error:Execution failed for task ‘:app:compileDebugKotlin’. > Compilation error. See log for more details
产生此问题有多种情况,此处只讨论与ARoute有关的问题。根据提示,添加
--stacktrace --debug
是有些详细log,但和项目没什么直接关系,所以没什么卵用。
产生原因
其实按照ARoute的文档进行操作就没有什么问题的,所以出现问题无非就是自己使用时出现了问题。
解决方案
- 1 . 检查@Autowired 是否使用了private修饰符,若有,去掉private即可
- 2 . 检查@Route(path = “”),这里path里至少需要两级,即例:
path = "/test/activity"
3. @Autowired 获取值是Null
这里只给出个人原因导致Null的解决方案,若是ARouter的bug,请到官方提issue。
例:
# AActivityARouter.getInstance() .build("/activity/b") .withBoolean("bool",true) .withParcelable("parcel",new P()) .navigation()# BActivity@Route(path = "/activity/b")class BActivity: AppCompatActivity(){@Autowired(name = “bool”) @JvmField var mBool: Boolean? = null @Autowired(name = “parcel”) @JvmField var mP: P? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout...)ARouter.getInstance().inject(this@BActivity) }}
- 若
@Autowired
取值为null,请先检查目标中是否有ARouter.getInstance().inject(this)
- 若仅
mP == null
,请检查P.kt
是否有空构造函数 - 若配置无误,但扔存在Null,
Clean Projec
了解一下
以上。
更多相关文章
- Android(安卓)Studio的快捷键-官方文档
- Error:Cause: buildToolsVersion is not specified.
- android:报Activity has leaked IntentReceiver或者re...
- Android(安卓)Studio项目报错:Caused by: java.lang.ClassNotFou
- Android快速开发整理(库、插件、常用网站)
- ADT:v22.6.2-1085508创建android工程自动创建appcompat_v7解决方
- 解决gradle编译报Error:All flavors must now belong to a named
- Android设置theme中的坑
- Android两级嵌套ListView滑动问题的解决