Android Motionlayout:Android资源链接失败

14

在将代码重构为motionlayout 2.0.0-beta1后,我不断遇到构建错误(我知道这不是最新版本——beta2会产生相同的错误)。

以下是堆栈跟踪信息:

AAPT: /Users/TBS/StudioProjects/ExampleApp/app/build/intermediates/incremental/mergeDebugResources/merged.dir/values/values.xml:6514: error: resource attr/flow_horizontalSeparator (aka com.example:attr/flow_horizontalSeparator) not found.
/Users/TBS/StudioProjects/ExampleApp/app/build/intermediates/incremental/mergeDebugResources/merged.dir/values/values.xml:6514: error: resource attr/flow_verticalSeparator (aka com.example:attr/flow_verticalSeparator) not found.
/Users/TBS/StudioProjects/ExampleApp/app/build/intermediates/incremental/mergeDebugResources/merged.dir/values/values.xml:6515: error: resource attr/flow_horizontalSeparator (aka com.example:attr/flow_horizontalSeparator) not found.
/Users/TBS/StudioProjects/ExampleApp/app/build/intermediates/incremental/mergeDebugResources/merged.dir/values/values.xml:6515: error: resource attr/flow_verticalSeparator (aka com.example:attr/flow_verticalSeparator) not found.
/Users/TBS/StudioProjects/ExampleApp/app/build/intermediates/incremental/mergeDebugResources/merged.dir/values/values.xml:6517: error: resource attr/flow_horizontalSeparator (aka com.example:attr/flow_horizontalSeparator) not found.
/Users/TBS/StudioProjects/ExampleApp/app/build/intermediates/incremental/mergeDebugResources/merged.dir/values/values.xml:6517: error: resource attr/flow_verticalSeparator (aka com.example:attr/flow_verticalSeparator) not found.
/Users/TBS/StudioProjects/ExampleApp/app/build/intermediates/incremental/mergeDebugResources/merged.dir/values/values.xml:6517: error: resource attr/motionProgress (aka com.example:attr/motionProgress) not found.
/Users/TBS/StudioProjects/ExampleApp/app/build/intermediates/incremental/mergeDebugResources/merged.dir/values/values.xml:6860: error: resource attr/motionProgress (aka com.example:attr/motionProgress) not found.
/Users/TBS/StudioProjects/ExampleApp/app/build/intermediates/incremental/mergeDebugResources/merged.dir/values/values.xml:6861: error: resource attr/motionProgress (aka com.example:attr/motionProgress) not found.
/Users/TBS/StudioProjects/ExampleApp/app/build/intermediates/incremental/mergeDebugResources/merged.dir/values/values.xml:6876: error: resource attr/motionProgress (aka com.example:attr/motionProgress) not found.
/Users/TBS/StudioProjects/ExampleApp/app/build/intermediates/incremental/mergeDebugResources/merged.dir/values/values.xml:6877: error: resource attr/motionProgress (aka com.example:attr/motionProgress) not found.
/Users/TBS/StudioProjects/ExampleApp/app/build/intermediates/incremental/mergeDebugResources/merged.dir/values/values.xml:6877: error: resource attr/waveDecay (aka com.example:attr/waveDecay) not found.
/Users/TBS/StudioProjects/ExampleApp/app/build/intermediates/incremental/mergeDebugResources/merged.dir/values/values.xml:7288: error: resource attr/motionPathRotate (aka com.example:attr/motionPathRotate) not found.
/Users/TBS/StudioProjects/ExampleApp/app/build/intermediates/incremental/mergeDebugResources/merged.dir/values/values.xml:7290: error: resource attr/motionProgress (aka com.example:attr/motionProgress) not found.
/Users/TBS/StudioProjects/ExampleApp/app/build/intermediates/incremental/mergeDebugResources/merged.dir/values/values.xml:7549: error: resource attr/motionProgress (aka com.example:attr/motionProgress) not found.
/Users/TBS/StudioProjects/ExampleApp/app/build/intermediates/incremental/mergeDebugResources/merged.dir/values/values.xml:8270: error: resource attr/duration (aka com.example:attr/duration) not found.
error: failed linking references.

没有迹象表明哪个文件导致了错误,据我所知我的项目中没有使用这些属性。

5个回答

38
这个问题与Android Studio 3.6和ConstraintLayout 2.0.0-beta3之前的版本有关。我已经在这里报告了这个问题。该问题在ConstraintLayout 2.0.0-beta3中得到解决。
在Android Studio 3.5中不会出现此错误。
为了使其在AS 3.6 beta中正常工作,请升级到ConstraintLayout 2.0.0-beta3或更高版本。

1
我们必须降级吗? - IgorGanapolsky
1
@IgorGanapolsky 不,有一个解决方法。请看我编辑后的回答。 - Bohsen
3
您现在可以更新到约束布局(constraint layout)beta3版本,该版本修复了此问题。 - Laimiux
@Laimiux 如何升级ContraintLayout?我是Android的新手,正在使用Studio Canary 4。这是否意味着Android Github页面上的Motion示例已经过时了?https://github.com/android/animation-samples/tree/master/Motion - Unknown123
2
我刚学会了。文件 > 项目结构 > 依赖项 > 所有模块 > 添加依赖项(加号按钮)> 库依赖项 > 在第1步中搜索“androidx.constraintlayout”> 选择最新版本(目前为2.0.0-beta4)> 确定 > 确定 完成。它有一个信息提示,“Gradle将库版本从2.0.0-beta2升级到2.0.0-beta4”。现在你可以构建并运行它。 - Unknown123
2
实现 "androidx.constraintlayout:constraintlayout:2.0.0-beta4" 升级到这个约束布局的beta版本对我很有效。 - kalya

4

如果升级ConstraintLayout后仍无法解决问题,尝试在attrs.xml文件中的attr声明中添加format属性。

<resources>
    <attr name="yourAttrName" format="string" />
</resources>

选择适当的格式来定义您的属性。


2
升级Android Studio 3.6和Gradle插件到最新版本后遇到了这个问题。添加格式解决了这个问题。 - Bek

2

升级到constraintlayout:2.0.0-beta4或更高版本可以解决这个问题。这个问题发生在你将Android Studio升级到3.6之后。


1

我把gradle版本升级到com.android.tools.build:gradle:3.6.0,然后遇到了这些问题,只需将gradle版本降级到com.android.tools.build:gradle:3.5.3即可解决问题。


0

你需要做两件事:

  1. 更新你的Android Studio。

  2. 添加最新依赖实现

    'androidx.constraintlayout:constraintlayout:2.0.0-rc1'


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接