Android Studio 2.3 Beta 1 + 支持 25.1.0 = 预览损坏

Android Studio 2.3 Beta 1 + Support 25.1.0 = Preview broken

Android Studio 2.3 Canary 3. 支持库 25.1.0.

布局预览完全损坏。任何包含与支持相关的视图的内容在预览期间似乎都会中断。

在所有情况下,这是堆栈的开头:

Exception Details java.lang.NoSuchFieldError: ViewBackgroundHelper   
at android.support.v7.widget.AppCompatBackgroundHelper.loadFromAttributes(AppCompatBackgroundHelper.java:46)   
at android.support.v7.widget.AppCompatImageView.<init>(AppCompatImageView.java:63)   
at android.support.v7.widget.AppCompatImageView.<init>(AppCompatImageView.java:56)
....

..等等

无论布局如何,我现在都遇到了这个与 ViewBackgroundHelper 相关的问题。布局的类型或其中的视图似乎无关紧要。似乎通过 AppCompat 的任何内容都会在预览中遇到此错误。

以前从未见过这个。之前有 Android Studio 2.3 Canary 2 + 支持库 25.0.1.

似乎不​​可能 永远 升级 Android Studio 或其支持库而不花几个小时在这类东西上,嘿?

感谢任何提示,谢谢-

更新

看来我不是唯一一个。发现这里记录了一个错误,已经有很多人加星标了:

https://code.google.com/p/android/issues/detail?id=230183

更新 2

AS 2.3 Beta 1 仍然存在问题。仍然看不到我的布局。到处都是相同的 java.lang.NoSuchFieldError: ViewBackgroundHelper 错误。

我在跟踪器上提交了问题。其他参与者发现删除一些其他非 android 库依赖项会导致问题消失。基于此,我找到了一个解决方案(从问题线程重新发布):

进一步调查后的补充信息:

Android Studio 2.2.3
构建 #AI-145.3537739,构建于 2016 年 12 月 2 日
JRE: 1.8.0_76-release-b03 amd64
JVM:JetBrains 的 OpenJDK 64 位服务器虚拟机 s.r.o

支持库:25.1.0
构建工具:25.0.2

能够在上述工作室版本(2.2.3 稳定版)上重现后,我开始根据其他人在此线程中提供的信息删除其他库依赖项。删除书法库 (https://github.com/chrisjenx/Calligraphy) 和相关代码后,布局预览又开始正常工作了。

有趣的是,我能够重新添加 Calligraphy 库并且布局预览继续工作。也许这表明 android gradle 插件存在某种缓存问题?

对于遇到此问题的其他人,我建议如下:
1. 找出导致问题的库
2.删除库依赖和相关代码
3. 彻底清理并构建
4. 验证布局预览是否有效
5.重新添加库依赖
6. 彻底清理并构建
7. 验证布局预览是否有效

注意:我怀疑书法导致了问题,因为它依赖于一个名为 "fontPath" 的自定义 xml 属性,以及一些上下文操作。如果您有任何在后台进行视图操作的库,我建议您先删除它们。

我有一个解决方案,问题不是 Android Studio 的版本。

问题是 Gradle 版本回到稳定版本 2.2.3,经过几次测试后它对我有用。这是 gradle beta 版本中的一个错误,已报告给 google。

根据问题跟踪器,截至 2017 年 1 月 10 日:

https://code.google.com/p/android/issues/detail?id=230183

For those of you using the 2.3.0-beta1 Gradle plugin could you please disable the build cache by adding

android.enableBuildCache=false

to your gradle.properties file and let us know if that fixes the issue for you. After adding the line to your gradle.properties, please rebuild the project.

Thanks.

已证明可以解决 一些 用户的问题。

我在接下来的步骤中解决了这个问题

  • 删除<项目>/<模块>/build/build/intermediates/exploded-aar
  • 重建项目
  • 检查exploded-aar
  • 中是否只有一个版本support-library

现在一切正常。

  1. 我今天升级到最新的 Android Studio:2.3 Beta 3
  2. 系统提示我更新到最新的com.android.tools.build:gradle:2.3.0-beta3

重启,失效,重建; 所有内容终于在 6 周内首次在预览窗格中完美呈现

看起来他们已经修好了。 终于.

将您的 AppTheme 样式更改为:

<style name="AppTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar">
</style>