Build error with Android Studio 3.0 Canary 4

雨燕双飞 提交于 2019-12-05 18:09:04

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.

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>

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.

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)

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'
}
milanbarta

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'
    ...
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!