Android Studio 3.0 Canary 4 构建错误

Build error with Android Studio 3.0 Canary 4

我目前正在开发一个即时应用程序,为此我已将我的整体应用程序重组为功能模块。 一切正常,运行 直到 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.

更新:

更新后检查Canary版本即可。为此,请参阅工具栏正上方的 Android Studio 版本(文件..编辑..视图..行),其中末尾的名称如 "Canary X".-> X 是数字,如 3、4、5 等.

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

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

表示更新版本(X):-

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

我遇到了同样的问题,似乎是 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'
    ...
}

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

在gradle命令行

上执行以下构建命令

1) gradle干净

2) gradlew:appModule:assembleDebug

  • here appModule is the name of the app module for building the installable apk
  • the build is successful and the debug apk generated in the output folder can be installed successfully

3) gradlew :instantAppModule:assembleDebug

  • here instantAppModule is the name of the instant app module
  • the build is successful and the instant app apks can be installed and launched via deep link

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

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

android.enableAapt2=false

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

当我为库模块打开 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>

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

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

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