Alles lässt sich gut kompilieren, aber AS erkennt nicht alle Quellordner. Nur Ordner darunter main und debug sind als Quelle markiert, Ordner darunter preview und release werden als normale Ordner angezeigt. Tatsächlich findet in diesen Ordnern keine Fehlerprüfung statt
Ich habe die .iml-Datei überprüft und sourceFolder-Tags wurden nicht hinzugefügt.
Wenn ich die Projekt-IML-Datei manuell bearbeite und die Zeilen hinzufüge:
… bis ich mit meiner Gradle-Datei synchronisiere – wodurch die obigen Zeilen entfernt werden.
Ist das ein Fehler im Gradle-Plugin oder mache ich etwas falsch?
Ich hoffe, Sie haben Verständnis dafür, dass Sie die *.iml-Datei niemals bearbeiten sollten, da sie von Gradle generiert wird. Wird das Projekt korrekt über die Befehlszeile erstellt? Andernfalls schlägt der Import möglicherweise fehl und das Projektmodell wird nicht aktualisiert. Ich bin mir übrigens nicht sicher, ob Sie die ‘initWith’-Zeile wirklich brauchen.
– botteaap
27. Februar 2014 um 12:49 Uhr
Ich habe gerade die IML-Datei bearbeitet, um zu sehen, ob dies der Grund ist. Meine Schlussfolgerung ist also, dass es nicht korrekt generiert wurde.
– imbryk
27. Februar 2014 um 13:13 Uhr
Das Projekt wird sowohl von der Befehlszeile als auch von Studio kompiliert – es zeigt die Ordner nur als sourceFolders an – was die Arbeit tatsächlich sehr schwierig macht
– imbryk
27. Februar 2014 um 13:21 Uhr
OK, fair genug, werden die Build-Typen in der Liste der Build-Varianten angezeigt? Ich denke tatsächlich, dass die Antwort von Ladios unten das ist, wonach Sie suchen, nur ein Build-Typ wird in der IDE aktiv sein.
– botteaap
27. Februar 2014 um 15:20 Uhr
Jeder, der nach einer Demo für Android Studio Flavours sucht
– Nitesh Tiwari
19. Dezember 2015 um 7:20 Uhr
Sie müssen es in der Liste der Build-Varianten umschalten, dann holt sich AS die entsprechenden Source-Sets.
Trotzdem hoffe ich, dass AS in Zukunft Quellen für verschiedene Varianten sehen kann – es ist ein bisschen ärgerlich, dass ich manuell wechseln muss, wenn ich eine kleine Änderung in einer anderen Variante vornehmen muss
– imbryk
27. Februar 2014 um 19:22 Uhr
Stimmt, jede Build-Variante sollte erkannt und sofort als solche angezeigt werden, das ist sehr verwirrend!
– Schwarzlicht
14. November 2014 um 8:18 Uhr
Es hat bei mir auch nach all dem nicht funktioniert. Ich habe Probleme beim Importieren von Klassen in das gemeinsame src-Paket, das ich in 2 benutzerdefinierte Varianten einschließe. Projekt wird erfolgreich kompiliert, nur im Android Studio-Editor sehe ich Fehler aufgrund von Importproblemen.
– Himanshu Virmani
28. April 2015 um 12:28 Uhr
@Ladios Jonquil. Gott segne dich. Und ich bin nicht religiös, also bedeutet es mehr
– Nativ
24. August 2016 um 12:16 Uhr
Sababado
Versuchen Sie zunächst, das Projekt erneut zu importieren. Löschen Sie alle Ihre Build-Verzeichnisse, .iml Dateien und die .idea Mappe. Importieren Sie dann das Projekt.
Wenn das nicht funktioniert, können Sie dies versuchen, um es zu “erzwingen”. Sehen Sie sich diese Antwort von Bernd Bergler an.Beachten Sie, dass dies ein Hack ist und idealerweise nicht notwendig ist
Hier ist eine leicht modifizierte Version seines Codes.
task addPreview {
def src = ['src/preview/java']
def file = file("app.iml")
doLast {
try {
def parsedXml = (new XmlParser()).parse(file)
def node = parsedXml.component[1].content[0]
src.each {
def path="file://$MODULE_DIR$/" + "${it}"
def set = node.find { it.@url == path }
if (set == null) {
new Node(node, 'sourceFolder', ['url': 'file://$MODULE_DIR$/' + "${it}", 'isTestSource': "false"])
def writer = new StringWriter()
new XmlNodePrinter(new PrintWriter(writer)).print(parsedXml)
file.text = writer.toString()
}
}
} catch (FileNotFoundException e) {
// nop, iml not found
}
}
}
// always do the addPreview on prebuild
gradle.projectsEvaluated {
preBuild.dependsOn(addPreview)
}
Lassen Sie das einfach in Ihrem fallen build.gradle Datei außerhalb der android Sektion. Beschreibung aus dieser Quelle:
Android Studio generiert automatisch .iml-Projektdateien aus Gradle-Build-Dateien. Diese Aufgabe bearbeitet die Android Studio-Projektdatei app.iml und fügt das Testverzeichnis hinzu. Die Änderungen gehen verloren, wenn Android Studio die Gradle-Dateien erneut scannt, aber direkt danach führt es einen Build aus und die Aufgabe ist damit verbunden, also ist alles gut. Diese Version hat ein paar Optimierungen, wie z. B. das Hinzufügen der neuen Aufgabe in den normalen Build-Zyklus etwas anders und das Fehlen der .iml-Datei.
Das hat bei mir bis zu einem gewissen Grad funktioniert: Die IDE erkennt es jetzt als src-Baum, will es aber nicht mit anderen src-Bäumen verknüpfen.
… was im Grunde darauf hinausläuft, die *.iml-Datei zu hacken, was ein grober Hack ist.
– botteaap
27. Februar 2014 um 15:18 Uhr
Ich widerspreche dir nicht.
– Sababado
27. Februar 2014 um 15:20 Uhr
Großartig 🙂 Jetzt lasst uns die Daumen drücken, dass dies nicht akzeptiert oder positiv bewertet wird.
– botteaap
27. Februar 2014 um 15:21 Uhr
Nun, ich will nicht streiten, aber es ist eine Lösung für ein Problem, das nicht wirklich existiert. In AS wählen Sie die Quellordner basierend auf dem Build-Typ aus. Unterschiedlicher Build-Typ / Flavor bedeutet effektiv unterschiedlichen Code. Es macht also keinen Sinn, andere Ordner als den aktiven Build-Typ zum IDE-Klassenpfad hinzuzufügen. Wenn Sie dem Erstellungspfad wirklich benutzerdefinierten Code hinzufügen müssen, führt der „richtige“ Weg über die Erweiterungspunkte, die das Android-Gradle-Plug-in bereitstellt.
– botteaap
27. Februar 2014 um 19:04 Uhr
Je mehr ich diese Frage sehe, desto mehr glaube ich, dass ich diese Antwort schnell gepostet habe. Es löst vorerst ein sehr spezifisches Problem, und diese Frage unterscheidet sich geringfügig von dem, was ich beantworten wollte.
– Sababado
3. März 2014 um 15:09 Uhr
Nur in meinem Fall Datei -> Caches ungültig machen / Neustart haben mir geholfen, also wenn die oben genannten Lösungen für Sie nicht funktionieren – versuchen Sie dies.
Fügen Sie dies der build.gradle-Datei Ihres Moduls hinzu:
Ich hoffe, Sie haben Verständnis dafür, dass Sie die *.iml-Datei niemals bearbeiten sollten, da sie von Gradle generiert wird. Wird das Projekt korrekt über die Befehlszeile erstellt? Andernfalls schlägt der Import möglicherweise fehl und das Projektmodell wird nicht aktualisiert. Ich bin mir übrigens nicht sicher, ob Sie die ‘initWith’-Zeile wirklich brauchen.
– botteaap
27. Februar 2014 um 12:49 Uhr
Ich habe gerade die IML-Datei bearbeitet, um zu sehen, ob dies der Grund ist. Meine Schlussfolgerung ist also, dass es nicht korrekt generiert wurde.
– imbryk
27. Februar 2014 um 13:13 Uhr
Das Projekt wird sowohl von der Befehlszeile als auch von Studio kompiliert – es zeigt die Ordner nur als sourceFolders an – was die Arbeit tatsächlich sehr schwierig macht
– imbryk
27. Februar 2014 um 13:21 Uhr
OK, fair genug, werden die Build-Typen in der Liste der Build-Varianten angezeigt? Ich denke tatsächlich, dass die Antwort von Ladios unten das ist, wonach Sie suchen, nur ein Build-Typ wird in der IDE aktiv sein.
– botteaap
27. Februar 2014 um 15:20 Uhr
Jeder, der nach einer Demo für Android Studio Flavours sucht
– Nitesh Tiwari
19. Dezember 2015 um 7:20 Uhr