请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

在多工程下面处理子工程(除app工程之外)时候注解处理器是无法拿到路径参数?

尝试遍历所有的subProject 设置kapt参数也不行,应该是时机不对
project.rootProject.subprojects.eachWithIndex { subProject, int index ->
if (subProject.extensions.findByName(“kapt”) != null) {
subProject.extensions.findByName(“kapt”).arguments {
arg(“ROOT_PROJECT_DIR”, project.rootDir.absolutePath)
}
}
}

正在回答

1回答

可能所选时机中拿到的kapt extension 为空进而导致设置参数失败。可以尝试调整代码执行的时机为所有子工程的配置阶段结束后、执行阶段之前。

1 回复 有任何疑惑可以回复我~
  • 提问者 彩色的沙漠 #1
    project.rootProject.subprojects.eachWithIndex { subProject, int index ->
                //配置阶段结束之后 设置kapt
                subProject.afterEvaluate {
                    if (subProject.extensions.findByName("kapt") != null) {
                        subProject.extensions.findByName("kapt").arguments {
                            arg("ROOT_PROJECT_DIR", project.rootDir.absolutePath)
                        }
                    }
                }
            }
    这样配置之后app工程不起作用,需要给app工程在配置阶段设置kapt才起作用
    回复 有任何疑惑可以回复我~ 2021-03-18 15:59:04
  • 提问者 彩色的沙漠 #2
    非常感谢!
    回复 有任何疑惑可以回复我~ 2021-03-20 19:16:52
  • 提问者 彩色的沙漠 #3
    def cl = { project1 ->
                if (project1.extensions.findByName("kapt") != null) {
                    project1.extensions.findByName("kapt").arguments {
                        arg("ROOT_PROJECT_DIR", project.rootDir.absolutePath)
                    }
                }
            }
            project.rootProject.subprojects.eachWithIndex { subProject, int index ->
                //配置阶段结束之后 设置kapt
                if (subProject.name == "app"){
                    cl(subProject)
                    return
                }
                subProject.afterEvaluate {
                    cl(subProject)
                }
            }
    回复 有任何疑惑可以回复我~ 2021-03-23 10:43:05
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信