我爱编程解决了我的疑惑Arouter系列

Android ARouter 集成 注意点(Kotlin)

2018-06-11  本文已影响237人  半截铅笔

相关配置 及引用版本

#Arouter
arouter_group=com.alibaba
arouter_api_version=1.3.1
arouter_compiler_version=1.1.4
arouter_register_version=1.0.2

        ...
apply plugin: 'com.alibaba.arouter'

buildscript {
         ...
    dependencies {
         ...

        classpath "$kotlin_group:kotlin-gradle-plugin:$kotlin_version"
        classpath "$arouter_group:arouter-register:$arouter_register_version"

         ...
    }
}

...
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 是否有错误

上一篇下一篇

猜你喜欢

热点阅读