gpt4 book ai didi

android - 符号 $CompletionFailure : class file for ActivityDeparturesBinding not found

转载 作者:太空狗 更新时间:2023-10-29 13:44:49 27 4
gpt4 key购买 nike

我在一个单独的 Android 应用程序项目中有一个单独的 Android 库。但是我直接链接库(通过路径或生成的 AAR 直接引用库模块)我得到以下错误:

A problem was found with the configuration of task ':app:kaptDevelopDebugKotlin'.
> Cannot write to file '/home/m0skit0/Repos/repo/app-android/app/build/intermediates/data-binding/develop/debug/bundle-bin' specified for property 'dataBindingArtifactOutputDir' as it is a directory.

e: error: cannot access ActivityDeparturesBinding
class file for com.blablabla.databinding.ActivityDeparturesBinding not found
Consult the following stack trace for details.
com.sun.tools.javac.code.Symbol$CompletionFailure: class file for com.blablabla.databinding.ActivityDeparturesBinding not found

* What went wrong:
Execution failed for task ':app:kaptDevelopDebugKotlin'.

这显示在任务 :app:transformDataBindingWithDataBindingMergeArtifactsForDevelopDebug 之后

但是该类确实存在,具有完整的规范名称。它属于库,并且由 Android 的数据绑定(bind)处理器在两个项目上正确自动生成(没有任何错误)。该库自行正确编译。即使使用 --stacktrace 运行编译,也没有进一步的堆栈跟踪。

我已经尝试将库与编译、实现和 api 链接起来,结果都是一样的。

Gradle 版本是 4.4。


更新:

更新到 Gradle 5 并没有解决问题。重命名 XML 没有解决问题。

我还发现只有当我在我的代码中引用 ActivityDeparturesBinding 类时才会发生错误,即使它被引用的部分实际上从未被调用过。仅导入它而不引用它不会导致错误。


更新 2:

这是使用布局的 Activity :

class DeparturesActivity : BaseVinPlateActivity<DeparturesViewModel, ActivityDeparturesBinding>() {

companion object {
fun getStartIntent(context: Context) = Intent(context, DeparturesActivity::class.java)
}

@Inject
override lateinit var viewModel: DeparturesViewModel

override val layout: Int = R.layout.activity_departures

override fun injectThis(component: ActivityComponent) {
component.inject(this)
}

override fun getToolbarTitleId(): Int = R.string.departures_title

override fun initializeDataBindings(dataBinding: ActivityDeparturesBinding) {
dataBinding.viewmodel = viewModel
}
}

abstract class BaseVinPlateActivity<T: BaseVinPlateViewModel, U: ViewDataBinding> : CompoundsBaseActivity() {

protected abstract var viewModel: T
protected abstract val layout: Int

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == BARCODE_RESULT_CODE_ACTIVITY && resultCode == Activity.RESULT_OK) {
val barcodeResult = data?.getStringExtra(BARCODE_RESULT_ACTIVITY)
viewModel.setBarcodeResult(barcodeResult)
}
}

override fun initializeView() {
super.initializeView()
val dataBinding = inflateDataBinding<U>(layout)
initializeDataBindings(dataBinding)
with (viewModel) {
setBindValidator(Validator(dataBinding))
loadData()
}
}

protected abstract fun initializeDataBindings(dataBinding: U)
}

如果我删除 initializeDataBindings() 函数,错误就消失了。请注意,仅注释函数主体是不够的,我必须删除整个函数。

这闻起来像编译器/工具错误。

最佳答案

我知道已经晚了,但我想说类似的事情发生在我身上,在我的例子中,我有一个使用第三方库的库模块,然后在我的应用程序模块中,我使用 dagger 进行注入(inject)依赖项,我遇到这个问题是因为,我相信 Dagger 找不到这个第三方库的类,因为它没有直接在应用程序的依赖项中实现。所以在我的例子中,得到它排序的是改变我将第三方库添加到我的本地库模块中以便使用 api 的方式。而不是 implementation .

关于android - 符号 $CompletionFailure : class file for ActivityDeparturesBinding not found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56329694/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com