【问题标题】:Build error with Android Studio 3.0 Canary 4Android Studio 3.0 Canary 4 的构建错误
【发布时间】:2017-06-26 06:19:45
【问题描述】:

我目前正在开发一个即时应用程序,为此我已将我的单体应用程序重组为功能模块。 在 Android Studio Canary 3 之前,一切都已启动并运行,但在更新到 Android Studio Canary 4 后,我的项目无法构建并出现以下错误:

A problem was found with the configuration of task ':minimoBase:dataBindingExportBuildInfoDebugAndroidTest'.

> Directory '/Users/nayak.vishal/projectData/minimo_instant_app_project/putica-client-android-
native/minimoBase/build/intermediates/data-binding-info/androidTest/debug' 
specified for property 'xmlOutFolder' does not exist.

【问题讨论】:

  • 你在“build.gradle(applicationName)”中改变了版本吗?

标签: android android-studio gradle android-instant-apps


【解决方案1】:

以下过程可作为解决此问题的方法:

在 gradle 命令行中执行以下构建命令

1) 清理干净

2) gradlew :appModule:assembleDebug

  • 这里的 appModule 是用于构建可安装 apk 的应用模块的名称
  • 构建成功,输出文件夹中生成的调试apk可以安装成功

3) gradlew :instantAppModule:assembleDebug

  • 这里的 instantAppModule 是免安装应用模块的名称
  • 构建成功,可以通过深层链接安装和启动免安装应用 apk

一旦上述命令行构建成功,通过 Android Studio Canary 4 构建也会停止抛出构建错误。

【解决方案2】:

当我为库模块打开 data-binding 时,我遇到了类似的错误。当我关闭它并将所有需要data-binding 的类移动到app 模块时,它就可以工作了。所以我想有一个问题是 DataBinding 不再适用于 Library 模块(Gradle 2.x 很好)。

dataBinding {
    enabled = false 
}

我正在使用com.android.tools.build:gradle:3.0.0-alpha5 和 Android Studio 3.0 Preview Canary5

更新

虽然最初的答案有效,但我真的想在我的库模块上打开data-binding,我在其中使用绑定技术实现了一些基类。我将它们移回library 模块并将kotlin 版本升级到最新版本1.1.3-2。突然间它也起作用了。我不确定哪个更好,但两种方法都适合我。

更新 2

我此时正在使用com.android.tools.build:gradle:3.0.0-alpha9 和kotlin 1.1.3-2,突然问题再次出现。 现在我认为问题不在于 Kotlin。我的库模块变成了dataBiding { enabled=true},但它没有任何布局文件。我试图创建一个由<layout> 标签包裹的假布局文件,它可以工作

 <?xml version="1.0" encoding="utf-8"?>
<layout>
    <View xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"/>
</layout>

【讨论】:

  • 我在 AS 3.0 Canary-6 中遇到了同样的问题。您的解决方案解决了我的问题。感谢更新。实际上,默认情况下,项目中的数据绑定是 true。
【解决方案3】:

在您的 gradle.properties 文件中,添加以下行

android.enableAapt2=false

最新版本的 AS3.0 切换到默认使用 AAPT2。 您可以使用上述代码行在您的 gradle.properіes 文件中禁用 AAPT2,然后继续在 AS3 canary 4 上开发。

【讨论】:

  • 此更改无济于事
【解决方案4】:

当我有一个没有任何布局的“基本”功能模块时,这对我来说是个问题(我所有的实际布局都在单独的功能中)

在基本功能中添加一个虚拟布局 XML 文件(例如 base/src/res/layout/dummy.xml)意味着创建了缺少的目录并编译了应用程序。

(这里使用的是com.android.tools.build:gradle:3.0.0-alpha6

【讨论】:

  • 这正是我遇到的问题。感谢您指出。
  • @pete-harris 是对的。您应该添加至少一个布局,使用“布局”作为根元素 - 视图的数据绑定根元素。因此,如果您没有配置任何数据绑定布局,请尝试创建一个,如下所示:&lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;layout xmlns:android="http://schemas.android.com/apk/res/android"&gt; &lt;data&gt;&lt;/data&gt; &lt;android.support.design.widget.CoordinatorLayout xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"&gt; &lt;/android.support.design.widget.CoordinatorLayout&gt;&lt;/layout&gt;
【解决方案5】:

我也遇到了同样的问题,好像是 Canary 4 中的一个错误。

目前,作为一种解决方法,我降级到了 Android Studio 3.0.0 Canary 3 (This is an archive of all Android Studio releases) 并将 Android Gradle 插件降级到了3.0.0-alpha3

dependencies {
    classpath 'com.android.tools.build:gradle:3.0.0-alpha3'
    ...
}

【讨论】:

    【解决方案6】:

    更新:

    只需在更新后检查 Canary 版本即可。为此,请参见工具栏上方的 Android Studio 版本(File..Edit..View..line),其中末尾的名称如“Canary X”。-> X 是数字,如 3、4、5 等。

    例如假设更新版本 (X) 为 5。 尝试将 build.gradle(applicationName) 中的类路径更改为 3.0.0-alpha5 并再次同步(/Try):

    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.0-alpha5'
    }
    

    表示更新版本(X):-

    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.0-alphaX'
    }
    

    【讨论】:

    • 感谢您的回复。是的,gradle 插件版本已经是 gradle:3.0.0-alpha4 并且 gradle 包装器属性中的 distributionURL 设置为 gradle-4.0-rc-1-all.zip。这是 Android Studio 在更新到 Canay 4 时自动提示的。所以我认为这不是构建错误的原因。
    • 不正确。更改 gradle 版本时我仍然遇到同样的错误
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-20
    • 1970-01-01
    • 2018-04-10
    相关资源
    最近更新 更多