Build error with Android Studio 3.0 Canary 4

2019-05-07 16:20发布

I am currently in the process of developing an Instant app, for which I have restructured my monolithic app into feature modules. Everything was up and running till Android Studio canary 3, but after an update to Android Studio Canary 4 my project fails to build with the following error:

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.

6条回答
对你真心纯属浪费
2楼-- · 2019-05-07 16:50

This was an issue for me when I had a "base" feature module without any layouts (all my actual layouts are in separate features)

Adding a dummy layout XML file in the base feature (e.g. as base/src/res/layout/dummy.xml) meant the missing directory was created and the app compiled.

(this is using com.android.tools.build:gradle:3.0.0-alpha6)

查看更多
乱世女痞
3楼-- · 2019-05-07 16:50

I've had the same problem, seems like a bug in Canary 4.

For now, as a workaround, I downgraded to Android Studio 3.0.0 Canary 3 (This is an archive of all Android Studio releases) and also downgraded the Android Gradle plugin to 3.0.0-alpha3:

dependencies {
    classpath 'com.android.tools.build:gradle:3.0.0-alpha3'
    ...
}
查看更多
家丑人穷心不美
4楼-- · 2019-05-07 17:07

I got similar error when I turn on data-binding for library module. When I turn it off and move all classes that require data-binding to app module, it works. So I guess there is a problem that DataBinding doesn't work on Library module any more ( Gradle 2.x fine with this).

dataBinding {
    enabled = false 
}

I am using com.android.tools.build:gradle:3.0.0-alpha5 and Android Studio 3.0 Preview Canary5

UPDATE

Although the original answer worked, I really want to turn on data-binding on my library module, where I implement some base classes using binding technique. I move them back to library module and upgrade kotlin version to the latest one 1.1.3-2. Suddenly it works also. I am not sure which one is the better but both ways work for me.

UPDATE 2

I am using com.android.tools.build:gradle:3.0.0-alpha9 and kotlin 1.1.3-2 at this time and suddenly the problem re-appear. Now I think the problem doesn't come from Kotlin. My library module turned dataBiding { enabled=true}, but it doesn't have any layout file. I tried to create a fake layout file wrapped by <layout> tag and it works

 <?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>
查看更多
We Are One
5楼-- · 2019-05-07 17:07

Updated:

Just check the Canary version after update. For that see Android Studio version just above the toolbar (File..Edit..View..line) where name at end like "Canary X".-> X is number like 3,4,5,etc.

For example suppose updated version(X) is 5. Try to change that classpath in build.gradle(applicationName) to 3.0.0-alpha5 and sync(/Try) again:

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

Means that updated version(X):-

dependencies {
    classpath 'com.android.tools.build:gradle:3.0.0-alphaX'
}
查看更多
爱情/是我丢掉的垃圾
6楼-- · 2019-05-07 17:09

The following procedure worked as a workaround for this issue:

Execute the following build commands on the gradle command line

1) gradlew clean

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

Once the above command line builds are successful, building via Android Studio Canary 4 also stops throwing the build error.

查看更多
Summer. ? 凉城
7楼-- · 2019-05-07 17:14

In your gradle.properties file , add the following line

android.enableAapt2=false

Recent versions of AS3.0 switched to using AAPT2 by default. You can disable AAPT2 in your gradle.propertіes fіle with above mentioned line of code, and continue developing on AS3 canary 4.

查看更多
登录 后发表回答