ARouter 打包异常 “Program type already present”

在使用 ARouter 并且是多Module的时候,直接运行可能没有错,在打包的时候会报类似下面的错误:


com.android.tools.r8.errors.CompilationError: Program type already present: com.alibaba.android.arouter.routes.ARouter$$Group$$messageCenter

其实就是后面的包名重复了,这些类文件都是 ARouter 根据配置自动生成的,

分析:目前有两种情况会导致这种报错

1.可能是手误将 A module 引用的路由指向了 B module 比如:

ps:代码是用kotlin写的

   //订单模块
    class OrderCenter{
        companion object {
            const val PATH_ORDER_CONFIRM = "/orderCenter/confirm"
        }
    }

    //消息模块
    class MessageCenter{
        companion object {
            const val PATH_MESSAGE_PUSH = "/messageCenter/push"
            const val PATH_MESSAGE_ORDER = "/messageCenter/order"
        }
    }

OrderDetailActivity 其实是在订单模块下面的,但是这里引用了 “MessageCenter” 下面的路由,这就会造成订单模块下面自动生成的包名也包含 messageCenter 所以就会造成包名重复

@Route(path = RouterPath.MessageCenter.PATH_MESSAGE_ORDER)
class OrderDetailActivity{}

2.自己定义的路由模块名称和源码里面的冲突了比如:

”/arouter/test” arouter不能用,源码中已经用了这个

你可能感兴趣的:(ARouter 打包异常 “Program type already present”)