Ошибка сборки с Android Studio 3.0 Canary 4

В настоящее время я нахожусь в процессе разработки приложения Instant, для которого я реструктурировал свое монолитное приложение в функциональные модули. Все работало до 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.

6 ответов

Решение

Следующая процедура работает в качестве обходного пути для этой проблемы:

Выполните следующие команды сборки в командной строке gradle

1) Gradlew чистый

2) gradlew:appModule:assemblyDebug

  • здесь appModule - название модуля приложения для сборки устанавливаемого apk
  • сборка прошла успешно и отладочный apk, сгенерированный в выходной папке, может быть успешно установлен

3) gradlew:instantAppModule:assemblyDebug

  • здесь instantAppModule - название модуля мгновенного приложения.
  • сборка прошла успешно, и приложение apks можно установить и запустить по ссылке

Как только вышеупомянутые сборки командной строки успешны, сборка через Android Studio Canary 4 также прекращает генерировать ошибку сборки.

Я получаю похожую ошибку при включении data-binding для библиотечного модуля. Когда я выключаю его и перемещаю все классы, которые требуют data-binding в app Модуль, это работает. Поэтому, я думаю, есть проблема в том, что DataBinding больше не работает с модулем Library ( Gradle 2.x хорошо с этим).

dataBinding {
    enabled = false 
}

я использую com.android.tools.build:gradle:3.0.0-alpha5 and Android Studio 3.0 Предварительный просмотр Canary5

ОБНОВИТЬ

Хотя оригинальный ответ сработал, я очень хочу включить data-binding на моем модуле библиотеки, где я реализую некоторые базовые классы, используя технику связывания. Я возвращаю их library модуль и обновление kotlin версия до последней 1.1.3-2, Вдруг это тоже работает. Я не уверен, какой из них лучше, но оба способа работают для меня.

ОБНОВЛЕНИЕ 2

я использую com.android.tools.build:gradle:3.0.0-alpha9 и котлин 1.1.3-2 в это время и вдруг проблема вновь появится. Теперь я думаю, что проблема не в Котлине. Мой модуль библиотеки повернулся 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>

Это было проблемой для меня, когда у меня был "базовый" функциональный модуль без каких-либо макетов (все мои фактические макеты находятся в отдельных функциях)

Добавление фиктивного XML-файла макета в базовую функцию (например, как base/src/res/layout/dummy.xml) означало, что отсутствующий каталог был создан и приложение скомпилировано.

(это использует com.android.tools.build:gradle:3.0.0-alpha6)

В файле gradle.properties добавьте следующую строку

android.enableAapt2=false

Последние версии AS3.0 по умолчанию переключены на использование AAPT2. Вы можете отключить AAPT2 в своем файле gradle.propertіes с вышеупомянутой строкой кода и продолжить разработку на AS3 canary 4.

У меня была такая же проблема, похоже на ошибку в Canary 4.

На данный момент, в качестве обходного пути, я опустил версию Android Studio 3.0.0 Canary 3 ( это архив всех выпусков Android Studio), а также уменьшил плагин Android Gradle до 3.0.0-alpha3:

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

Обновлено:

Просто проверьте версию 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'
}
Другие вопросы по тегам