2017-06-26 5 views
4

Ich bin gerade dabei, ein Instant-App zu entwickeln, für die ich meine monolithische App in Feature-Module neu strukturiert. Alles war und läuft bis Android Studio Kanarienvogel 3, aber nach einem Update auf Android Studio Canary 4 mein Projekt mit dem folgenden Fehler bauen fehlschlägt:Build-Fehler mit Android Studio 3.0 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. 
+0

Haben Sie Version geändert in "build.gradle (application)"? –

Antwort

8

Das folgende Verfahren als Behelfslösung gearbeitet für dieses Problem:

Führen Sie die folgenden Befehle auf der Kommandozeile gradle

1) gradlew sauber

2) gradlew bauen: 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

Sobald die obige Befehlszeile baut erfolgreich sind, baut via Android Studio Canary 4 stoppt auch die Build-Fehler zu werfen.

+0

Wie Verwenden von Gradle Befehlszeile? – Rookie

+0

Diese Links sollten helfen :) https://docs.gradle.org/0.9-rc-2/userguide/tutorial_gradle_command_line.html https://developer.android.com/studio/build/building-cmdline.html – Vishy

1

Aktualisiert:

Nur Scheck die kanarische Version nach dem Update. Dazu siehe Android Studio Version oberhalb der Toolbar (File..Edit..View.line) wo der Name am Ende steht wie "Canary X" .-> X ist Nummer wie 3,4,5, etc.

Zum Beispiel nehme Version aktualisiert (X) 5. versuchen, das Classpath in build.gradle (application) bis 3.0.0-alpha5 und Synchronisierung zu ändern (/) Versuchen wieder:

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

dass aktualisierte Version (X): -

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

Danke für Ihre Antwort. Ja, die Gradle-Plugin-Version ist bereits voreingestellt: 3.0.0-alpha4 und die Distribution-URL in Gradle-Wrapper-Eigenschaften ist auf gradle-4.0-rc-1-all.zip gesetzt. Dies wird von Android Studio beim Update auf Canay 4 automatisch veranlasst. Ich glaube nicht, dass dies der Grund für den Buildfehler ist. – Vishy

+0

falsch. Ich habe immer noch denselben Fehler, wenn ich die Gravel-Version ändere –

1

ich habe das gleiche Problem hatte, scheint wie ein Fehler in Canary 4.

Vorerst als Behelfslösung stufte ich Android Studio 3.0.0 Canary 3 (https://developer.android.com/studio/archive.html) und stufte auch die Android Gradle Plugin 3.0.0-alpha3:

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

Yup! musste das gleiche zur Problemumgehung das Problem – Vishy

3

In Ihrer gradle.properties-Datei die folgende Zeile

android.enableAapt2=false 

Neuere Versionen von AS3.0 zur Verwendung von AAPT2 standardmäßig eingeschaltet. Sie können AAPT2 in Ihrem gradle.propertіes deaktivieren fіle mit oben genannten Codezeile, und weiter auf AS3 Kanarienvogel Entwicklung 4.

+1

diese Änderung hilft nicht –

5

ich Ähnliche Fehler bekam, wenn ich auf data-binding für Bibliotheksmodul einzuschalten. Wenn ich es ausschalte und alle Klassen verschiebe, die zu app Modul benötigen, funktioniert es. Ich denke also, es gibt ein Problem, dass DataBinding nicht mehr im Library-Modul funktioniert (Gradle 2.x in Ordnung).

dataBinding { 
    enabled = false 
} 

ich verwende com.android.tools.build:gradle:3.0.0-alpha5 und Android Studio 3.0 Preview Canary5

UPDATE

Obwohl die ursprüngliche Antwort gearbeitet, drehe ich möchte wirklich auf data-binding auf meinem Bibliotheksmodul, wo ich einige Basisklassen implementieren mit Bindetechnik. Ich verschiebe sie zurück zu library Modul und aktualisiere Version auf die neueste 1.1.3-2. Plötzlich klappt es auch. Ich bin mir nicht sicher, welches ist das bessere, aber beide Wege arbeiten für mich.

UPDATE 2

I com.android.tools.build:gradle:3.0.0-alpha9 und Kotlin bin mit 1.1.3-2 zu diesem Zeitpunkt und plötzlich das Problem wieder erscheinen. Jetzt denke ich, das Problem kommt nicht von Kotlin. Mein Bibliotheksmodul wurde dataBiding { enabled=true}, aber es hat keine Layout-Datei. Ich habe versucht, eine gefälschte Layout-Datei von <layout> Tag eingewickelt zu erstellen und es funktioniert

<?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> 
+0

Ich war das gleiche Problem in AS 3.0 Canary-6. Deine Lösung hat mein Problem gelöst. Danke für das Update. Tatsächlich war die Datenbindung standardmäßig im Projekt gültig. – Custadian

+0

Der Wechsel zu 1.1.3-2 funktioniert für mich. Tks –

3

Das ist für mich ein Problem war, als ich ohne Layout (alle meine tatsächlichen Layouts sind in separaten Funktionen), um ein „Basis“ Feature-Modul hatte

Durch das Hinzufügen einer Dummy-Layout-XML-Datei in der Basisfunktion (z. B. base/src/res/layout/dummy.xml) wurde das fehlende Verzeichnis erstellt und die App kompiliert.

(dies wird mit com.android.tools.build:gradle:3.0.0-alpha6)

+1

Das war das genaue Problem, das ich hatte. Danke für das Aufzeigen. – tasomaniac

+0

@ Pete-Harris ist richtig. Sie sollten mindestens ein Layout hinzufügen, das als Root-Element "layout" - das Datenbindungsstammelement für Ansichten - verwendet. Wenn Sie also kein Layout für die Datenbindung konfiguriert haben, versuchen Sie, eines zu erstellen: ' ' – marciowb

Verwandte Themen