Ошибка сборки с 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'
}